В самую точку! Накладные расходы на инициализацию контроллера DMA (ок. 10 мксек) на прием и передачу от SPI оказались сравнимы по времени, как если бы напрямую управлять передачей через SPI. Вот потому для коротких пакетов использование DMA не оправданно. Мне нужно обрабатывать 24-битное АЦП (на шине SPI) по прерываниям. В прерывании инициируется DMA на прием/передачу и когда DMA закончит транзакции, то выставляет прерывание, по которому данные из АЦП готовы. Данные АЦП подвергаются всяческой обработке. Вот на эту обработку не хватает время. Стал разбираться и понял, что в прерывании от АЦП на инициализацию DMA тратится ок. 10 мксек и напрямую через SPI принять те же 3-байта тоже ок. 10 мксек.
|