Hello,
I’m working on a Zephyr-based application using the nRF5340 where I need to optimize power consumption. The intended behavior is:
-
The device should stay in a low power mode as much as possible.
-
Bluetooth (BLE) should always remain ON, ready to transmit data when available.
-
The UART interface is mostly idle/asleep, and should wake only when new data arrives.
-
Once UART receives data, it should immediately trigger BLE transmission without losing any data.
My questions are:
-
Which power mode(s) in the nRF5340 would allow BLE to stay active while letting other peripherals like UART go into sleep mode?
-
What is the best way to configure the UART (e.g., via interrupts, DMA, or low-power UART options) so that it wakes the CPU efficiently and avoids data loss at high baud rates (e.g., 921600)?
-
Are there any recommended Zephyr APIs or Nordic-specific drivers to achieve this kind of wake-on-UART behavior while maintaining active BLE connections?
-
Is it possible to transition between PM_STATE_RUNTIME_IDLE, SUSPEND_TO_IDLE, or any other state automatically based on peripheral activity?
Any insights, example implementations, or configuration suggestions would be greatly appreciated!
Thank you.