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

Small throughput in nrf52-ble-app-uart-c-multilink

Hello,

currently I am working on a multilink project. I have a nRF52840DK as central and 4 evaluation boards (BMD-300-EVAL, contains nRF52832) as peripherals. 

Code Central: nRF_ble_app_uart_c_multilink (https://github.com/NordicPlayground/nrf52-ble-app-uart-c-multilink)

Code Peripheral: ble_app_uart

Each peripheral generates 8kBytes per second. So each peripheral needs to send data at 64kBit/s to the central. This should be possible in theory. But in reality I am unable to get only one peripheral to work. At the moment I trigger the ble_nus_data_send() function of ble_app_uart with a timer every 30ms and a payload of 240 Bytes to get this 64kBit/s. But when 3 to 10 pakets are queued I get a NRF_ERROR_RESOURCES.

I already use every option which increases throughput:

<info> app: Phy Updated. TX: 2, RX: 2               //2MBPS
<info> app: Data len is set to 0xF4(244)            //huge MTU
<info> app: LL packet size is set to 251            //Data Length Extension

#define NRF_SDH_BLE_GAP_EVENT_LENGTH 20             //Event Length Extension

hvn_tx_queue_size = 20

I spent a lot of time with testing different configurations of the connection parameter, but nothing seems to work. I always get NRF_ERROR_RESOURCES immediately. Normally I should be able to transfer huge amounts of data with this high throughput parameters, as I experienced it in the throughput example.

Can you please help, to get this 64 kBit/s per peripheral to work. 

1. Which connection parameters do I need?

2. Where is the problem?

Thank you very much in advance. I really need some help at this point.

Best regards,

Michael

Related