原创 华大电子MCU CIU32M010、CIU32M030低功耗模式

2023-7-19 11:23 423 3 3 分类: MCU/ 嵌入式

1. 低功耗

1.1低功耗模式

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

三种低功耗模式

• 待机模式(Idle Mode)

• 停止模式(Stop Mode)

• 睡眠模式(Sleep Mode)

1.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

1.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,退出中断后进入低功耗模式,导致无法唤醒/唤醒后不进入唤醒中断。因此唤醒中断要慎重使用。

• 内部源唤醒

支持看门狗(WDT)唤醒,TIMER7_TRGO 唤醒,比较器(COMP)唤醒,flash_wkup(STOP 模式下 prog_ram_done),LVDVCC 唤醒。

注:

1. 如果不使能 WKUP_CON[3:0],即只使用内部唤醒源时,进入 sleep 之前,系统时钟要配置成选择内部 LIRC(256KHz), LIRC 在 sleep 期间不能关闭,且把系统时钟分频配置成大于等于 2.

2. 使能 WKUP_CON[3:1]时,除了对应的 GPIO 可以唤醒外,还复用了内部唤醒源,其中 WKUP_CON[3]复用 LVDVCC唤醒,WKUP_CON[2]复用比较器唤醒,WKUP_CON[1]复用 TIMER7_TRGO 唤醒。即,当使能了 WKUP_CON[3:1],但对应的 GPIO 没有配置为相应的 function 模式时,复用的内部唤醒源可以代替 GPIO 触发唤醒。

 


文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /2 下一条