I’m using an NRF52840 device with an external 32MB flash memory. I need to send memory content to a mobile app through BLE when the user asks for.For now I send 240 bytes indications one after another, the next packet is sent when I receive the indication confirmation of the previous.As the mobile app is not developed yet, I do testing with a nRF dongle with nRFconnect.
I currently get a data rate at 40 kbps. That means it would take about 1,3 hours for a complete transfer if the flash memory is full of data…As BLE parameters for data rate optimisation, I use
- Softdevice S140
ATT MTU = 240 bytes - LE 1M PHY (tried to activate 2M PHY but I have not seen a significant difference)
- DLE enabled (NRF_SDH_BLE_GAP_DATA_LENGTH = 251)
- Minimum connection interval 7,5ms
- Maximum connection interval 20ms
- NRF_SDH_BLE_GAP_EVENT_LENGTH = 6 (not sure what I can do with that parameter. Set it equal to the connection interval ?)
-> Is there any parameters I can still modify to improve my data rate with indications ?
-> I know notifications data rate is obviously better than indications, but how can I use it to transfer a lot of data ? I mean, how can the packets be triggered one after the other in an efficient way ? I can send notifications with a regular timer and validate the interval with experimental testing, but I can’t do so for a lot of smartphones and I suppose there are BLE max rate differences between them. Without confirmation, I could miss some packets.Thank you for your help.