у меня получилось. Положим я настроил dma на передачу mem to perif.
у меня массив 16битовых значений цвета. 16битный порт, в который надо писать по 8 бит за раз в PD7:0
оно вообще реализуемо?
то есть счейчас без дма и таймеров я пишу так:
#define write_bus_8(bus) GPIO_BSRR(DISP_PORT) = (bus) | 0x00FF0000; pulse_low(WR_PORT, WR); Магия но работает )
А как в дма ему такое объяснить? брать по байту за раз и писать в ODR?
а то может вообще зря мучаюсь и 16-22 фпс мой предел без fsmc?)
Ты можешь поставить размер транзакции 8 бит и писать в младший байт ODR
но я ж не укажу дма пиши в младший байт? или укажу?
В DST настройке DMA можешь указать размер транзакции 1 байт и сделать буфер кольцевым. Тогда писаться будет один байт за транзакцию по выделенному адресу.
DMA позволит разгрузить ядро под другие задачи. Скорость при правильной настройке железа будет соизмеримой с получаемой при использовании FSMC.
да я это понимаю. у lvgl 2 буфера. пока я 1 в экран пишу второй будет заполнятьс новыми данными. на то и был расчет
Обсуждают сегодня