обычно, в таких случаях, делают 2 буфера приёма равные по величине буферу передачи. таким образом когда первый приёмный буфер переполняется включается второй и запись продолжается в него. в данной ситуации не нужно делать стоп ДМА приёма и, возможно, терять данные.
ещё один нюанс: приёмные буфера нужно настраивать ДО передающих(они в свою очередь должны быть выключены) и уж тем более ДО старта их работы.
судя по даташиту такая реализация без участи АЛУ невозможна на данном камешке. в ДМА нет возможности указать на адрес в памяти куда пихать данные в случае переполнения буфера (или я не прав?)
есть вопрос: почему для передачи принятых данных используется 4 канал ДМА1? разве он заточен под запросы для SPI а не для SDIO?
судя по
даташиту, (хоть и не самому свежему), лучше брать 2 для RX и 3 для TX каналы для этого дела (стр. 188). сильно не вникал в даташит, но первые впечатления не очень о камушке. на мой взгляд AT91SAM7 получше в этом плане будет, хотя он и уступает в количестве переиферии... ИМХО...