1) Ненадёжную систему: события идут часто, и очередное событие от таймера может быть потеряно, так как не обработалось ещё предыдущее, потому что шина как раз загружена процессором или другими DMA-каналами. В результате - по запросам от таймера данные считываются из памяти-источника в FIFO-буфер DMA, но не успевают записаться в память-приёмник, потому что она как раз сейчас сильно занята -> FIFO переполняется -> данные теряются. Такое будет происходить от случая к случаю - как карта ляжет.[/uquote]
Слишком много домыслов, лично я без понятия насколько часто у него там идут события и какая сопутствующая нагрузка. Нужен был вариант решения, если в итоге передача при помощи DMA не подходит в принципе, то какой с меня спрос
Я писал проги под ЛА и осциллы, там задержка между транзакциями DMA от 2 тактов(для F4 и DCMI), если без таймера, а таймер добавляет еще такт. Это в идеальном случае, если мк в сон вгонять, но если, допустим, запустить DMA и дожидаться окончания передачи проверяя флаг, то искажения захваченной осциллогамы будут крайне незначительными, т.е. CPU читающий команды из флеша и DMA сохраняющий данные в RAM практически не мешают друг другу, а для некоторых конфигураций и серий мк они не пересекаются совсем. Так что не нужно заранее драматизировать, возможно времени там более чем достаточно.2) Очень медленную пересылку, потому что (для борьбы с п.1) период таймера пришлось сильно увеличить.
Burst я упомянул, но он применим далеко не всегда и на время такой передачи можно заблокировать вообще все. А как иначе?PS: Такой трансфер нужно делать только единым блоком, по одному сигналу запроса.


