以RISC-V MCU CH32V307为例。
1. 待机模式简介
待机模式(Standby),芯片的运行功耗最低。
该模式下,内核处于深睡眠模式(Sleep Deep), 电压调节器进入停机模式。
待机模式唤醒后,MCU将执行电源复位。
该模式下的唤醒时间约 8.9ms (LDO稳定时间 + HSI RC时钟唤醒 + 代码加载时间)。
此模式下的睡眠电流约为1~2uA。
可以通过配置PWR_CTLR
寄存器控制该模式下部分SRAM不掉电,使用变量数据保持,睡眠电流增加约 1.5~2uA 配置方式如下:
位 | 控制位名称 | 说明 | 复位值 |
---|---|---|---|
19 | R30K_VBATEN | VBAT供电时,Standby模式下前 30K RAM是否带电: 1:带电 0:不带电 | 0 |
18 | R2K_VBATE | VBAT供电时,Standby模式下前 30K RAM是否带电: 1:带电 0:不带电 | 0 |
17 | R30K_STYEN | Standby模式下前 30K RAM是否带电: 1:带电 0:不带电 | 0 |
16 | R2K_STYEN | Standby模式下前 2K RAM是否带电: 1:带电 0:不带电 | 0 |
2.进入待机模式
进入待机模式步骤如下:
-
配置 PFIC_SCTLR 系统控制寄存器控制位
SLEEPDEEP = 1
-
配置 PWR_CTLR 电源控制寄存器控制位
PDDS = 1
-
清除电源控制/状态寄存器
PWR_SCR
中的WUF
位,PWR_CTLR
的CWUF
位写1清零 -
执行
WFI
或WFE
指令
3. 退出待机模式
退出待机模式步骤如下:
-
WKUP引脚上升沿
-
RTC闹钟事件的上升沿
-
NRST引脚上的外部复位
-
IWDG复位
-
唤醒事件,配置一个外部EXTI线为事件模式,当CPU从WFE唤醒后,因为对应事件线的挂起位没有被置位,不必清除相应外设的中断挂起位或PFIC中断通道挂起位。
:::tip