睡眠唤醒过程介绍

睡眠流程

睡眠流程是指无操作一段时间后,MCU进入低功耗状态的过程。

低功耗状态的分类

低功耗状态包括standby 和deepsleep两种,对比如下:

  • deepsleep:

CPU 停在 WFI 指令,系统中高速时钟关闭,CPU相关的外围设备停止工作,但是不掉电,系统的供电切换到RET_LDO。

可以由低功耗定时器(LPTIM),RTC,BLE MAC(LCPU Only),Mailbox(其他CPU),或者特定的唤醒pin来唤醒。唤醒时间增加到100us-1ms。唤醒之后继续在WFI之后的指令运行。

  • standby:

CPU进入待机(standby)模式,系统中高速时钟关闭,CPU相关的外围设备掉电,RAM除了系统配置的部分,都停止供电,PIN的状态保持,系统的供电切换到RET_LDO。

可以由低功耗定时器,RTC,BLE MAC(LCPU Only),Mailbox(其他CPU),或者特定的唤醒pin来唤醒。唤醒时间1ms-2ms。

唤醒之后,系统会重新启动,根据AON寄存器中的低功耗模式指示,软件判断系统从standby模式启动,以便与冷启动区别。

一般而言:52X采用deepsleep的方式;56x采用standby方式;

睡眠过程

睡眠过程大致包括两个阶段:gui处理 和 rtos pm组件处理; gui处理过程如下:

fishy

rtos pm组件处理过程如下:

fishy

唤醒流程

唤醒流程是指从睡眠状态恢复到正常运行状态的过程; 每次唤醒都是从sifli_sleep()执行,并运行完注册resume后,开始执行唤醒源相关的代码; 按键唤醒的流程从pin中断开始执行,到出现界面流程如下:

fishy