I'm working on putting our system into low power idle mode. We use MyNewt to build our application. In order to get to the lowest power, I disabled BLE and all our drivers except UART for console and debug messages. We have a command that can shut off a bunch of stuff and call __WFE and __SEV(). The code is tested on a nrf52DK(PCA10040 1.2.4, 2018.23). I checked the current on P22 on the board and the measurement was 270uA @ 3.8V from external power supply. This is far away from what your data sheet described. I have checked the setting everywhere and can not figure out what else I need to turn off. Can you please provide some suggestion where I should check?
ARM typically calls waiting in WFE "sleep" and Nordic stays consistent with this terminology.
Waiting in sleep mode is not sufficient to get down to < 10 uA power draw.
You need to:
1.Disable all of the peripherals possible, except for the peripheral that is going to wake you up (GPIO pin? timer/RTC?)
2. halt the CPU to 'standby' - the CPU clock actually stops.
Then you can start shaving down the uA draw currents (what did you leave on? Are all the GPIO pins set to their minimal power? etc.)
except UART for console and debug messages.
UART peripheral requires HFCLK and if you run HFCLK with the 64MHz crystal current consumption will be ~250uA.
Thanks for the info. It looks like my HFCLK is still up and running. One thing I didn't mentioned in my original post is I did disable UART before WFE. Is there a way to check which peripheral is still using HFCLK?
Could you try to stop the UART transmitter/receiver, before disabling it ?
NRF_UARTE0->TASKS_STOPRX = 1;
NRF_UARTE0->TASKS_STOPTX = 1;
Sorry for late reply. I was out of office. I already tried this. It didn't work. I still see the current is >270uA.
Any other suggestions?