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

Power Down Options

Hi,

With the following program running, how can I achieve the lowest power consumption between timer events:

  • nRF Timer is running with the HF crystal requested
  • at each timer interrupt, TWI is used for reading data
  • after a couple of timer interrupt, one adv packet is sent (advertising_start is inside the timer handler)
  • this loop continues
  • one nRF pin is providing power for another chip, however I can power that from a battery too if it can help putting nRF in a lower power mode

I see that in examples generally power_manage() is used, but with the above blocks running, is there any power down modes even possible?

Thanks!

Parents
  • Hi,

    You always want to sleep as much as possible to reduce current consumption, start off by calling sd_app_evt_wait() whenever your application is done processing, eg in main.

    while(1)
    {
        sd_app_evt_wait();
    }
    

    There's no problem with sleeping with the code you describe above, it will wake up "automatically" whenever there is an interrupt.

    Before going to sleep you should turn off unused peripherals.

    You should also consider if you need to use the TIMER module, are the TWI events so frequent or require so high precision that it is not possible to use RTC from the Low Frequency clock?

    The main difference between TIMER and RTC (Real-time counter) is that:

    • TIMER uses the high-frequency clock source (HFCLK, 16 MHz), which means better resolution (62.5 ns) and higher power consumption.
    • RTC uses the low-frequency clock source (LFCLK, 32 KHz), which means less resolution (~30 us) and lower power consumption.

    Common practice is to route the power separately to each device, preferably using a star configuration from a common capacitor bank (each device has its own VDD branch from the reservoir), this alleviates voltage drop from high loads. In other words each device becomes independent of the other devices.

    Best regards,

    Øyvind

Reply
  • Hi,

    You always want to sleep as much as possible to reduce current consumption, start off by calling sd_app_evt_wait() whenever your application is done processing, eg in main.

    while(1)
    {
        sd_app_evt_wait();
    }
    

    There's no problem with sleeping with the code you describe above, it will wake up "automatically" whenever there is an interrupt.

    Before going to sleep you should turn off unused peripherals.

    You should also consider if you need to use the TIMER module, are the TWI events so frequent or require so high precision that it is not possible to use RTC from the Low Frequency clock?

    The main difference between TIMER and RTC (Real-time counter) is that:

    • TIMER uses the high-frequency clock source (HFCLK, 16 MHz), which means better resolution (62.5 ns) and higher power consumption.
    • RTC uses the low-frequency clock source (LFCLK, 32 KHz), which means less resolution (~30 us) and lower power consumption.

    Common practice is to route the power separately to each device, preferably using a star configuration from a common capacitor bank (each device has its own VDD branch from the reservoir), this alleviates voltage drop from high loads. In other words each device becomes independent of the other devices.

    Best regards,

    Øyvind

Children
No Data
Related