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

High current consumption on rtc example

Hi

I am measuring the current consumption (with an amperemeter) of the nRF52 on the PCA10056 Devboard. The nRF52840 is supplied directly by connecting the external power source to P21, set the SW10 to ON position and keep SW9 into VDD position (according to documentation).

I've flashed the rtc example (examples/peripherial/rtc). The current consumption is 800uA. Can you confirm that the nRF52840 consumption of this example should be around 800uA? I've expected much less.

Parents
  • The example should not consume more than a couple of µA. If the SW10 is in the ON position, you are disconnecting VDD going to nRF from the rest of the board. So that means that the USB cable must be plugged in, in order to power the rest of the board. Also, you can set SW6 to the nRF Only position so that you disconnect all GPIOs on the nRF so you don't get any leakage.

  • Thank you for your reply

    If I do not power by USB and set SW6 to ON (or OFF), I've the 800uA current consumption. Is this just leakage current or what would consume around 800uA? Is this just some GPIO leakage current or are there other possibilities?
    I am asking because we have (more or less) the same current consumption on our (custom) target board by flashing the same example.

  • Are you sure that logging is turned off in the example? Go to sdk_config.h and look for NRF_LOG_ENABLED. Set this to 0.

    If you power the chip through P21 and set the SW10 switch to ON, you have to have the USB cable plugged in. If you leave the USB cable unplugged the leakage is due to the SWD lines and the reset line going from the nRF5 to the Segger Jlink chip are undefined. Also the IC switches that is used to disconnect the nRF5 chip from the rest of the board are floating/undefined.

    If SW10 is in the OFF position, the current going into P21 will be powering the whole board (and the USB can be unplugged) including the LEDs and the Segger chip, and you will get a high reading. But then you can measure current going through P22 (cut SB40) with the ampere meter, which will only be the current going to the nRF chip.

    Could you try flashing the ble_app_pwr_profiling example in the SDK? It starts in system OFF mode and does not initialize any LEDs or logging.

  • Hi Stan

    Thank you for your reply.


    I've flashed the ble_app_pwr_profiling for the PCA10056 out of the box as you said. No USB cable connected, SW10 to OFF position, SW6 to default.
    The board is powered by 3.3V attached to P21. I've measured a constant current of 3.2mA. I flashed then the softdevice again (because i did a full erase before) and then the current was a few uA as expected.

    Do you have a low power example where I can test our (custom) hardware without any needed button configuration?

  • You should be able to use the same pwr_profiling application for testing you custom board with BLE, if you remove the button dependencies in the main function. The example starts advertising when you push button 1, but you can easily bypass this check. Something like this:

    int main(void)
    {
        timers_init();
    
        power_management_init();
    
        ble_stack_init();
    
        gap_params_init();
        gatt_init();
        qwr_init();
    
        connectable_adv_init();
        service_add();
    
        advertising_init();
        advertising_start();
    
        // Enter main loop.
        for (;;)
        {
            idle_state_handle();
        }
    }

Reply
  • You should be able to use the same pwr_profiling application for testing you custom board with BLE, if you remove the button dependencies in the main function. The example starts advertising when you push button 1, but you can easily bypass this check. Something like this:

    int main(void)
    {
        timers_init();
    
        power_management_init();
    
        ble_stack_init();
    
        gap_params_init();
        gatt_init();
        qwr_init();
    
        connectable_adv_init();
        service_add();
    
        advertising_init();
        advertising_start();
    
        // Enter main loop.
        for (;;)
        {
            idle_state_handle();
        }
    }

Children
No Data
Related