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

System ON (sleep mode) wake on RTC

Hi all,

I'd appreciate some help on the following problem:

I'm trying to put a custom hardware into a low power sleep mode from which I want to wake up regularly.  I’m NOT using a soft device. I’m using a PPK2 to measure current. And, yes, I have already read most of the related posts in this forum.

When I go to sleep I do the following steps:

  1. Shut off all peripherals.
  2. Set all I/O to a low power state (i.e. mostly “disconnected inputs” except for some pins that need to be outputs to prevent external circuitry from floating away).
  3. Disable clocks
  4. Call NRF_POWER->SYSTEM_OFF=1(for SYSTEM OFF sleep) or “_WFE…” (for SYSTEM ON sleep)

In the first case I measure a current consumption of 0,87uA which is great.

However, as I understand it is not possible to wake-up on timer in this mode (Correct ?). Consequently I need to sleep in “SYSTEM ON” mode.

Unfortunately the current here is stuck at, about, 6.5mA no matter what I try. Reading the datasheet I believe it should be possible to reach a figure below 10uA. Correct ?

Since the consumption is fine in “SYSTEM OFF” mode I doubt that the excessive current is drawn by the board itself.

Any ideas ?

Cheers

Eric

  • Hi Eric.

    However, as I understand it is not possible to wake-up on timer in this mode (Correct ?).

    You are right, only the below events can be used to wakeup the chip from systemoff mode.

    The DETECT signal, optionally generated by the GPIO peripheral
    The ANADETECT signal, optionally generated by the LPCOMP module
    The SENSE signal, optionally generated by the NFC module to “wake-on-field”
    A reset

     

    Unfortunately the current here is stuck at, about, 6.5mA no matter what I try. Reading the datasheet I believe it should be possible to reach a figure below 10uA. Correct ?

     That depends, which Timer are you using as a wakeup source? (Timer or RTC) Timer works on hfclk (64MHz) and hence it will keep that clock active even in sleep if you configure that as a wakeup source. RTC is a better choice here as it works with LFCLK (32KHz) and lfclk consumes way less power. Yes, it should be possible to get 10uA of average current with RTC configured as wakeup source with most of the peripherals turned off in system idle mode.

  • Hi Susheel,

    Thanks for your fast response.  Problem solved. I have now about 2.3uA while sleeping in SYSTEM_ON mode ! Unfortunately I do not fully understand what made the trick. I think what happened is this; After I posted I discovered that I COULD reach the low consumption if I called my sleep function first thing in main(). Obviously there was something that was not correctly switched off when I previously called it "later" in my code. However, I did this check at an earlier stage without noticing any difference . So what had changed ? The only thing I can think of is that I removed the USE_FPU compiler directive. Does anyone think this this could be a plausible cause ?

    Any how, I'm happy to be able to move on (for now ..)

    \Eric

Related