A N 7 2 5
16
Rev. 0.1
5.2.6. Configuring a Device for Power Mode 8
PM8 is the lowest power mode where all clocks are stopped and only the PM8 peripherals are available. The RAM
banks do not have retention enabled by default, so firmware must enable each bank to retain data through PM8.
For most applications, it is recommended to enable retention for all RAM banks, but the specific bank containing
the stack pointer must be enabled to ensure proper code operation on an exit from PM8. See “5.5. Retention RAM”
for more information on changing the location of the stack pointer.
To configure a device to run in PM8:
1. Enable the clocks to peripherals that will be configured by firmware.
2. Enable PM8 mode by setting the PMSEL bit to 1 in the CLKCTRL CONFIG register.
3. Set up the desired PMU wakeup source.
4. Switch the AHB clock to the 20 MHz Low Power Oscillator and adjust the flash read timing as necessary.
5. Enable the retention mode of RAM banks needed by the application (all eight banks recommended for
most applications).
Note:
To properly execute code after exiting PM8, the stack pointer must be located in a RAM bank with retention enabled.
6. Set the pins in the lowest power configuration for this mode.
7. Set all LDOs to 1.5 V for VBAT between 1.8 to 2.9 V and to 1.9 V for VBAT between 2.0 to 3.8 V output.
8. (Optional) If VBAT is between 2.0 to 3.8 V, set the VBAT Monitor threshold to the high setting.
9. Set up the low power peripherals as desired (RTC0, ACCTR0, LCD0, etc.).
10. (Optional) If using the RTC in low-frequency oscillator mode, enable the RTC0 module using the steps in
the Reference Manual. If using the RTC in crystal mode, the recommended initialization sequence is:
a. Disable RTC0 automatic gain control (AGC) and enable the bias doubler.
b. Set up the RTC0 in crystal mode using the list of steps in the Reference Manual.
c. (Optional) Enable the charge pump (see Step 10).
d. Enable RTC0 automatic gain control and disable the bias doubler.
11. (Optional) Configure and enable the charge pump:
a. Enable the low power charge pump monitor in the PMU.
b. Enable the RTC0 clock to other modules (CLKOEN = 1 in the RTC0 module).
c. Enable the low power charge pump monitor as a reset source.
d. Set the low power charge pump load to the appropriate value for the application. See “5.3. Low Power
Mode Charge Pump” for more information.
e. Enable the low power charge pump and enable it as a PMU wake up source.
f. Enable the low power charge pump interrupt.
12. Disable all undesired reset sources.
Note:
The Watchdog Timer (WDTIMER0) and PVTOSC0 modules will behave as if a power-on reset occurred after exiting
PM8, so disabling the Watchdog Timer as a reset source will prevent unwanted resets.
13. Disable the SysTick timer.
14. Disable all unused peripherals.
15. (Optional) Disable the clocks to all unused peripherals. Entering PM8 stops all clocks, so this step is not
necessary for this mode.
16. Clear the PMU wakeup flags.
17. Enable the interrupts for the PMU wakeup source (enabled in Step 3).
18. Set the SLEEPDEEP bit in the core.
19. Execute the DSB, ISB, and WFI or WFE instructions. For SiM3L1xx devices, WFI and WFE have the
same behavior.