| .. _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. |