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

NRF52/BLE4.2 data data throughout

Hi,

When i used nrf51822, i remember the s110 define max transmit buffer as 23 Bytes, but now, i am using nrf52832, the max transimit buffer is defined as 158 bytes. Does this is the general standard define in offical BLE 4.2? if so, is it means if i use 20ms for an interval, then, with nrf51822, the data throughout is about 23/20=1kbyte/s . and, with nrf52832, the data throughtout rate can achieve about 158/20=8kbyte/s. Am i right on this?

any one can help on this, it would be very grateful, thanks.

Regards Simon

Parents
  • Hi,

    With BLE 4.1 the ATT MTU is 23 bytes, but with BLE 4.2 it can be increased up to 247 bytes. The throughput you can achieve also depends on the connection interval, how many packets you can send each connection event, and if you have enabled DLE (Data length extension) and Connection event length extension.

    If both sides of the links supports all these settings, you can achieve ~770 kbps with BLE 4.2.

    See these links for more information:

    BLE data throughput

    Throughput and long range demo

  • Hi Sigurd,

    Thank you. I am new with nrf52832, so, I am confusing with DLE you mean. how can I enable the DLE? I am using the example code ".\ble_peripheral\ble_app_uart" And, I found in the example code, gatt_init() function call nrf_ble_gatt_att_mtu_periph_set(&m_gatt, 64); that means it set the MTU with value 64. but, the function ble_ecg_string_send(), it used if (length > BLE_NUS_MAX_DATA_LEN), but BLE_NUS_MAX_DATA_LEN was set (158-3). Do these have potential risk?

Reply
  • Hi Sigurd,

    Thank you. I am new with nrf52832, so, I am confusing with DLE you mean. how can I enable the DLE? I am using the example code ".\ble_peripheral\ble_app_uart" And, I found in the example code, gatt_init() function call nrf_ble_gatt_att_mtu_periph_set(&m_gatt, 64); that means it set the MTU with value 64. but, the function ble_ecg_string_send(), it used if (length > BLE_NUS_MAX_DATA_LEN), but BLE_NUS_MAX_DATA_LEN was set (158-3). Do these have potential risk?

Children
No Data
Related