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

UARTE receive timeout (RXTO)

Hello,

I have a question regarding the nrf uart driver. The RXTO event is never triggered even though the Interrupt itself is enabled (and the line is idle after a packet, so the timeout should happen unless it's set as something unusably long, > 1 sec). I've seen this similar question, but it's over a year old and there were quite a few updates of the SDK in between, plus there is a event_rxto in the SDK / UARTE, it just never fires. Just to be clear, the uarte rxto interrupt nor the endrx interrupt are triggered when the line is idle, I get the endrx interrupt/event when the buffer is full and that's it.

Is there something special I should set to enable that event/interrupt? What is the actual timeout time set as? Did anyone else manage to get the rxto event workng, and if, could you share the code relating to the config / function calls, please and thank you :) ?

I'm setting the UARTE RX transfer size to 32 bytes, but I would like to get the interrupt when the packet ends -> the line is idle -> rxto event should happen. We're using nrf52840 and nrf52832 chips with sdk13.1.

Thanks for the help.

Parents Reply
  • From the description in the page I linked above, this should explain this: "After the RXTO event is generated the internal RX FIFO may still contain data, and to move this data to RAM the FLUSHRX task must be triggered." It is the FLUSHRX task that triggers the ENDRX event after the RXTO event.

    Unfortunately, there is no way of knowing what have been written to RAM by DMA before getting the ENDRX event, indicating that all the data is written and valid.

Children
No Data
Related