睡眠唤醒过程

睡眠唤醒过程梳理

1. 睡眠流程

睡眠流程指MCU在无操作一段时间后,进入低功耗状态的完整过程,核心包含低功耗状态分类与分阶段睡眠处理逻辑。

1.1 低功耗状态分类

低功耗状态分为 deepsleepstandby 两种,二者在功耗、硬件状态、唤醒逻辑上存在显著差异,具体对比如下:

特性

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处理阶段

主要完成界面休眠前的准备(如灭屏、保存界面状态),流程如下:

fishy

1.2.2 SDK PM 组件处理阶段

由 SDK 电源管理(PM)组件执行硬件层面的低功耗切换(如时钟关闭、供电切换),流程如下:

SDK PM组件处理过程如下:

fishy

2. 唤醒流程

唤醒流程指 MCU 从低功耗睡眠状态恢复到正常运行状态的过程,核心是 “唤醒触发→系统恢复→唤醒源处理” 的逻辑链。

2.1 唤醒概述

  • 唤醒起点:所有唤醒均从sifli_sleep()函数执行开始,完成注册的resume(恢复)函数后,再处理唤醒源相关代码。

  • 核心逻辑:先恢复系统硬件状态(如时钟、外设供电),再根据唤醒源(如按键、RTC、BLE)执行对应业务逻辑(如点亮屏幕、触发闹钟)。

2.2 按键唤醒具体流程

以最常见的 “按键唤醒” 为例,从 PIN 中断触发到界面显示的完整流程如下:

fishy

流程核心节点:

  • 按键触发 PIN 中断,唤醒 MCU 从低功耗状态退出;

  • 执行系统恢复逻辑(如时钟重启、外设初始化);

  • 处理按键中断事件,触发屏幕点亮;

  • 加载界面资源,最终显示系统界面。