При использовании UART+DMA(per->mem) не работает IDLE

Fabriziog

Guest
Не поднимается флаг и не срабатывает прерывание по событию IDLE в UART при использовании DMA на чтение из периферии.

Вероятно это происходит из-за того, что флаг IDLE поднимается только при поднятом флаге RXNE, который поднимается после записи данных в регистр принятых данных UART и который снимается чтением этого же регистра принятых данных. DMA сразу же считывает регистр принятых данных, тем самым опуская флаг RXNE, из-за чего флаг IDLE не может подняться.

Предложение: добавить добавить флаг независимости флага IDLE от RXNE (?) или отказаться от зависимости IDLE от RXNE
 

klen

New member
Я это проверю на своей плате. Если idle не работает с dma, невозможно принять пакет данных неизвнстной заранее длинны. Консоль на таком железе делать можно только через прерывание побайтно - это не наш случай. Портить трассу вычисленмй в ральном времени прерыванием по прилету каждого байта... это срочно нужно править корку uart'a на мой взгляд если авторы планируют чтоб контроллер пошел далее утюгов и елочных гирлянд.. но может уже сделали? Я проверю в блидайшие дни.
 
Сверху