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

NRF UART Error at Higher Baud Rate

My requirement is to send from Controller Device to NRF Ble Device through UART of 40Bytes at the rate of less than 1ms. Currently I am using ble_app_uart example as a reference.  

According to Nordic forum UART/UARTE Not able to handle data well at higher Baud Rate. The Overrun Error occurs because of the Byte by Byte data receiving mechanism.

Nordic SDK: 17.0.2

So My question as follows:

1. By using UART/UARTE Can i achieve 921600 or higher baud rate.  

2. If not why? Please send me a reason.

3. If Yes. Please send me a reference.

By Referring the Nordic Forum i get to know by using libuarte-advanced UARTE driver I can achieve higher baud rate. Is this Correct.

So My question as follows:

1. Is 921600 baud rate achievable.

2.  Please send me a Integration Guide with BLE Peripheral Examples(eg,. ble_app_uart).

 3. If there send me a ble peripheral example with libuarte for my refernce.

  • Hi susheel,

    BLE Configuration:
    Notification Data Payload : 37
    ATT_MTU: 40
    GAP Data Length: 44

    Connection Interval: 7.5ms
    Gap Event Length: 400(500ms) and 6(7.5)
    hvn_tx_queue_size: 6/12

    what is the default size of HVN TX QUEUE SIZE.

    So My query:
    If i set ATT MTU 247 and Gap Data Length 251
    How many packets will send in one connection interval(7.5ms) on 1m distance as well as 12m distance with worst condition. Is characteristic value data payload and (ATT_MTU-3) & (GAP Data length = ATT_MTU+4)should be same.


    If i set ATT MTU 40 and Gap Data Length 44
    How many packets will send in one connection interval(7.5ms) on 1m distance as well as 12m distance with worst condition.


    what is the maximum time required to send one packet of 40bytes. is it varies according to environment surrounding.

    According to softdevice s132 document(S132_SDS_v7.1.pdf) what do you mean by application can configure tndist on page 54. If so, how we can do that?

    Instead of sending 1ms if i send 111bytes every 3ms can i achieve constant throughput till 11m on worst condition.

    Please suggest the best possible configuration need to send data 37bytes in 1ms , 74bytes in 2ms or 111bytes in 3ms.

  • Hi susheel,

    BLE Configuration:
    Notification Data Payload : 37
    ATT_MTU: 40
    GAP Data Length: 44

    Connection Interval: 7.5ms
    Gap Event Length: 400(500ms) and 6(7.5)
    hvn_tx_queue_size: 6/12

    what is the default size of HVN TX QUEUE SIZE.

    So My query:
    If i set ATT MTU 247 and Gap Data Length 251
    How many packets will send in one connection interval(7.5ms) on 1m distance as well as 12m distance with worst condition. Is characteristic value data payload and (ATT_MTU-3) & (GAP Data length = ATT_MTU+4)should be same.


    If i set ATT MTU 40 and Gap Data Length 44
    How many packets will send in one connection interval(7.5ms) on 1m distance as well as 12m distance with worst condition.


    what is the maximum time required to send one packet of 40bytes. is it varies according to environment surrounding.

    According to softdevice s132 document(S132_SDS_v7.1.pdf) what do you mean by application can configure tndist on page 54. If so, how we can do that?

    Instead of sending 1ms if i send 111bytes every 3ms can i achieve constant throughput till 11m on worst condition.

    Please suggest the best possible configuration need to send data 37bytes in 1ms , 74bytes in 2ms or 111bytes in 3ms.

  • Pavan,

    Pavan Kote said:
    If i set ATT MTU 247 and Gap Data Length 251
    How many packets will send in one connection interval(7.5ms) on 1m distance as well as 12m distance with worst condition. Is characteristic value data payload and (ATT_MTU-3) & (GAP Data length = ATT_MTU+4)should be same.

     For a 1M PHY, if you have 247 ATT MTU size then

    The total BLE packet size will be (1 + 4 + 2 + (4 + 247) + 3) = 261 bytes = 2088 bits.

    On a 1 MPHY this will take just over 2ms to transmit one packet and i think the best case is you can transmit two such packets within a connection interval of 7.3ms.

    We cannot say the average values per given conditions but there are some benchmark numbers that we have done which can be found here.

  • Hi Susheel,

    I want the benchmarks results according to worst case.

    I would like to transmit the data via the BLE continuously(real time 1ms) using notification. Is it possible. Is there any alternate options available for fast real time data transmission using BLE.

     

    As i seen in some forums as the data should be prepared or queued to hvn tx buffer previously before connection interval starts right. It means we cannot able to send real time data on real world condition. Is it right.

    For ex if i capture ADC value of 1000 samples per second i want to send 1000 samples per second. How can we send the data. Is there any solution for this kind of requirement using ble.

  • Pavan Kote said:
    I want the benchmarks results according to worst case.

     We do not have those benchmarks because we cannot simulate the variations of the environment around different locations. You need to rely here on radio properties and can do some tests for your application yourself.

     

    Pavan Kote said:
    I would like to transmit the data via the BLE continuously(real time 1ms) using notification. Is it possible. Is there any alternate options available for fast real time data transmission using BLE.

     2M PHY, Data Length extension and notifications should be enough to give you good throughput and the softdevice is capable of handling it, but it does not solely depend on softdevice. 

     

    Pavan Kote said:
    As i seen in some forums as the data should be prepared or queued to hvn tx buffer previously before connection interval starts right. It means we cannot able to send real time data on real world condition. Is it right.

     Realtime is a relative word, if you have a connection interval of 20ms and if you are sending a couple of packets in each connection interval, it might be realtime for some application and not for some. If your application wants to send data immediately as it comes with microseconds delay, then it is not possible as BLE cannot function that realtime.

     

    Pavan Kote said:
    For ex if i capture ADC value of 1000 samples per second i want to send 1000 samples per second. How can we send the data. Is there any solution for this kind of requirement using ble.

     That is challenging, you cannot send 1 sample every ms as 7.5ms is the fastest connection interval you can get. So you anyhow need to accumulate the samples data and send them as bursts over BLE. The optimal size of bursts is somethiing you need to calibrate for your application that you can achieve by optimizing your architecture and doing some tests. Nordic unfortunately cannot suggest or help you in that calibration as it is the application architect who does that.

Related