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

nRF52840 BLE Transfer speed issues

Hi all,

I have a custom nRF52840 board that transmits 32-byte packets to mobile device and I want to achieve maximum transfer speed.

The code is based on the ble_app_uart project

The BLE settings in my project are as follow:

//sdk_config
NRF_SDH_BLE_GAP_DATA_LENGTH 251
NRF_SDH_BLE_GATT_MAX_MTU_SIZE 247
NRF_SDH_BLE_GAP_EVENT_LENGTH 6

//main
MIN_CONN_INTERVAL   MSEC_TO_UNITS(8, UNIT_1_25_MS)
MAX_CONN_INTERVAL   MSEC_TO_UNITS(8, UNIT_1_25_MS)
 
ble_stack_init();
gap_params_init();
gatt_init();
services_init();
advertising_init();
sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_ADV,m_advertising.adv_handle,8); // Max  ADV Power = 8dB
sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_CONN,m_advertising.adv_handle,8); // Max CONN Power = 8dB

The transmission data rate from the custom device to the mobile is 8kB/sec +/- ~400B

I want to reach maximum transfer speed but I don't know what the upper limit is.

Based on table 2 of the following link, I see that the max transfer speed is ~165kB/sec. So I try to figure out what I am doing wrong and my device's transfer speed is so low.

(https://infocenter.nordicsemi.com/index.jsp?topic=%2Fsds_s140%2FSDS%2Fs1xx%2Fble_data_throughput%2Fble_data_throughput.html)

From the debug session I get the following Information where the connection is established with DLE (247Byte / BLE_packet)

So I assume that something else keeps the transmission speed from my board to the mobile so low.

Also, I have a few questions :

1. How can I increase NRF_SDH_BLE_GATT_MAX_MTU_SIZE from 247 to 512? Because it is a 1-byte value and 512 needs 2-bytes  will need to mess with the SD libraries
2. Is it possible to increase the NRF_SDH_BLE_GAP_EVENT_LENGTH  higher than 6? Because when I set it to 7 or 8 the whole system stops.

If there is something else that I have not taken into account please correct me.

Thank you for your time

Regards

Related