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:
-
The simplest option – using
k_sleep();
. -
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?
- Here,
-
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)
- The error I get is:
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?