Цитата(Golikov A. @ Jan 20 2015, 22:45)

потому такое решение...
Максимальная скорость, без накладных и задержек, и достаточно просто, как мне показалось...
Ну: хозяин - барин

Цитата(Golikov A. @ Jan 20 2015, 22:45)

А я думаю что DMA пишет все фифо за раз, не зависимо от того как оно его набивало по 4 символа или по 1. Потому burst или нет тут роли не играет. Важнее как часто ДМА пытается занять шину для сброса данных в память. В burst эти акции в 4 раза реже, вроде как, может это лучше при конкуренции с другими ДМА и процом....
Про какое FIFO Вы говорите? FIFO своё - да, думаю как только он обнаружит окно на шине, то сколько у него есть столько и передаст в ОЗУ.
А вот FIFO периферии он читает в зависимости от пришедшего сигнала (burst или single) и если burst - от заданного размера пакета в DMACCxControl.
Ведь он не знает сколько там данных. Если пришёл burst-запрос, он смотрит какой размер пакета задан у него в DMACCxControl и такую транзакцию чтения на шину и запускает.
Цитата(Golikov A. @ Jan 20 2015, 22:45)

Ну надеюсь 2 канала, работающие по очереди не нагнут невозможно проц

По общей средней пропускной способности - нет. Но могут быть кратковременные затыки.
Я когда разбирался с проблемами при работе SSP+DMA с SPI-FLASH и SPI-FRAM на частотах 20-30МГц с аппаратным SSEL (LPC1758 и LPC1778), обнаружил что общая пропускная способность обеспечивается
полностью на данных частотах, но изредка (раз в неск. секунд) на сигнале SSEL возникают короткие просечки порядка 1мкс и меньше. Поймал на осцилле.
Похоже, что иногда DMA не успевал подкачивать (или откачивать данные). Снижение частоты до 10МГц не решило проблемы, только стало реже проявляться.
Думаю, это из-за того, что CPU чаще работает из очереди предвыборки, заранее загруженной, но иногда читает из памяти (при ветвлениях в программе), и иногда могут быть
периоды времени, когда он длительное время читает только из памяти (вермишельный код из переходов).
После этого на LPC17xx я не использую больше аппаратный SSEL.
Но это помогает так как SSP работает в мастер-режиме. И при FIFO underflow просто приостанавливает клок. У Вас-же в слэйв это не поможет - клок слэйву не остановить,
Так что нужно быть очень аккуратным на таких частотах SSP. И вообще в слэйве.
У меня есть проект на LPC1758 где 7 каналов DMA могут быть заняты одновременно и 4 из них - для SSP (2 для ADS1298 и 2 для SD-карты).
И ничего - работает. Но там все SPI-слэйв с программным SSEL.