87 lines
2.8 KiB
ReStructuredText
87 lines
2.8 KiB
ReStructuredText
|
.. _stm32-pm-serial-wakeup-sample:
|
||
|
|
||
|
STM32 PM Serial wakeup
|
||
|
######################
|
||
|
|
||
|
Overview
|
||
|
********
|
||
|
|
||
|
This sample is a minimum application to demonstrate serial wakeup functionality
|
||
|
in low power context.
|
||
|
|
||
|
.. _stm32-pm-serial-wakeup-sample-requirements:
|
||
|
|
||
|
Requirements
|
||
|
************
|
||
|
|
||
|
1. The board should support enabling PM. For a STM32 based target, it means that
|
||
|
it should support a clock source alternative to Cortex Systick that can be used
|
||
|
in core sleep states, as LPTIM (:dtcompatible:`st,stm32-lptim`).
|
||
|
|
||
|
2. The serial port used by the shell should be configured, using device tree, to
|
||
|
be a functional wakeup source:
|
||
|
|
||
|
- Clocked by an oscillator available in Stop mode (LSE, LSI) or an oscillator capable
|
||
|
that can be requested dynamically by device on activity detection (HSI on STM32WB).
|
||
|
- Matching oscillator sources should be enabled
|
||
|
- If LSE is selected as clock source and shell serial port is a LPUART current speed
|
||
|
should be adapted (9600 bauds)
|
||
|
- Port should be set as "wakeup-source"
|
||
|
|
||
|
Note: Using HSI clock is a specific
|
||
|
|
||
|
Building and Running
|
||
|
********************
|
||
|
|
||
|
Build and flash this sample as follows, changing ``nucleo_wb55rg`` for a board
|
||
|
configured to be compatible with this sample.
|
||
|
|
||
|
.. zephyr-app-commands::
|
||
|
:zephyr-app: samples/boards/stm32/power_mgmt/serial_wakeup
|
||
|
:board: nucleo_wb55rg
|
||
|
:goals: build flash
|
||
|
:compact:
|
||
|
|
||
|
After flashing, the shell is enabled and device enter sleep mode.
|
||
|
User is able to wake up the device by typing into the shell
|
||
|
|
||
|
PM configurations
|
||
|
*****************
|
||
|
|
||
|
By default, :kconfig:option:`CONFIG_PM_DEVICE` and :kconfig:option:`CONFIG_PM_DEVICE_RUNTIME`
|
||
|
are enabled, but user can also deactivate both or former to see each configuration in play.
|
||
|
|
||
|
Debugging
|
||
|
*********
|
||
|
|
||
|
:kconfig:option:`CONFIG_DEBUG` could be enabled to allow debug. Note that debug mode prevents
|
||
|
target to reach low power consumption.
|
||
|
Also note that after debug mode has been disabled, target should also be powered off in order
|
||
|
to get back to normal mode and reach low power consumption.
|
||
|
|
||
|
PM measurements on stm32l562e_dk using stm32l562e_dk PM shield
|
||
|
**************************************************************
|
||
|
|
||
|
Plug Power shield
|
||
|
Plug ST-Link
|
||
|
Set JP4 To 5V ST-Link
|
||
|
Set SW1 to PM_SEL_VDD
|
||
|
STM32Cube PowerMonitor settings to be applied:
|
||
|
|
||
|
- Sampling Freq: max
|
||
|
- Functional Mode: High
|
||
|
|
||
|
Optimal configuration for low power consumption
|
||
|
***********************************************
|
||
|
|
||
|
In order to reach lower power consumption numbers following parameters should be taken
|
||
|
into account:
|
||
|
|
||
|
- Use a LPUART instead of a basic U(S)ART node
|
||
|
- Chose LSE as clock source
|
||
|
- Ensure no other oscillators are enabled (disable HSI, ...)
|
||
|
- Provide "sleep" pinctrl configuration to other uart nodes.
|
||
|
- Disable Debug mode
|
||
|
|
||
|
With all these conditions matched, one can reach 10uA on stm32l562e_dk with this sample.
|