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

Increase UART Buffers

Hi,

We have a hardware application that prevents us from using flow control to interface with external hardware. We require the NRF51822 to be able to buffer up to 256 bytes of high speed UART information (around 256k bps) and software buffering is resulting in bit errors. Is it possible to get a ble firmware revision of the software stack that can provide this?

  • Do you have any way of knowing when these bursts of data will come? If so, you may be able to manipulate the connection parameters in some way so that these bursts come only when there will be no radio activity. Connection parameters are explained in this question.

    Normally, the CPU will be blocked for some time every connection event, which occurs every connection interval. If however you set slave latency, the MCU will be woken up every slave latency-th connection event. This means that if your application is to send all this data you receive over the air, you can try to time things such that you will have time in between blocking to receive the data.

    Say you receive these bursts every 4 seconds, and that they last for a full second. If you then have a connection interval of 500 ms, and slave latency of > 3, as long as you don't have any data queued before the burst, no wake-ups should occur, and you should be able to receive the data you need.

  • Here's my problem, even with BLE software stack disabled sending 256 bytes back-to-back at say 115200 bps resulted in bit errors on the UART line without flow control. The problem is exacerbated when using an interupt driven uart methodolgy versus polling. Can anyone confirm they are experiencing the same behaviour?

    Edit: I wanted to address your suggestion about disabling the stack. This is something I considered and could be feasible if UART worked reliably with the stack disabled. This has so far not been the case, although performance certainly improved (i.e. a lower but still unacceptable bit error rate) with the stack disabled.

  • Are you using the Evaluation kit or the Development kit? It seems that the Segger chip on the Evaluation kit could have trouble keeping up if there is lots of UART traffic, but I haven't heard of any issues with the chip itself.

Related