Есть проект в котором 2388 отылает данные во внешний контроллер по SPI итерфейсу на SSP0. Данные идут блоками по 32 байта. Пересылка простейшая побайтовая работает. Мне нужно сделать пересылку используя GPDMA. Взял за основу пример работы с SSP для 23xx с сайта NXP. Запускаю и не получаю никаких прерываний от контроллера DMA. Для проверки настройки контроллера прерываний, сделал пересылку Память->Память, прерывания повляются. Посмотрел errata на 2388, написано, что GPDMA не работает с I2S. Это настараживает, хотя про SSP и ничего не написано.
Получилась ли у кого-нибудь использование GPDMA с SSP для ередачи данных? Если да, то поделитесь пожалуйста кодом инициализации и запуска DMA. И в общем, стоит ли связываться с DMA или лучше на FIFO сделать?
Если конкретно, то не понятными остались такие моменты: 1. Кто должен следить за потоком при передаче Память->SSP и обратно? 2. Отличается ли настройка SSP при работе с ДМА от работы без него за исключением включения DMA на Tx и Rx ? 3. Если мне нужна только предача данных, достаточно ли настраивать только один канал ДМА или в любом случае 2-й канал на прием нужно тоже настроить? 4. GPDMA как источник и приемник может использовать всю память или только область DMA ?
|