Сегодня весь вечер убил на то, чтобы понять, почему стала глючить передача по SSP с помощью DMA на LPC1768.
Под scmRTOS выполняются несколько процессов, и в определённый момент один из них использует DMA для работы с картой памяти.
А в Idle процессе есть инструкция __WFI(), чтобы остановить CPU, пока делать особо нечего.
Но после того, как выполняется WFI(), перестаёт нормально работать DMA - передача идёт и завершается нормально, только передаются нули вместо нужных данных.
Пробовал располагать данные в ОЗУ или во флеш - толку нет.
В принципе, правильно - DMA вроде тактируется от одного с CPU клока, который в SLEEP режиме останавливается.
Поэтому и не может DMA нормально работать.
Но это ведь облом получается - что-же, если пользуешься DMA, то режимы энергосбережения не получится включать?
В мануале только предупреждение о DEBUG, а о косяках DMA и слова нет

Может быть, есть способ решить эту проблему?