Цитата(xelax @ Jan 21 2008, 09:55)

наступал на те же грабли. Именно приём через DMA и переставал работать. Пока перед запуском SPI на приём не добавил следующие строчки.
Код
uint32_t dummy;
while (AT91C_BASE_SPI1->SPI_SR & AT91C_SPI_RDRF)
dummy = AT91C_BASE_SPI1->SPI_RDR;
Вот-вот. Только я добавил это в перывании сразу после приема/передачи и тоже заработало.

Цитата(Dimmy @ Jan 20 2008, 17:21)

Насколько я понимаю, при работе с DMA следует использовать прерывание по TXBUFE. Внизу кину пример. Я периодически запускаю DMA для SPI (к которому прикручен АЦП) в шедулере. Может поможет.
Спасибо, попробую по TXBUFE отслеживать.