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

Slow rate from central to peripheral

Hello,

I'm working on nrF52832 with two different Android device : Samsung Galaxy note 3 neo and HTC ONE M8.

My test :

  • Central side ( smartphone ) : each 200 ms I send 20 Bytes during 20s -> 100 * 20 Bytes
  • Peripheral side : I measure the time between the first packet and the last one.

The result :

  • HTC ONE M8 : 20.2 s to receive data
  • SAMSUNG = 43 s to receive data

We are trying to improve the data transmission because the rate is too slow on some smartphone ( ex : samsung note 3 neo ).

I think that the connection interval on ble_evt_connected return 39 -> 48,5ms ( for both smartphone )

#define MIN_CONN_INTERVAL                MSEC_TO_UNITS(10, UNIT_1_25_MS)           /**< Minimum acceptable connection interval (0.1 seconds). */
#define MAX_CONN_INTERVAL                MSEC_TO_UNITS(200, UNIT_1_25_MS)           /**< Maximum acceptable connection interval (0.2 second). 200*/
#define SLAVE_LATENCY                    0                                          /**< Slave latency. */
#define CONN_SUP_TIMEOUT                 MSEC_TO_UNITS(4000, UNIT_10_MS)            /**< Connection supervisory timeout (4 seconds). */

How can I increase the speed ?

Thank you very much.

Nabil

Parents
  • case BLE_GAP_EVT_CONNECTED:

                        NRF_LOG_PRINTF(" central connected \r\n");
                       
                    err_code = bsp_indication_set(BSP_INDICATE_CONNECTED);
                    APP_ERROR_CHECK(err_code);
                    m_conn_handle = p_ble_evt->evt.gap_evt.conn_handle;
        
        
                    // return 39 for min and max
                	NRF_LOG_PRINTF("max_conn_interval : %d \r\n",p_ble_evt->evt.gap_evt.params.connected.conn_params.max_conn_interval);
                	NRF_LOG_PRINTF("min_conn_interval : %d \r\n",p_ble_evt->evt.gap_evt.params.connected.conn_params.min_conn_interval);
        
                    break; 
                
                
        
                case SD_BLE_GAP_CONN_PARAM_UPDATE : // never occurs 
                	NRF_LOG_PRINTF("max_conn_interval : %d \r\n",p_ble_evt->evt.gap_evt.params.conn_param_update.conn_params.max_conn_interval);
                	NRF_LOG_PRINTF("min_conn_interval : %d \r\n",p_ble_evt->evt.gap_evt.params.conn_param_update.conn_params.min_conn_interval);
        
                break;
    

    It's on this function. 39 mean 48.75 ms but I don't understand what is the real chosen connection interval ..

    Thank you for your help :)

Reply
  • case BLE_GAP_EVT_CONNECTED:

                        NRF_LOG_PRINTF(" central connected \r\n");
                       
                    err_code = bsp_indication_set(BSP_INDICATE_CONNECTED);
                    APP_ERROR_CHECK(err_code);
                    m_conn_handle = p_ble_evt->evt.gap_evt.conn_handle;
        
        
                    // return 39 for min and max
                	NRF_LOG_PRINTF("max_conn_interval : %d \r\n",p_ble_evt->evt.gap_evt.params.connected.conn_params.max_conn_interval);
                	NRF_LOG_PRINTF("min_conn_interval : %d \r\n",p_ble_evt->evt.gap_evt.params.connected.conn_params.min_conn_interval);
        
                    break; 
                
                
        
                case SD_BLE_GAP_CONN_PARAM_UPDATE : // never occurs 
                	NRF_LOG_PRINTF("max_conn_interval : %d \r\n",p_ble_evt->evt.gap_evt.params.conn_param_update.conn_params.max_conn_interval);
                	NRF_LOG_PRINTF("min_conn_interval : %d \r\n",p_ble_evt->evt.gap_evt.params.conn_param_update.conn_params.min_conn_interval);
        
                break;
    

    It's on this function. 39 mean 48.75 ms but I don't understand what is the real chosen connection interval ..

    Thank you for your help :)

Children
No Data
Related