休眠模式
备注
前置知识: 电源管理单元 (PMU)
睡眠模式 (Sleep Mode) 以开关CPU核内时钟域的方式,降低CPU空闲场景下的SoC动态功耗。 而 休眠模式 (Standby Mode) 和 休眠模式 (Hibernate Mode) 的引入,则是通过电源管理单元(PMU)的操作, 开关SoC层级的电源域,以影响全体SoC外设的方式,进一步降低指定场景的功耗。
休眠模式 (Hibernate Mode) 特性
休眠模式下:
CPU与常规外设单元掉电,内部寄存器状态丢失。
SRAM与L2 Cache掉电,数据内容丢失。
休眠模式的进入
配置 PMU_STATE_CTL.STATE_SET = 0x2 选择休眠模式。
配置 PMU_STATE_CTL.STATE_MODE = 0,即“立即触发”,SoC将即时进入休眠模式。
休眠模式的唤醒
PMU提供4种机制用于将SoC从低功耗休眠模式(Hibernate Mode)唤醒。用户可以同时选择多种唤醒机制。 任意被选中的唤醒机制在触发后将产生PMU低功耗唤醒信号PMU_WAK,CPU将从Boot ROM(BROM)开始重新引导用户程序。
备注
SoC从休眠模式唤醒后,尽管CPU重新从BROM代码开始引导用户程序,但 PMU中断请求/低功耗唤醒信号状态寄存器PEND 与当前触发的唤醒源对应的数据位仍然保持置位,用户程序需要妥善处置该信息并将其清除,以便后续低功耗状态的正常进入。
按键唤醒(ONOFF)机制
通过指定管脚的数字输入电平事件触发低功耗唤醒信号。请阅读章节 ONOFF多功能单元 内容。
定时唤醒(ALARM)机制
通过PMU内部定时器ALARM在指定时间后产生低功耗唤醒信号。请阅读章节 定时检测单元 (ALARM) 内容。
低电压检测唤醒(LVD)机制
PMU内部低电压检测模块(LVD)可以实时监测电源电压,当其下降至设定的阈值时,产生低功耗唤醒信号。 请阅读章节 低电检测单元 (LVD) 内容。
低电压复位唤醒(LVR)机制
LVD事件发生后,可以继续触发低电压复位(LVR)事件,导致SoC复位。请阅读章节 低电检测单元 (LVD) 内容。
需要提示的是:以上4种唤醒方式同时也是 PMU 提供的4种 PMU 中断触发方式,用户完全可以在非低功耗场景下部署使用, 用于实时监控供电电压等必要动作。
休眠模式配置方法
多功能按键唤醒(ONOFF)配置
由于休眠模式下仅有ONOFF-PMU通道可用,需调用
lpm_set_onoff_pmu()配置作为ONOFF用途的管脚(GPIO00-07可选)。调用
lpm_hibernate_enter()函数,进入休眠模式。如果ONOFF事件触发,SoC从休眠模式唤醒,CPU从BROM开始引导程序, 用户程序需要妥善PMU_PEND寄存器置位信息并将其清除,以便后续低功耗状态的正常进入。
定时唤醒(ALARM)配置
调用
lpm_set_alarm()函数,配置ALARM定时。调用
lpm_hibernate_enter()函数,进入休眠模式。指定时间后ALARM触发,将SoC从休眠模式唤醒,CPU从BROM开始引导程序, 用户程序需要妥善PMU_PEND寄存器置位信息并将其清除,以便后续低功耗状态的正常进入。
低电压检测唤醒(LVD)配置
低电压复位唤醒(LVR)配置
待描述
API说明
-
void lpm_hibernate_enter()
进入低功耗休眠模式,等待低功耗唤醒源唤醒信号。
- 返回
无