Why is IMP001 current with power save enabled much higher than specced 5mA?

According to datasheet typical current with power save enabled must be 5mA. It varies a lot between 10mA and 100mA. Mostly around 15mA, but never 5mA. I measure using a multimeter. My code is as follows: imp.setpowersave(state). My april is powered with 2.85V on the 3V3 pins.

Powersave mode consumption depends on how busy the network is. The base station will wake all devices in 802.11 ps mode for every broadcast, and sadly this cannot be avoided - it’s just how 802.11 ps works. On really busy networks you may be at 70mA+ as the device will never be able to turn off the receiver.

The spec (which is actually more like 7-8mA not 5mA, so sounds like the datasheet needs an update) is on a totally silent network - no broadcasts - and taken as along term average (over a period of at least 10 seconds).

Note also that any peripherals configured (including blinkup being enabled) will increase power usage as some peripherals will lock the bus clocks in the STM32 and hence result in higher MCU power consumption.

Not that this explains all the power you’re seeing, but powering an April via the 3.3v pins without removing the DCDC will also result in additional leakage through the DCDC chip.

Thanks for the comment. Does IMP wake for broadcasts of wifi networks it is not configured for?

That’s defined by the wifi chip, not our code. Multiple wifi networks on the same channel do cooperate on the air interface level (eg RTS/CTS) so it’s possible that it will wake for traffic on other networks but I don’t know for sure.

What is certain though is that if the other networks (on the same channel, or on adjacent but overlapping channels) are causing beacons on the associated channel to be missed (because they’ve been trampled) then the wifi chip will exit power save mode to re-lock to the associated network’s beacons.

PS mode essentially turns the receiver off between beacons, and looks for a data indication in the beacon frame. If it does not see the beacon during its precalculated wake interval, it will then listen continuously until it regains sync.