This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

UARTE Overrun error in 921600 Baud

Hello,

I am using SDK SDK_15.3.0_59ac345 in application that receives data from UART,
and the aplication is running in background just ADV.

In the main function, after launching the broadcast, only unlimited uart data will be received. The initialization parameters of uart are as follows (using easyDMA) :

The PC sends a large amount of data to nrf52840 through uart at a speed of 70KB/S. As a result, nrf52840 will receive a large number of NRF_SERIAL_EVENT_DRV_ERR events in the uart callback, but it can also receive 60% of the data, that is, packet loss occurs.

Check that the uart ERRORSRC register value is 1;

The error occurred as follows:

Then I tried to stop the ble broadcast, and the uart received the data normally without DRV_ERR.

Is it the case that there are too many interrupts in the ble stack for uart to handle data transferred by DMA?

My application must reach 70KB/S by uart transfer. Is there any way to deal with it?

Thank you!

Parents
  • Is it the case that there are too many interrupts in the ble stack for uart to handle data transferred by DMA?

    Not too many - just a few too long running ones.

    I got uart overruns on 115200 baud already - running 1M baud will always require hardware flow control. At these baud rates this also applies to some USB2UART adapter chipsets. I've seen data loss with hardware flow control on some chipsets at >=460800 baud.

Reply
  • Is it the case that there are too many interrupts in the ble stack for uart to handle data transferred by DMA?

    Not too many - just a few too long running ones.

    I got uart overruns on 115200 baud already - running 1M baud will always require hardware flow control. At these baud rates this also applies to some USB2UART adapter chipsets. I've seen data loss with hardware flow control on some chipsets at >=460800 baud.

Children
Related