Wakeup Source
In order to reduce power consumption, the system will enter sleep mode when it is idle. In sleep mode, the MCU will be powered off and only the functional modules in the AON area work. In this case, the SoC needs a wakeup source to wake the system up when it needs to work.
Currently the SoC supports multiple wakeup sources to wake the system up from sleep. Each wakeup source belongs to a different function and is independent of each other.
Sleep Wakeup
In sleep mode, the device can be woken up by one of the following modules:
- Bluetooth LE controller
- LPCOMP module
- RTC counter
- Sleep timer
- AON GPIO peripheral
- A reset
Ultra Deep Sleep Wakeup
In ultra deep sleep mode, the device can be woken up by one of the following modules:
- AON GPIO peripheral
- Sleep timer
- A reset
The system is reset when it is woken up from the ultra deep sleep mode.
Programming
The wakeup source can be enabled by configuring the MCU_WAKEUP_CTRL register. The wakeup sources will wake the MCU up as a wakeup event after the MCU enters the sleep mode. There are seven wakeup sources, as shown in the table below.
Bits | Field Name | Description | IRQ No. |
---|---|---|---|
0 |
SLP_TIMER |
Sleep Timer Wakeup |
#36 |
1 |
EXT |
AON IO Wakeup |
#37 |
2 |
SMS_OSC |
Bluetooth LE Timer Wakeup |
#35 |
3 |
RTC0 |
RTC Wakeup |
#39 |
4 |
COMP_RISE |
LPCOMP Rising Edge Wakeup |
#44 |
5 |
AON_WDT |
AON WDT Wakeup |
#38 |
6 |
COMP_FALL |
LPCOMP Falling Edge Wakeup |
#44 |
By reading the AON_SLP_EVENT register, developers can find out which wakeup source triggered the wakeup event. Writing 0 to the corresponding bit of the AON_SLP_EVENT register can clear the wakeup source event. For an external wakeup source event, developers need to disable the trigger source in the MCU_WAKEUP_CTRL register first, and then clear the event by writing 0 to the AON_SLP_EVENT register. Otherwise, because the trigger source is enabled, the event will be triggered again immediately after it is cleared.
Note that the AON_SLP_EVENT register should be cleared before entering sleep mode. Otherwise, the MCU cannot enter sleep mode.