Can't get ultra-low power consumption during sleeps in SYSTEM ON mode

It is possible to get ultra-low power (e.g. microamps instead of
milliamps) consumption for BLE with advertisements full RAM retention
while the application sleeps (>99% of the time) in SYSTEM ON mode
using the standard loop

for (;;)
{
    nrf_pwr_mgmt_run();
}

?

As an example, I used examples/ble_peripheral/ble_app_blinky/main.c as
a test. I disabled the LED stuff in it to make sure I didn't get any
undesired current draw from any LEDs, and I don't press any of the
buttons either.

With these source mods, I measured -- using a multimeter connected to
the nRF current measurement pins P22 and PCB trace in SB9 severed --
3.6mA @ 3.3V on our PCA10040 (rev 1.2.4, 2019.8) board when the above loop
was executing. That's pretty high, IMO.

I know the radio lives its own life behind the scenes, so to speak,
but isn't this whole setup supposed to consume current at least three
orders of magnitude LESS than 3.6mA during sleep ???

No scan or connection is made to ble_app_blinky, so the radio only
advertises while the application merrily sleeps.

Shouldn't this lead to a power consumption in the microamp range?

Our actual application runs on our custom boards and does a lot more than ble_app_blinky,
but use a similar sleep loop since it spends most of its time sleeping to save battery
life.

(We're using SDK 15.0.0 and softdevice S132.)

--Mathias Båge, software developer

Related