Hi there,
We're using SDK 16.0.0_98a98e2. Our setup is a PC running BLE Central connecting to 2 nRF 52840 running as BLE peripherals. We use the provided BLE UART example as the basis of our code.
BLE Central on PC
/ \
/ \
/ \
(A) nRF52840 (B) nRF52840
BLE Peripheral BLE Peripheral
We need each BLE peripheral to stream about 50 Hz of 244 bytes per packet (ie the max packet size afaik). So, per second: 50 * 244 bytes * 8 bits/bytes = 97.6 Kbps per nRF 52840.
When only 1 peripheral -say A- is connected, it can stream around 50 Hz as expected. But, once the second peripheral -say, B- is connected, the performance of A's streaming slowly degrades down to 40 Hz or sometimes less than 40 Hz. And, this is even before B starts any streaming.
First question, why is that? Is it because B has some sort of continuous handshake transactions going on with the Central to maintain the connection?
Second question, is it possible that Central talks to A in one set of BLE channels and Central talks to B in a different set of BLE channels? We're thinking it might reduce the interference and thus improve the streaming performance of both A & B.
Or, please let us know if you have other suggestions to reach our desired throughput (max latency required is 100 ms).
By the way, on few occasions we can see both A & B streaming 'simultaneously' at 50 Hz. But, it's not true simultaneity because they actually take turn in sending.
Thanks,
Cecylia