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

Maximum datarate configuration with NRF52832

Hello,

In my application (based on app_nus_uart example, with two NRF52832 boards), one of the cases is uploading/downloading files with sizes up to 10MBytes.

In my app I configured the next things (peripheral and central have the same configurations):

#define MIN_CONN_INTERVAL               MSEC_TO_UNITS(20, UNIT_1_25_MS)
#define MAX_CONN_INTERVAL               MSEC_TO_UNITS(75, UNIT_1_25_MS)
#define SLAVE_LATENCY                   0
#define CONN_SUP_TIMEOUT                MSEC_TO_UNITS(4000, UNIT_10_MS)
#define FIRST_CONN_PARAMS_UPDATE_DELAY  APP_TIMER_TICKS(5000)
#define NEXT_CONN_PARAMS_UPDATE_DELAY   APP_TIMER_TICKS(30000)
#define MAX_CONN_PARAMS_UPDATE_COUNT    3
#define NRF_SDH_BLE_TOTAL_LINK_COUNT    1
#define NRF_SDH_BLE_GAP_EVENT_LENGTH    120
#define NRF_SDH_BLE_GATT_MAX_MTU_SIZE   247

The files sent by packets of 200 bytes.

When two devices are connected, I see that the PHY set to 2Mbit/sec and the maximum packet length set to 247 (data up to 244 bytes)

But when I test the transmitting of the file (1,194,277 bytes) it takes 1minut, 50 seconds. According to my calculation is about 10.8 Kbyte/sec.

What am I doing wrong?

Thanks a lot!

Parents Reply
  • Based on your throughput values it looks like you are only successfully sending 1 large packet every connection interval: 247bytes * 1/20ms= 12.3kB/s (with some packet loss I think 10.8kB/s is more realistic). So you can increase throughput by either have shorter interval, e.g. 7.5ms instead of 20ms. Also, you may try to send more packets every connection interval, either by using notifications  and/or have more characteristics to write to.

Children
Related