电子说
9.低功耗(LOW POWER)
9.1.低功耗模式
在系统或电源复位以后,微控制器处于正常模式运行状态,系统所用时钟为 256KHz 内部 RC 振荡器输出。当 CPU 不需继续运行时,可以利用进入多种低功耗模式来节省功耗。例如等待某个外部事件时,用户需要根据最低电源消耗、最快启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。
三种低功耗模式
• 待机模式(Idle Mode)
• 停止模式(Stop Mode)
• 睡眠模式(Sleep Mode)
注:可以通过关闭未使用的外设、时钟源使功耗降到最低。此外,在运行模式下,可以通过以下方式中的一种降低功耗
• 降低系统时钟
• 关闭 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。
审核编辑 :李倩
全部0条评论
快来发表一下你的评论吧 !