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

Low power ESB Tx nRF52832 nrf_pwr_mgmt_run

Using existing examples in SDK13, I prepared ADC sampling app which works fine in ESB TX mode. Works well sending frames at 10ksps, and I can also put it to 'standby mode' by remote command from RX, when it wakes up on RTC every 2s, 'feeds the dog', sends a dummy frame (so Tx is able to receive a command from Rx)

What I have to do, is to get Low Power consumption in 2 seconds idle period. What is the best way to reduce currentt and keep only RTC running?

I give it long SAADC timer value before trying to sleep or even disable it - no effect. there is NRF_TIMER_CC_CHANNEL used and PPI_channel: timer compare event triggering sample task - I didn't touch it.

There isn't any usual hardware defined, which might request HF clock running (eg.UART) I disable HFCLK: NRF_CLOCK->TASKS_HFCLKSTOP = 1; and reeanable it on RTC interrupt

-do I have to disable the radio with nrf_esb_disable() before sleep and re-eanable it after NRF_CLOCK->TASKS_HFCLKSTART = 1; on RTC interrupt?

I tried to put device to sleep with __WFE(); __SEV(); __WFE(); sequence I try to call nrf_pwr_mgmt_run(). No matter what I do, I always end up with 2mA current or slightly less with NRF_POWER->DCDCEN = 1

with applying: nrf_drv_saadc_uninit() fix suggested here the app draws 0.8mA but does not wake up on RTC.

Please provide me any suggestions. Thanks in advance! Tom

  • Hi Tom,

    Why nrf_drv_saadc_uninit has anything to do here ?

    You can simply use the RTC and put the CPU to sleep as you were doing, with __WFE(); __SEV();__WFE();

    Please try to test and verify that you have low current (few uA) with the example\peripheral\rtc example.

    Note that you may need to power reset the device after you program it so that it gets out of debug mode to have low current consumption.

Related