Power Management
Introduction
To minimize power consumption, the device supports power management in multiple power modes, including active mode, IDLE mode, sleep mode, and ultra deep sleep mode. The relationship between different power modes is shown in the figure below.
- Cold Boot: Start the MCU from power-off or reset status. Current configuration and data are discarded. Program processing begins again with the initial values.
- Warm Boot: Restart the MCU from sleep state. Program processing starts once again where retentive configuration and data are retained.
- Check Warm Boot Flag: Whether to enter the warm boot can be determined by the warm boot flag in the SOFTWARE_REG1[5] register.
The possible transitions between different power modes are shown in the table below.
Current Mode | Transition Action | |||
---|---|---|---|---|
Enter Active | Enter IDLE | Enter Sleep | Enter Ultra Deep Sleep | |
Active |
WFI/WFE |
AON_SLP_CTRL[0] |
AON_SLP_CTRL[0] |
|
IDLE |
IRQ |
|||
Sleep |
Sleep Wakeup Source IRQ |
|||
Ultra Deep Sleep |
Ultra Deep Sleep Wakeup Source IRQ |
The table below displays an outline of the supported power modes and available features. In general, for each power mode, the lowest power configuration is set as the system default, with non-essential clocks and peripherals being deactivated. After that, software can selectively activate features as needed. The power management in different power modes for different modules is shown as follows.
Item | Software-configurable Power Modes | Holding Reset Pin | |||
---|---|---|---|---|---|
Active | IDLE | Sleep | Ultra Deep Sleep | ||
CPU | Active | Off | Off | Off | Off |
Flash | On | Standby | Off | Off | Off |
SRAM | On | On | Retention | Off | Off |
Radio | Available | Available | Off | Off | Off |
Supply system | On | On | Off | ||
Current | 2.6 μA | 1.9 μA | 0.2 μA | ||
Register retention | Full | Full | No | No | No |
HFXO_32M | Available | Available | Off | Off | N/A |
HFRC_192M | Available | Available | Off | Off | N/A |
LFXO_32K | Available | Available | Available | Available | N/A |
LFRC_32K | Available | Available | Available | Available | N/A |
GPIO | Available | Available | Off | Off | Off |
AON IO | Available | Available | Available | Available | Off |
MSIO | Available | Available | Available | Available | Off |
I/O state retention | Available | Available | Available | Available | N/A |
Timer | Available | Available | Off | Off | Off |
Dual Timer | Available | Available | Off | Off | Off |
PWM | Available | Available | Off | Off | Off |
AON_WDT | Available | Available | Available | Available | Off |
RTC | Available | Available | Available | Available | Off |
SLP TIMER | Available | Available | Available | Available | Off |
UART | Available | Available | Off | Off | Off |
SPI | Available | Available | Off | Off | Off |
I2C | Available | Available | Off | Off | Off |
AES | Available | Available | Off | Off | Off |
TRNG | Available | Available | Off | Off | Off |
ADC | Available | Available | Off | Off | Off |
TEMP | Available | Available | Off | Off | Off |
LPCOMP | Available | Available | Available | Available | Off |
DMA | Available | Available | Off | Off | Off |
Wakeup on Bluetooth LE | Available | Available | Available | Off | N/A |
Wakeup on LPCOMP | Available | Available | Available | Off | N/A |
Wakeup on RTC | Available | Available | Available | Off | N/A |
Wakeup on SLP TIMER | Available | Available | Available | Available | N/A |
Wakeup on AON IO | Available | Available | Available | Available | N/A |
Wakeup on Reset Pin | Available | Available | Available | Available | Available |
Brown Out Detector(BOD Interrupt) | Active | Active | Off | Off | N/A |
Power On Reset (POR) | Active | Active | Active | Active | N/A |
Power Mode
Active Mode
By default, the system enters active mode after power-on reset. In active mode, the Cortex®-M4F is actively executing code. Active mode supports normal operations of the processor and all of the peripherals that are currently available. The radio functionality is available. The system clock can be any available clock source (refer to 表 30). The power management by the PMU in active mode is shown in the figure below. The I/O supply in active mode is from ANA_IO_LDO in order to gain a stronger drive capability.
IDLE Mode
In IDLE mode, the Cortex®-M4F core is in sleep mode so that no code is executed. However, the remaining system is fully available. All peripheral functionalities and the radio functionality are still available. The system clock can be any available clock source (refer to 表 30). The power supply is still applied to the Cortex®-M4F core logic so that it can immediately become active on a wakeup event and begin executing instructions. The power management by the PMU in IDLE mode is similar to that in active mode, as shown in 图 20.
Sleep Mode
In sleep mode, only the always-on (AON) domain is active. The Cortex®-M4F core is disabled and the radio functionality is not available. The AON domain peripherals are still available, such as AON_WDT, RTC, SLP TIMER and LPCOMP. A part of the memory unit is used as retention for storing data that needs to be retained during sleep. The state of the memory unit during sleep can be controlled by software as described in "SRAM Power Control".
The AON power is supplied from AON_LDO, and the retention memory power is supplied from RET_LDO. The DC-DC convertor, SYS_LDO and CORE_LDO will be powered off. Only low frequency clocks are available in the sleep mode. The I/O supply will be changed from ANA_IO_LDO to STB_IO_LDO in order to reduce power consumption during sleep mode.
The power management by the PMU in sleep mode is shown in the figure below.
The I/Os are latched with the value they are in before the system enters sleep mode. This configuration can be achieved by configuring the DPAD_LE_CTRL register.
- When DPAD_LE_CTRL.SLEEP = 0 and DPAD_LE_CTRL.WAKEUP = 1, the I/Os are latched during sleep and automatically unlocked after wakeup.
- If DPAD_LE_CTRL.WAKEUP = 0, the I/Os can manually be unlocked after wakeup by writing 1 to DPAD_LE_CTRL.WR and DPAD_LE_CTRL.APPLY_WR in order.
This function has been implemented in SDK. The default configuration in the SDK is DPAD_LE_CTRL.SLEEP = 0 and DPAD_LE_CTRL.WAKEUP = 0.
Ultra Deep Sleep Mode
Ultra deep sleep mode is the deepest power saving mode that the system can enter. In this mode, only the always-on (AON) domain is active with limited functionalities. The Cortex®-M4F core is disabled and the radio functionality is not available. All SRAMs are powered off, so the system restarts execution from cold boot when the system is woken up from ultra deep sleep mode. The power management by the PMU in ultra deep sleep mode is similar to that in sleep mode, as shown in 图 21. RET_LDO can be powered off in ultra deep sleep mode since all SRAMs are not retained.
The I/Os are latched with the value they are in before the system enters ultra deep sleep mode. This configuration is implemented in the same way as the sleep mode.
Low Power Mode Entry
IDLE Mode Entry
To transition from active mode to IDLE mode, a specific sequence of instructions is executed on the Cortex®-M4F core. First, specific bits in the Cortex®-M4F System Control Register must be set to determine the mode to enter. Refer to The Definitive Guide to Arm Cortex-M3 and Cortex-M4 Processors.
The Cortex®-M4F core can enter the IDLE state using one of the following two methods:
-
Execute a Wait-For-Interrupt (WFI) instruction.
-
Execute a Wait-For-Event (WFE) instruction.
Sleep Mode Entry
The sleep request can be initiated by configuring the AON_SLP_CTRL register. However, before the system enters sleep mode, it is necessary to ensure that the device is not in busy state and the remaining sleep time of the system is longer than the sleep threshold. When any high-speed peripherals/radio/DMA is working, or the Flash is being read/written/erased, it indicates the system is in busy state.
The integrated SDK implements pre-sleep state checks and automatic backup of peripheral configurations that need to be retained before the system enters sleep mode. I/O and MCU peripherals with retention do not need to be reconfigured when being woken up again, and the CPU that continues execution from warm boot goes into active mode.
A typical sleep mode entry procedure includes power mode check process and sleep enter process, as shown in the figure below. In the power mode check process, it is mainly to check whether the system can meet the conditions for entering the sleep mode. In the sleep enter process, the current system context should be saved, and then the system can request to enter the sleep mode.
In the sleep enter process, the following operations will be performed:
- When the PMU receives the sleep request, it will power off all the peripherals and Bluetooth LE Core. If the power- off is successful, the system is able to enter sleep mode. Otherwise, a sleep failure interrupt will be sent to the CPU.
- Then the system clock is stopped, and both the IO and SRAM will enter retention mode.
- Subsequently, the MCU core is powered off. The power modules including the DC-DC convertor, SYS_LDO, and CORE_LDO are turned off. High frequency clocks including HFXO_32M, CPLL_192M and HFRC_192M are turned off. The Brown-out Detector (BOD) and Flash are disabled. The I/O supply is changed from ANA_IO_LDO to STB_IO_LDO. After that the ANA_IO_LDO is turned off.
The Cortex®-M4F processor provides a register called the System Control Register (SCR) to allow developers to select between the IDLE mode and sleep mode. This register is at an address of 0xE000ED10, and can be accessed in C programming using the “SCB->SCR” symbol. However, the sleep mode implementation of the integrated SDK has nothing to do with this register. Arbitrary configuration of this register will cause unexpected errors.
Ultra Deep Sleep Mode Entry
The implementation of the system entering ultra deep sleep mode is similar to that in sleep mode. The difference is that more things will be closed in ultra deep sleep mode before requesting sleep than that in sleep mode. All SRAMs and peripherals will be powered off in order to minimize power consumption. In this mode, AON WDT and RTC will be disabled, and only the sleep timer and AON IO can wakeup the system. The slow frequency clock needs to choose RNG_OSC with div8 in order to minimize power consumption. These operations have been implemented in SDK. Since many states and registers are lost due to power loss, the system will wake up from a cold boot and reinitialize the whole system.
Timing Specifications
Symbol | Description | Min. | Typ. | Max. | Unit |
---|---|---|---|---|---|
TENT_IDLE | Entry time to IDLE mode | 4 | cycles | ||
TENT_SLEEP | Entry time to sleep mode | 15 | cycles | ||
TENT_ULTRA_DEEP_SLEEP | Entry time to ultra deep sleep mode | 15 | cycles |
Low Power Mode Exit
There are some events that will bring the processor back to the active mode from the IDLE mode. Because neither system state nor memory is lost, the system can quickly become active and continue to operate as before it went into the IDLE mode. The possible reasons to return to the active mode from the IDLE mode are:
- A reset
- An enabled interrupt is received by the NVIC
- An event is received by the NVIC
- A debug event is received from the DAP
Due to the Cortex®-M4F processor will be powered off and all registers except the AON domain will be lost in sleep mode and ultra deep sleep mode, the processor will start executing from the zero address after the system wakes up. In sleep mode, the state of the system and the memory can be retained so that the system can go back to operate as before it went into the sleep mode through a warm boot. However, the system can only be re-initialized through a cold boot after waking up from the ultra deep sleep mode. For detailed description of the warm boot and the cold boot, refer to “Startup Procedure”.
A range of wake-up sources can bring the system back to the active mode from the sleep mode and the ultra deep sleep mode. The difference of the ultra deep sleep mode is that other wake-up sources will be blocked except for AON GPIO peripherals and the sleep timer. Only unmasked wakeup sources can bring the SoC back to the active mode. For detailed description of the wake-up sources, refer to "Wakeup Source".