Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nrf52832 idle current is not 2uA

I have programmed my device with ble_app_rscs available on nRF5_SDK_15.3.0_59ac345. I was expecting it the main loop 

for (;;)
    {
        idle_state_handle();
    }

the device will only consume 2 uA however it is consuming  8 uA. Can you assist me on why is that the case? is there something I am not switching off?

  • Hi,

    The sleep current will depend on which modules/resources are enabled in your application. Have you modified anything in the example, or are you testing it directly from the SDK?

    Have you disabled the softdevice and all running libraries/modules before entering sleep? Typical modules that are enabled is the NRF_LOG module, application timer, etc. If the softdevice is enabled, you can find expected current consumption for different configurations through our Online Power Profiler for BLE

    Best regards,
    Jørgen

  • Hei, 

    I am testing it directly from the SDK with these changes in the main 

    int main(void)
    {
        bool erase_bonds;
    
        // Initialize.
        //log_init();
        timers_init();
        //buttons_leds_init(&erase_bonds);
        power_management_init();
        ble_stack_init();
        gap_params_init();
        advertising_init();
        services_init();
        peer_manager_init();
        lpcomp_init();
        saadc_init();
        PWMinit();
    
        // Start execution.
        application_timers_start();
        advertising_start(erase_bonds);
    
    
        // Enter main loop.
        for (;;)
        {
            idle_state_handle();
        }
    }
    

    In addition the Bluetooth connection on the central device was set this way 

    static const struct bt_le_conn_param cp = {
    		.interval_min = 100,
    		.interval_max = 128,
    		.latency = 98,
    		.timeout = 3200,
    	};

    so that the connection interval will be around 16s. Do I need to disable NRF_LOG module or not initializing it is enough? If yes tell me where should I disable it. 

    I have looked into https://devzone.nordicsemi.com/nordic/power/w/opp/2/online-power-profiler-for-ble and the ideal current is supposed to be 2 uA, mine is around 8 uA. Can you suggest what else I am forgetting to switch off?

  • Have you checked that these parameters are actually accepted by the peripheral? I tested this with the ble_app_rscs_c example in SDK 15.3.0, and I'm seeing ~11uA average current, but also BLE events occur every 1 second. This would explain the increased current consumption.

Related