I am seeing excessive current in System ON, Idle mode. I am using WFI(). I have verified that operation is being held at that instruction by using GPIO pin. Idle mode is exited by either the RTC or GPIOTE PORT interrupt. LOWPWR mode is enabled.
nrf_gpio_pin_clear(PIN_TESTPOINT19);
__WFI(); // Enter sleep mode until an interrupt is received. RTC/GPIOTE interrupts are enabled
nrf_gpio_pin_set(PIN_TESTPOINT19);
Scenario 1: Wake up every second, do some housekeeping, go back to sleep
Idle current: <200 uA (too low for decent measurement) Run current: ~3.5 mA
Scenario 2: Wake up every second, go into ESB receive mode for 6 ms, then go back to sleep nrf_esb_disable() is explicitly called before sleep.
Idle current: ~12 mA
Run current: ~27 mA
Tried adding NRF_RADIO->POWER = 0 after nrf_esb_disable call completes. No effect. Also tried using __SEV()/__WFE()/__WFE() instead of __WFI()
Why is the Idle Current in Scenario 2 so high? It looks like something else needs to get shut off. I have tried to power down Timer2, but that seems to kill the ESB. This might account for a few hundred microamps, but there are still several unacounted for milliamps. I have power-cycled the system, so I know that I am not in DEBUG mode. Also, the current in Scenario 1 verifies that setting.
Any suggestions?