Тут другое дело. Когда у меня на DMA было, всё работало. Но у меня
транзакции были по паре байт. И я решил, зачем такой большой объём
кода для настройки и запуска DMI? И заменил DMA на "ручное" управление передачей и приёмом, в прерывании. Всё равно, что для DMA, что для SPI нужны прерывания. И поимел проблемы. При большой нагрузке, не успевал принять все байты. Заработало лишь после того, как назначил прерыванию SPI самый высокий приоритет. Так что DMA стоит использовать во всех случаях, особенно когда известна длина транзакции.