9. 低功耗(LOW POWER)

9.1. 低功耗模式

在系统或电源复位以后,微控制器处于正常模式运行状态,系统所用时钟为 256KHz 内部 RC 振荡器输出。当 CPU 不需继续运行时,可以利用进入多种低功耗模式来节省功耗。例如等待某个外部事件时,用户需要根据低电源消耗、启动时间和可用的唤醒源等条件,选定一个低功耗模式。

三种低功耗模式

• 待机模式(Idle Mode)

• 停止模式(Stop Mode)

• 睡眠模式(Sleep Mode)

 

android低功耗状态 低功耗模式英文_初始化

 

注:可以通过关闭未使用的外设、时钟源使功耗降低。此外,在运行模式下,可以通过以下方式中的一种降低功耗

• 降低系统时钟

• 关闭 APB 和 AHB 总线上未被使用的外设时钟。

• 合理配置 APB 与 AHB 的频率关系

9.2. 进入低功耗

进入低功耗模式(Sleep)步骤:

• Step1: 关闭低功耗下不需要工作的模拟模块

• Step2: 系统时钟切换到 LIRC_256K,并且关闭除 LIRC_256K 以外的时钟源

• Step3: 配置 PMU_LPDOS 使其电压档位比 PMU_HPLDOS 电压档位高

• Step4: 把 PMU_HPXCP, PMU_HPPDI, PMU_HPPDLI 配置为 0

• Step5(可选): 配置 LPCON[7]为 1,并且配置 PMUBK 寄存器设置低功耗下 LPLDO 电压

• Step6: 配置 PMU_HPV2I 为 0(如果执行了 step5,则无需执行 step6)

• Step7: 配置空闲的 IO 为模拟模式

• Step8: 进入 Sleep 前的准备工作:包括配置唤醒源,初始化唤醒中断服务函数,关闭看门狗(可选),

使能进入 Sleep 时自动关闭 256K 内部 RC 振荡器(可选),使能SLEEP_GOON_EN 唤醒时不复位(可选)

• Step9: 配置 LP_CON0[0]进入 Sleep

9.3. 低功耗唤醒

支持多种唤醒方式

• 端口唤醒

总共有 4 个 IO 唤醒源(由 WKUP_CON[3:0]控制使能)这些唤醒源唤醒之后是会产生中断并且有对应的中断状态位,中断是不可屏蔽的(即有中断状态就一

定有中断)。另外,由 SLEEP_GOON_EN(SYS_CON0[30])决定用端口唤醒时是产生系统复位还是继续运行。

IO 唤醒初始化步骤:配置 IO 模式->配置唤醒边沿->清除唤醒标志位->中断初始化使能(根据需要)

->使能唤醒位->清除唤醒标志位->配置 LP_CON 进入低功耗模式。后续只需要在进入低功耗模式之前,切换 IO 模式->清除唤醒标志位->进入低功耗模式。

注意:如果选择了上升沿/下降沿唤醒,而此时 IO 为高电平/低电平,则唤醒标志位马上会置 1。使能后 IO 保持为高电平/低电平不会重复触发,唤醒标志位保持为 1,上升沿/下降沿才会触发。只要唤醒标志位为 1,则无法进入低功耗模式。对于唤醒 IO 的电平翻转时间无法确定的应用场景,如果在主程序中使能 wkup_en/int_en,在唤醒中断函数中关闭 wkup_en/int_en,会存在以下风险:使能 wkup_en/int_en 时马上触发 wkup_pend 导致进入中断,然后在中断中关闭 wkup_en/int_en,退出中断后进入低功耗模式,导致无法唤醒/唤醒后不进入唤醒中断。因此唤醒中断要慎重使用。

• 内部源唤醒

支持看门狗唤醒,TIMER4 中断唤醒,LVD 唤醒,触摸按键唤醒,flash_wkup(STOP 模式下prog_ram_done),LVDVCC_WKUP。