深度睡眠模式
深度睡眠模式与 RISC-V 的 SLEEPDEEP 模式相对应。在深度睡眠模式下,1.1V 域中的所有
时钟全部关闭,IRC16M、HXTAL 及 PLLs 也全部被禁用。SRAM0/1/2/3 和寄存器中的内容被
保留。根据 PMU_CTL0 寄存器的 LDOLP 位的配置,可控制 LDO 工作在正常模式或低功耗模
式。进入深度睡眠模式之前,先将 RISC-V 系统控制寄存器的 CSR_SLEEPVALUE 位置 1,再
清除 PMU_CTL0 寄存器的 STBMOD 位,然后执行 WFI 或 WFE 指令即可进入深度睡眠模式。
如果睡眠模式是通过执行 WFI 指令进入的,任何来自 EXTI 的中断可以将系统从深度睡眠模式
中唤醒。如果睡眠模式是通过执行 WFE 指令进入的,任何来自 EXTI 的事件可以将系统从深
度睡眠模式中唤醒。刚退出深度睡眠模式时,IRC16M 被选中作为系统时钟。请注意,如果 LDO
工作在低功耗模式,那么唤醒时需额外的延时时间。
在深度睡眠模式下,通过配置 PMU_CTL0 寄存器的 LDEN[1:0],LDNP,LDLP,LDOLP 位可
以进入低驱动模式。低驱动模式具有低驱动能力,低功耗模式工作能耗很低。
正常驱动&正常功耗:将 PMU_CTL0 寄存器的 LDEN[1:0]位配置为 00,深度睡眠模式就工作
在正常驱动模式下。将 PMU_CTL0 寄存器的 LDOLP 清 0 可以退出低功耗模式。
正常驱动&低功耗:将 PMU_CTL0 寄存器的 LDEN[1:0]位配置为 00,深度睡眠模式就工作在
正常驱动模式下。将 PMU_CTL0 寄存器的 LDOLP 置 1 可以进入低功耗模式。
低驱动&正常功耗:将 PMU_CTL0 寄存器的 LDEN[1:0]设置为 0b11,LDNP 置 1 可以进入深
度睡眠模式的低驱动模式。将 PMU_CTL0 寄存器的 LDOLP 清 0 可以使 LDO 处于正常功耗模
式。
低驱动&低功耗:将 PMU_CTL0 寄存器的 LDEN[1:0]设置为 0b11,LDLP 置 1 可以进入深度
睡眠模式的低驱动模式。将 PMU_CTL0 寄存器的 LDOLP 置 1 可以使 LDO 处于低功耗模式。
非低驱动:将 PMU_CTL0 寄存器的 LDEN[1:0]设置为 00,深度睡眠模式将不会处在低驱动模
式。
注意:为了顺利进入深度睡眠模式,所有 EXTI 线上的挂起状态(在 EXTI_PD 寄存器中)和
相关外设标志位必须被复位。否则,程序将直接跳过深度睡眠模式进入过程而继续执行下面的程序。
|