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

How to minimise power consumption for transmitter example ?

Hello!!

I am using transmitter example on my custom board having 10 buttons. I want to minimise the power consumption as it is powered by coin cell. I have used below tutorial to add power management library to transmitter example. 

https://embeddedcentric.com/lesson-14-nrf5x-power-management-tutorial/

I am getting ~ 195uA on idle state and ~ 300uA while transmitting. I have also verified my custom board with ble_app_uart example and I am getting ~ 3uA on idle state and ~ 300 uA while advertising.

I will appreciate any response.

Thanks 

Parents
  • Hi,

    If you are referring to the radio when you say transmitting, this will have considerably higher current consumption than 300 uA while it is active in TX mode, see Current consumption: Radio.

    The average current consumption, and the current consumption in sleep mode will depend on the configuration of the radio activity interval and if any other peripherals are enabled/active.

    There is a lot of other tickets here on DevZone regarding optimization of current consumption. I would recommend that you use the search function and look through a few of these. If you are still not able to lower your current consumption, please include the following information in your response:

    • Which SDK version are you using?
    • Which chip/board/development kit are you using?
    • What do you use for current measurement?
    • Which example/application are you using, and have you made any modifications?

    Best regards,
    Jørgen

  • Hi,

    This example starts the HFCLK at the beginning of the application, and lets this run all the time. Did you stop the HFCLK before entering sleep mode? The HFCLK will not be stopped automatically when going to sleep if it has been started explicitly by triggering TASKS_HFCLKSTART. You can stop the HFCLK by triggering TASKS_HFCLKSTOP:

    NRF_CLOCK->TASKS_HFCLKSTOP = 1;

    The example also initializes the NRF_LOG module with UART backen enabled. You should disable this in your sdk_config.h file to get to the lowest possible power state:

    // <e> NRF_LOG_ENABLED - nrf_log - Logger
    //==========================================================
    #ifndef NRF_LOG_ENABLED
    #define NRF_LOG_ENABLED 0
    #endif

    Final things that can add to the idle current is the app_timer and BSP modules. These uses RTC (which again uses the LFCLK) and GPIOTE for handling button presses. 

    Best regards,
    Jørgen

  • Thanks Jørgen!!!

    I have added 

    NRF_CLOCK-> TASKS_HFCLKSTOP == 1;

    when the transmission is completed. I have achieved ~17uA. While transmitting it is ~ 250uA.  I want to achieve ~3uA. I tried to add in the main() function and it is ~1.2uA but when I start the transmission it again goes same i.e ~17uA when there is no transmission and ~250uA when there is transmission.   

    Also I have disabled the NRF LOG.

    Thanks

Reply
  • Thanks Jørgen!!!

    I have added 

    NRF_CLOCK-> TASKS_HFCLKSTOP == 1;

    when the transmission is completed. I have achieved ~17uA. While transmitting it is ~ 250uA.  I want to achieve ~3uA. I tried to add in the main() function and it is ~1.2uA but when I start the transmission it again goes same i.e ~17uA when there is no transmission and ~250uA when there is transmission.   

    Also I have disabled the NRF LOG.

    Thanks

Children
No Data
Related