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

nRF51 high current at connected state.

Hello all, Before asking question I thotoughly read the previous discussions but it didn't help in my case. I use nRF51822 rev.2 + SD130 device with NUS service for BLE data exchange. I have decreased current to 14uA in idle during advertisement. However when I connected to peer central the current consumption increased to about 460-500uA and remains in this range until I disconnect device. I tried to increase connection intervals but no noticable result was received. I switched off all peripherals to exclude influence of possible bug in code or hardware. Now I think about HFCLK and 1.2V LDO but didn't found what peripherals use it. Please help with advice or direct to possible wayout.

Connection params: Connection interval: 500-1900ms Slave latency: 4 Supervision timeout: 20000ms

I tried to increase min connection interval but it didn't led to current fall.

Parents
  • Dear Stefan Birnir Sverrisson, Many thanks for your explanation and links but I solved this problem befre read your answer )). I have seen all these threads you've mentioned and many others to investigate the problem. I do not use nRF51 sdk due to tight memory budget and use only sd_... functions to communicate with softdevice. My code is next:

    err = sd_ble_gap_connect(&current_addr, &c_scan_param, &c_connection_param); 
    

    c_scan_param - here put our desired connection params (as far as I understand here they written to the PPCP characteristic). The central able to read them and use, but on all devices I've try - skip. After connection the connection interval depend on device and is in range 20-100ms. Next I follow bonding routines and it is better to do them on high speed. Than when bonded:

    }else if (evt_id == BLE_GAP_EVT_AUTH_STATUS){
    ...
       if (ble_evt->evt.gap_evt.params.auth_status.bonded == 1){
    ...		
     uint32_t res=sd_ble_gap_conn_param_update(gs_central.conn_handle,NULL);
    ...
    

    "If NULL is provided on a peripheral role, the parameters in the PPCP characteristic of the GAP service will be used instead." Next I'm waiting for BLE_GAP_EVT_CONN_PARAM_UPDATE event from central to find out what parameters were chosen. Here I have not experienced any changes of parameters. But establish software timer. After 20s (could be adjusted of cource) I've send

    uint32_t res=sd_ble_gap_conn_param_update(gs_central.conn_handle,&alt_c_connection_param);
    

    to central with slightly different connection intervals (yet not tested what if use the same as at connection). And it responds with connection interval in range that I asked. Now power consumption decreased in one order of magnitude. I have tested this on Windows 8, Android 4.4.2, 5.1, Mac and it seem to work.

  • Thank you for your feedback. I am glad that you found the issue

Reply Children
No Data
Related