Hi all,
I'm working on optimizing the power consumption on my nRF52840 DK and need some guidance. Currently measuring ~5µA average idle current via PPK2, but I need to reduce this further for my application.
IMAGE:

Current Configuration:
My prj.conf includes these power management settings:
CONFIG_LOG=n CONFIG_PM_DEVICE=y CONFIG_PM_DEVICE_RUNTIME=y CONFIG_PM_CPU_OPS=y CONFIG_POWER_DOMAIN=y CONFIG_POWEROFF=y CONFIG_BT_TRANSMIT_POWER_CONTROL=y CONFIG_BT_CTLR_TX_PWR_ANTENNA=-10 CONFIG_PM_S2RAM=y # Disabled peripherals CONFIG_I2C=n CONFIG_SPI=n CONFIG_PWM=n CONFIG_ADC=n CONFIG_CONSOLE=n CONFIG_UART_CONSOLE=n CONFIG_AUDIO=n CONFIG_SERIAL=n CONFIG_SENSOR=n # BLE connection parameters CONFIG_BT_PERIPHERAL_PREF_MIN_INT=800 CONFIG_BT_PERIPHERAL_PREF_MAX_INT=800 CONFIG_BT_PERIPHERAL_PREF_LATENCY=5 CONFIG_BT_PERIPHERAL_PREF_TIMEOUT=1500 CONFIG_BT_GAP_AUTO_UPDATE_CONN_PARAMS=y
Device tree overlay disables unused peripherals:
&adc { status = "disabled"; };
&uart0 { status = "disabled"; };
&i2c0 { status = "disabled"; };
&i2c1 { status = "disabled"; };
&pwm0 { status = "disabled"; };
&spi1 { status = "disabled"; };
&spi2 { status = "disabled"; };
&qspi { status = "disabled"; };
&spi3 { status = "disabled"; };Questions:
- Power state control: Is there a way to force the CPU into a specific low-power state? I know
pm_state_force()existed, butCONFIG_PMhas been removed and the function is only available under#if defined(CONFIG_PM) || defined(__DOXYGEN__)inpm.h. - System poweroff with RTC wakeup: Can I use
sys_poweroff()with the internal RTC timer as a wakeup source/interrupt? - PM_S2RAM effectiveness: Does enabling
CONFIG_PM_S2RAMmake S2RAM the preferred power state when the system goes idle?
Additional concerns:
- What could be causing current spikes during idle?
- Are there other configuration options I'm missing for ultra-low power?
Notes:-
- no external hardware other than ppk ii used
- using k_sleep(K_FOREVER); inside main loop to put cpu in idle mode.
- I am using ble
thanks,





