AnsweredAssumed Answered

UART Overrun error while Transmitting data

Question asked by joshi.vinayak on Dec 18, 2015

I am trying to communicate with the UART peripheral using DMA for both RX and TX. I am using the HAL library that is supplied by ST (Generated with STCubeMX).

I am handling a UART channel with 1.5MBaud - so in order to not loose any data, I've configured the DMA in Normal mode.

The problem is that sometimes I can see in the Status Register of the UART that the Overrun Error flag is on.

I can handle to lost bytes (using crc on the structured packets), but the problem is that the peripheral stops receiving data - but the DMA does not raise error, or stop the transfer.

So if I try to receive data, and the flag is on the system hangs.

I saw that the HAL provides a __weak function that should handle UART_Error, but it is never called - and the status in the HAL handle remains normal. only a look at the register can tell that there is a problem.

How should I detect/handle these kind of errors?