When using the adafruit feather nrf52840, the lowest I can seem to get power usage is around 400uA (including with the boards/nordic/poweroff sample).
This is my device overlay file:
&radio {
zephyr,pm-device-runtime-auto;
};
&gpio0 {
status = "okay";
label = "GPIO_0";
sense-edge-mask = <0xffffffff>;
};
&gpio1 {
status = "okay";
label = "GPIO_1";
sense-edge-mask = <0xffffffff>;
};
/{
zephyr,user {
latch-en-gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>;
wp-gpios = < &gpio0 8 GPIO_ACTIVE_LOW>;
hold-gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
};
leds {
compatible = "gpio-leds";
blue_led: led_0 {
gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>;
label = "Blue LED (D7)";
};
};
};
&i2c1 {
lis2dh@18 {
compatible = "st,lis2dh";
reg = <0x18>;
label = "LIS2DH";
irq-gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>, <&gpio0 30 GPIO_ACTIVE_HIGH>;
disconnect-sdo-sa0-pull-up;
};
};
&ieee802154 {
status = "disabled";
};
&pinctrl {
spi2_default: spi2_default {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 21)>,
<NRF_PSEL(SPIM_MOSI, 0, 20)>,
<NRF_PSEL(SPIM_MISO, 0, 24)>;
};
};
spi2_sleep: spi2_sleep {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 21)>,
<NRF_PSEL(SPIM_MOSI, 0, 20)>,
<NRF_PSEL(SPIM_MISO, 0, 24)>;
low-power-enable;
};
};
};
&spi0 {
status = "disabled";
};
&spi1 {
status = "disabled";
};
&spi3 {
status = "disabled";
};
&qspi {
status = "disabled";
};
&rng {
status = "disabled";
};
&temp {
status = "disabled";
};
&usbd {
status = "disabled";
};
&i2c0 {
status = "disabled";
};
&uart0 {
status = "disabled";
};
&wdt {
status = "disabled";
};
And my prj.conf:
# General
CONFIG_HEAP_MEM_POOL_SIZE=65536
# power management & savings
#CONFIG_PM=y # should not work on nrf52840
CONFIG_PM_DEVICE=y
CONFIG_PM_DEVICE_RUNTIME=y
CONFIG_PM_DEVICE_SYSTEM_MANAGED=y # only in zephyr 3.7.0
CONFIG_SERIAL=n
CONFIG_UART_CONSOLE=n
# some more low power
CONFIG_FLASH=n
CONFIG_SPI=y
CONFIG_I2C=y
CONFIG_USB_DEVICE_STACK=n
CONFIG_BOOT_BANNER=n
CONFIG_CONSOLE=n
CONFIG_DEBUG=n
# enable low freq clocks
#CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=y
#CONFIG_CLOCK_CONTROL_NRF_K32SRC_50PPM=y
CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y
CONFIG_CLOCK_CONTROL_NRF_K32SRC_500PPM=y #this will not be valid for all devices
# lower tick rate
#CONFIG_SYS_CLOCK_TICKS_PER_SEC=100
# Logging
CONFIG_LOG=y
CONFIG_USE_SEGGER_RTT=y
CONFIG_LOG_BACKEND_RTT=y
CONFIG_LOG_BACKEND_UART=n
# Bluetooth
CONFIG_BT=y
## Sensing
CONFIG_BT_OBSERVER=y
CONFIG_BT_SCAN=y
CONFIG_GPIO=y
CONFIG_ADC=y
CONFIG_ADC_NRFX_SAADC=y
## Broadcasting
CONFIG_BT_DEVICE_NAME="s_beacon"
CONFIG_BT_BROADCASTER=y
CONFIG_BT_PERIPHERAL=y
400uA still seems quite high to me. Is there anything I haven't thought of?