Hi support team,
We are using nRF9151 with NCS v2.7.0 for our IoT product. During power optimization, we observed:
-
Even after disabling UART RX interrupt using
uart_irq_rx_disable()
, the sleep current does not reduce. -
We confirmed CONFIG_PM_DEVICE=y, CONFIG_PM_DEVICE_RUNTIME=y, and other PM settings are enabled.
-
Disabling logging or the AT Host library does reduce current significantly, but we need the AT Host for modem communication.
Our Current Understanding:
-
The AT Host library keeps UART RX active via continuous reception tasks to handle AT command responses and URCs.
-
Calling
uart_irq_rx_disable()
only disables the interrupt but does not stop RX DMA or UARTE reception, so the peripheral remains fully powered. -
We tried using:
pm_device_action_run(uart_dev, PM_DEVICE_ACTION_SUSPEND);
But we are unsure if the nRF91 UARTE driver implements the required PM hooks to allow suspend/resume.
Current Measurements:
-
Average current in PSM with UART active: ~630 µA
-
Target sleep current: <10 µA
When we disable the AT Host or deinitialize UART completely, we observe significantly lower sleep current, but we lose modem communication capability.
Our Goal:
We want to:
-
Fully disable or suspend UART (UARTE) during deep sleep to achieve ~4–10 µA sleep current.
-
Reinitialize or resume it before the next modem communication cycle.
Questions:
-
Does the nRF91 UARTE driver support PM device suspend/resume using
pm_device_action_run()
in NCS v2.7.0? -
If not, is there any recommended approach to fully deinitialize UART while using AT Host, and reinitialize it safely before modem communication?
Modem firmware: 2.0.1
NCS Version : 2.7.0