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

Nordic UART service fragmentation

Hi all,

we are trying to connect 20 peripherals to one nRF52840 master (connected to a Laptop running a python app with pc-ble-driver-py) and transmit about 1000 Bytes per second from each peripheral via the Nordic UART service. At the moment we are having issues with connecting this amount of Tags (Overflows on the peripheral, maximum number of successfully transmitting peripherals depends on the connection interval). We have now investigated how the Connection Event is utilized. During this we have found another issue with fragmentation. The following tests were all done using a connection interval of 25ms.

* The UART service Notifications seem to be fragmented in smaller parts than what is necessary. With "NRF_SDH_BLE_GAP_EVENT_LENGTH 3" a 220-byte packet gets fragmented into 9 parts. With "NRF_SDH_BLE_GAP_EVENT_LENGTH 6" we get 2 or 3 fragments. Why is this fragmentation occurring and why does it depend on the event length? 

NRF_SDH_BLE_GAP_EVENT_LENGTH 6:

NRF_SDH_BLE_GAP_EVENT_LENGTH 3:

* In the following image we have observed the transmission of 6 fragments (two connection intervals) on channel 22 via a SDR. We have compared this with the sniffer output and it seems that "More Data" is set in the third fragment. Why isn't another fragment requested by the master if there is still time in the connection event? (NRF_SDH_BLE_GAP_EVENT_LENGTH was 3)

Please do not suggest increasing connection event length or decreasing the connection interval. We want to find the underlying issue with fragmentation and connection event utilization. The final parameters should be something like 100ms Connection interval with 3.75ms event length to have a slot for every peripheral in each interval.

Thanks
- David

Parents Reply Children
No Data
Related