睡眠唤醒过程¶
睡眠唤醒过程梳理¶
1. 睡眠流程¶
睡眠流程指MCU在无操作一段时间后,进入低功耗状态的完整过程,核心包含低功耗状态分类与分阶段睡眠处理逻辑。
1.1 低功耗状态分类¶
低功耗状态分为 deepsleep 和 standby 两种,二者在功耗、硬件状态、唤醒逻辑上存在显著差异,具体对比如下:
特性 |
deepsleep模式 |
standby模式 |
|---|---|---|
CPU状态 |
停在WFI(等待中断)指令,未掉电 |
进入待机模式,完全掉电 |
时钟与外设 |
高速时钟关闭,CPU相关外围设备停止工作(未掉电) |
高速时钟关闭,CPU相关外围设备掉电; RAM除系统配置部分外,其余停止供电 |
PIN状态 |
保持正常 |
保持正常 |
供电方式 |
切换到RET_LDO供电 |
切换到RET_LDO供电 |
唤醒源 |
低功耗定时器(LPTIM)、RTC、BLE MAC(仅LCPU)、 Mailbox(其他CPU)、特定唤醒PIN |
低功耗定时器、RTC、BLE MAC(仅LCPU)、 Mailbox(其他CPU)、特定唤醒PIN |
唤醒时间 |
100us - 1ms |
1ms - 2ms |
唤醒后行为 |
从WFI指令后继续执行,无需重启 |
系统重新启动,通过AON寄存器判断为standby唤醒 (区别于冷启动) |
适用芯片系列 |
52X系列 |
56X系列 |
1.2 睡眠过程¶
睡眠过程分为 GUI处理 和 SDK PM组件处理 两个核心阶段,依次完成界面收尾与系统低功耗切换。
1.2.1 GUI处理阶段¶
主要完成界面休眠前的准备(如灭屏、保存界面状态),流程如下:
1.2.2 SDK PM 组件处理阶段¶
由 SDK 电源管理(PM)组件执行硬件层面的低功耗切换(如时钟关闭、供电切换),流程如下:
SDK PM组件处理过程如下:
2. 唤醒流程¶
唤醒流程指 MCU 从低功耗睡眠状态恢复到正常运行状态的过程,核心是 “唤醒触发→系统恢复→唤醒源处理” 的逻辑链。
2.1 唤醒概述¶
唤醒起点:所有唤醒均从sifli_sleep()函数执行开始,完成注册的resume(恢复)函数后,再处理唤醒源相关代码。
核心逻辑:先恢复系统硬件状态(如时钟、外设供电),再根据唤醒源(如按键、RTC、BLE)执行对应业务逻辑(如点亮屏幕、触发闹钟)。
2.2 按键唤醒具体流程¶
以最常见的 “按键唤醒” 为例,从 PIN 中断触发到界面显示的完整流程如下:
流程核心节点:
按键触发 PIN 中断,唤醒 MCU 从低功耗状态退出;
执行系统恢复逻辑(如时钟重启、外设初始化);
处理按键中断事件,触发屏幕点亮;
加载界面资源,最终显示系统界面。