Я пытаюсь установить связь с периферийным устройством UART с использованием DMA для RX и TX. Я использую библиотеку HAL, которая поставляется ST (сгенерирована STCubeMX).STM32F4 Обработка периферийной ошибки при передаче DMA (RX)
Я обрабатываю канал UART с 1.5MBaud - поэтому, чтобы не потерять какие-либо данные, я настроил DMA в прямом режиме с круговым буфером и обработал прерывания с половинной передачей, чтобы позаботиться о данных , и держите DMA онлайн для получения дополнительных данных.
Проблема в том, что иногда я вижу в Регистре состояния UART, что бит ошибки Frame включен, а иногда также включен флаг ошибки переполнения.
Я могу обработать потерянные байты (используя crc на структурированных пакетах), но проблема в том, что периферийное устройство перестает получать данные - но DMA не вызывает ошибку или останавливает передачу.
Так что если я пытаюсь получить данные, и флаг на системе висит.
Я видел, что HAL предоставляет функцию __weak, которая должна обрабатывать UART_Error, но она никогда не вызывается - и статус в дескрипторе HAL остается нормальным. только взгляд на регистр может сказать, что есть проблема.
Как определить/устранить эти ошибки?
Благодаря