nRF9151 use sys_poweroff()

I am working on a project with the nRF9151 chip. In this chip, I am using the LTE modem in eDRX mode.

Apart from eDRX mode, I also want to put the MCU into sleep mode.

I have tried several approaches:

  1. The simplest option – using k_sleep();.

  2. The second option – using pm_device_action_run(dev, PM_DEVICE_ACTION_TURN_OFF);

    • Here, dev refers to any peripheral device.
    • However, I couldn't figure out how to put the entire processor into sleep mode. Is this possible?
  3. The third option – I tried using the pm_state_force() function, but it is not available for this processor.

    • The error I get is:
      bash
      # CONFIG_PM was assigned the value y, but got the value n. Missing dependencies:
      # SOC_SERIES_EFR32BG22 || SOC_SERIES_EFR32BG27 || SOC_SERIES_EFR32MG24 || (SOC_SERIES_DA1469X && SOC_FAMILY_RENESAS_SMARTBOND) || (SYS_CLOCK_EXISTS && HAS_PM)

In both the first and second approaches, I did not see any difference in current consumption.
To measure power consumption, I am using PPK2 (Power Profiler Kit 2).

I found a reference in the documentation mentioning the sys_poweroff() function.
Using this function reduced power consumption.

However, I encountered issues with waking up from this mode.
To exit power-off mode, I use a GPIO interrupt, which works fine.

However, I want to use the RTC timer. I tried setting up an RTC-based interrupt,
but it does not trigger from power-off mode.

I haven't found an example of how to correctly use this function on this processor.
Do you have any information or an example of how to use it properly?

Related