This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

BLE send and receive speed, GATTS

Hello,

Currently i am doing some testing with the NRF52 DK. I am measuring the time it takes to send and receive a BLE message. I am using the high bandwidth setting the the TX and RX.

conn_bw.conn_bw.conn_bw_rx = BLE_CONN_BW_HIGH;
conn_bw.conn_bw.conn_bw_tx = BLE_CONN_BW_HIGH;

also i am using a write command instead of a write request.

writeParameters.write_op = BLE_GATT_OP_WRITE_CMD;
err = sd_ble_gattc_write(connectionHandle, &writeParameters);

For the connection interval I use both on 7.5 ms

uint16_t meshMinConnectionInterval = MSEC_TO_UNITS(7.5, UNIT_1_25_MS);   	
uint16_t meshMaxConnectionInterval = MSEC_TO_UNITS(7.5, UNIT_1_25_MS);  

The packet length is 20 bytes. What i found was that the time it took to send and receive that message was very unreliable. I did the test a 100 times and found these results:

> Average time = 35,86364746 ms 
> longest time = 86,36474609 ms 
> shortest time =1,525878906 ms

I was wondering how this can take so long sometimes?

Thanks in advance.

Parents
  • To update the connection parameters you will have to call sd_ble_gap_conn_param_update(..), with sd_ble_gap_ppcp_set(..) you are only setting the preferred connection parameters. Basically this is the way it goes:

    • The central will decide the initial connection parameters. If you are using an nRF device for the central, the desired connection parameters (the SoftDevice may choose higher values if it is not possible due to too many connections) are the last parameter in sd_ble_gap_connect(..).

    • The central or peripheral can later update or request to update the connection parameters by calling sd_ble_gap_conn_param_update(..)

    Check what the connection parameters used by the central is. I also advise you to use the SDK connection parameters negotiation library which is used by most of our BLE examples.

Reply
  • To update the connection parameters you will have to call sd_ble_gap_conn_param_update(..), with sd_ble_gap_ppcp_set(..) you are only setting the preferred connection parameters. Basically this is the way it goes:

    • The central will decide the initial connection parameters. If you are using an nRF device for the central, the desired connection parameters (the SoftDevice may choose higher values if it is not possible due to too many connections) are the last parameter in sd_ble_gap_connect(..).

    • The central or peripheral can later update or request to update the connection parameters by calling sd_ble_gap_conn_param_update(..)

    Check what the connection parameters used by the central is. I also advise you to use the SDK connection parameters negotiation library which is used by most of our BLE examples.

Children
No Data
Related