Power Management for an nRF54l15 custom board

Context:

  • VS Code
  • NCS 2.9
  • nRF54l15 custom board
  • Mac OS Sequoia15.5
  • peripheral_lbs sample project

Goal:

The goal of this project is to create a bluetooth beacon device that periodically advertises a custom payload and in between advertisements goes into a low power sleep state. This project is based on the NCS v2.9 sdk and toolchain starting with the peripheral_lbs sample project as the foundation. The final application is run on a custom board using the nRF54l15 chip, with the only current deviation from the auto-generated files being a change to enable the clock. The bluetooth beacon functionality has been completed using the ext_adv backend. The issue I am currently having trouble with is the implementation of power management for the nRF54l15 chip within NCS 2.9.

I would like the device to go into a low power state, lower than 5uA, in between advertisement events, however the current power consumption during sleep is closer to 90uA. I initially began by attempting to implement "CONFIG_PM" however that flag was automatically disabled as my board was missing the "HAS_PM" attribute. After further investigation as well as testing "CONFIG_PM" on the nrf54l15 dev-kit board files, the documentation seems to suggest that CONFIG_PM has been depreciated or replaced by system and device power control such as CONFIG_DEVICE_PM. After implementing the CONFIG_DEVICE_PM type flags, the power consumption during sleep did not appreciably change. 

Questions:

  • Can you explain how to implement power management on an nRF54l15 chip in NCS 2,9 or link relevant documentation on the implementation for reference in case something was missed?
  • Has the CONFIG_PM backend been deprecated in more recent iterations of NCS or has the backend not been created for the nRF54l15 chip within NCS 2.9?
  • Are the CONFIG_DEVICE_PM/CONFIG_PM_DEVICE_SYSTEM_MANAGED flags a replacement for CONFIG_PM or additional power management modules?
  • Are there additional steps required to enable power management on a custom board and if so can you link documentation?
  • Is k_sleep()/k_msleep() the most power efficient way to save power while idle between advertisements?
Related