nrf52: high standby current on nrf52840 when using MCUBOOT + UART_ASYNC_API + PM_DEVICE #90466
Labels
area: UART
Universal Asynchronous Receiver-Transmitter
bug
The issue is a bug, or the PR is fixing a bug
platform: nRF
Nordic nRFx
priority: low
Low impact/importance bug
Uh oh!
There was an error while loading. Please reload this page.
Describe the bug
When using CONFIG_PM_DEVICE up to Zephyr v3.7 the standby current was about 6 uA by setting pm_device_action_run(uart0, PM_DEVICE_ACTION_SUSPEND) with or without any combination of CONFIG_UART_ASYNC_API and/or CONFIG_BOOTLOADER_MCUBOOT.
But since Zephyr v4.0 the standby current after pm_device_action_run(uart0, PM_DEVICE_ACTION_SUSPEND) is between 0.5mA and 1mA when using following config combination :
CONFIG_PM_DEVICE=y + CONFIG_UART_ASYNC_API=y + CONFIG_BOOTLOADER_MCUBOOT=y
If either CONFIG_UART_ASYNC_API=n or no MCUBOOT is used, the current is as expected.
To Reproduce
Use eg. the Nordic nRF52840DK board (-b nrf52840dk/nrf52840).
Use blinky sample
Add in prj.conf:
CONFIG_PM_DEVICE=y
CONFIG_UART_ASYNC_API=y
CONFIG_SERIAL=y
CONFIG_LOG=y
CONFIG_BOOTLOADER_MCUBOOT=y
Replace in main.c::main() the printk() statement by:
pm_device_action_run(DEVICE_DT_GET(DT_NODELABEL(uart0)), PM_DEVICE_ACTION_RESUME);
LOG_INF("LED state: %s\n", led_state ? "ON" : "OFF");
while (log_process()) ;
pm_device_action_run(DEVICE_DT_GET(DT_NODELABEL(uart0)), PM_DEVICE_ACTION_SUSPEND);
Expected behavior
The standby current should be about 6uA
Impact
The standby current is about 500uA ... 1000uA
Environment (please complete the following information):
Zephyr >= v4.0 (tested with v4.0 and v4.1)
The text was updated successfully, but these errors were encountered: