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

High Fequency UART transmissions

I am using the nrf52832 with its Development kit to transmit trough UART to the PC a frame with 26 bytes, I have configured the port to 1MBoudRate. Once I prepare the frame I use the next instructions to transmit:

while(nrf_drv_uart_tx_in_progress()){}; nrf_drv_uart_tx(finalframe ,26);

The intention is to transmit a new frame every 250uS which implies a frequency of 4kHz. In theory if I have settled the speed to 1MboudRate this should be possible, however, the frames are not received right, 1 of every 8 frames has a byte missing. It starts to send all bits properly when the frequency decreases to 2,5kHz.

Any idea why this could be happening? Maybe can I use another transmit function to tx using UART?

Parents
  • But If I use the FIFO properly, couldn't this help to fix the problem? How can I use properly the FIFO? just not using the while(nrf_drv_uart_tx_in_progress()){} statement? I try that together with disabling the flow Control, and I receive frames that are not complete but not with a static number of bytes in between as before. However, here I don't see any significant change if I vary the size of the TX_BUF_SIZE which for me it does not have any sense.

Reply
  • But If I use the FIFO properly, couldn't this help to fix the problem? How can I use properly the FIFO? just not using the while(nrf_drv_uart_tx_in_progress()){} statement? I try that together with disabling the flow Control, and I receive frames that are not complete but not with a static number of bytes in between as before. However, here I don't see any significant change if I vary the size of the TX_BUF_SIZE which for me it does not have any sense.

Children
No Data
Related