- назначаем src некий блок в памяти (RAM/flash), с инкрементом.
- dst -> GPIOx_BSRR.
Далее возможны варианты...
1) Вообще заявить это MEM2MEM. Идея в том что DMA влупит на полной скорости, без эвентов. Результат? Блок в памяти будет описанием как ворочать GPIO с почтенной скоростью без участия процессора. Теоретически. Caveat: не уверен что GPIO успеет отработать тайминги когда DMA в регистр постоянно новые данные толкает - и не факт что адресату эти тайминги понравятся. Но вообще, есть какие-то принципиальные причины по которым это не сработало бы?
2) Для более определенных таймингов можно эвентом от таймера канал DMA дергать, тогда это уже не MEM2MEM транзакция, конечно. Это медленнее, но более предсказуемо. И по прежнему не треубет внимания проца к этому занятию. Позволяя что-нибудь этакое, от супер-многоканального PWM железно (совсем-железно если CIRC сделать) до синтеза всяких хитрых паттернов без участия в этом софта.
Пример практического применения, один из: допустим я повешу на Port B (или любой иной) 8080/6800 LCD (параллельный mipi, которые в "простых" мобилах) и согласен подарить LCD весь port B (или иной). У LCD есть 8 линий данных + несколько линий управления (CS, RD, WR... обычные сигналы шины). Это естественно в допущении что контроллера внешней шины нет - камни с шиной очень уж разлапистые и/или дорогие и избыточные. Если контроллер есть, все это конечно ни к чему. А тут идея в том чтобы заранее подготовить буфер и пульнуть целый блок без участия проца. В данном случае - ну вот сэмулировав контроллер шины, дескать. Так что даже малолапый камень сможет не очень медленно в графический LCD что-то пульнуть, да еще и без участия софта.
Кто что думает? Это бред? Или работоспособно? И если второе - какие подводные камни в этих комбо? Ну, кроме диких таймингов в первом случае


