历史上的今天
今天是:2024年12月20日(星期五)
2021年12月20日 | STM32电源管理—实现低功耗
2021-12-20 来源:eefocus
一、电源管理—实现低功耗
电源对电子设备的重要性不言而喻,它是保证系统稳定运行的基础,而保证系统能稳定运行后,又有低功耗的要求。 在很多应用场合中都对电子设备的功耗要求非常苛刻,如某些传感器信息采集设备,仅靠小型的电池提供电源,要求工作长达数年之久,且期间不需要任何维护;由于智慧穿戴设备的小型化要求,电池体积不能太大导致容量也比较小,所以也很有必要从控制功耗入手,提高设备的续行时间。 因此, STM32 有专门的电源管理外设监控电源并管理设备的运行模式, 确保系统正常运行,并尽量降低器件的功耗。
默认情况下,系统复位或上电复位后,微控制器进入运行模式。在运行模式下, CPU 通过HCLK 提供时钟,并执行程序代码。系统提供了多个低功耗模式,可在 CPU不需要运行时(例如等待外部事件时)节省功耗。由用户根据应用选择具体的低功耗模式,以在低功耗、短启动时间和可用唤醒源之间寻求最佳平衡。
详细信息看中文手册的第五章,5.3电源管理
器件有三个低功耗模式:
(1)睡眠模式(Cortex-M4内核停止,外设保持运行,唤醒速度是最快的,
执行WFI (Wait For Interrupt,任何中断都能唤醒)
(2)停止模式(所有时钟都停止,执行PWR_EnterSTOPMode,外部中断控制线唤醒,例如按键)
(3)待机模式(1.2 V 域断电,唤醒速度最慢,程序从头开始运行,就跟手机关机一样,这种模式一般用的不多,调用PWR_EnterSTANDBYMode)
此外,可通过下列方法之一降低运行模式的功耗:
(1)降低系统时钟速度
(2)不使用 APBx 和 AHBx 外设时,将对应的外设时钟关闭
二、睡眠模式
在睡眠模式中,仅关闭了内核时钟,内核停止运行,但其片上外设, CM4 核心的外设全都还照常运行。有两种方式进入睡眠模式,它的进入方式决定了从睡眠唤醒的方式,分别是 WFI(wait for interrupt)和 WFE(wait for event),即由等待“中断”唤醒和由“事件”唤醒。
1.睡眠模式各种特性
立即睡眠 :在执行 WFI 或 WFE 指令时立即进入睡眠模式。
退出时睡眠 :在退出优先级最低的中断服务程序后才进入睡眠模式。
进入方式: 内核寄存器的 SLEEPDEEP = 0 ,然后调用 WFI 或 WFE 指令即可进入睡眠模式;
另外若内核寄存器的 SLEEPONEXIT=0 时 , 进入“ 立即睡眠 ” 模式SLEEPONEXIT=1 时,进入“退出时睡眠”模式。
唤醒方式: 如果是使用 WFI (Wait From Interrupt)指令睡眠的,则可使用任意中断唤醒;如果是使用 WFE(Wait From Event) 指令睡眠的,则由事件唤醒。
睡眠时 ,关闭内核时钟,内核停止,而外设正常运行,在软件上表现为不再执行新的代码。这个状态会保留睡眠前的内核寄存器、内存的数据。
唤醒延迟 :无延迟。
唤醒后 ,若由中断唤醒,先进入中断,退出中断服务程序后,接着执行 WFI 指令后的程序;若由事件唤醒,直接接着执行 WFE 后的程序。

进入睡眠模式之后,任意中断可以唤醒CPU。
三、停止模式
在停止模式中,进一步关闭了其它所有的时钟,于是所有的外设都停止了工作,但由于其 1.2V 区域的部分电源没有关闭,还保留了内核的寄存器、内存的信息,所以从停止模式唤醒,并重新开启时钟后,还可以从上次停止处继续执行代码。停止模式可以由任意一个外部中断(EXTI)唤醒。在停止模式中可以选择电压调节器为开模式或低功耗模式,可选择内部 FLASH 工作在正常模式或掉电模式。
当退出停止模式后,它是选择内部的HSI RC振荡器作为时钟,但是这不是我们想要的CPU的频率,所以重新调用SysteInit函数
1.停止模式的各种特性
调压器低功耗模式 :在停止模式下调压器可工作在正常模式或低功耗模式,可进一步降低功耗
FLASH掉电模式 : 在停止模式下 FLASH 可工作在正常模式或掉电模式,可进一步降低功耗
进入方式 : 内核寄存器的 SLEEPDEEP =1, PWR_CR 寄存器中的 PDDS=0,然后调用 WFI或 WFE 指令即可进入停止模式;
PWR_CR 寄存器的 LPDS=0 时,调压器工作在正常模式, LPDS=1 时工作在低功耗模式;
PWR_CR 寄存器的 FPDS=0 时, FLASH 工作在正常模式, FPDS=1 时进入掉电模式。
唤醒方式 : 如果是使用 WFI 指令睡眠的,可使用任意 EXTI 线的中断唤醒;如果是使用 WFE 指令睡眠的,可使用任意配置为事件模式的 EXTI 线事件唤醒。
停止时, 内核停止,片上外设也停止。这个状态会保留停止前的内核寄存器、内存的数据。
唤醒延迟 : 基础延迟为 HSI 振荡器的启动时间,若调压器工作在低功耗模式,还需要加上调压器从低功耗切换至正常模式下的时间,
若 FLASH 工作在掉电模式,还需要加上 FLASH 从掉电模式唤醒的时间。
唤醒后, 若由中断唤醒,先进入中断,退出中断服务程序后,接着执行 WFI 指令后的程序;若由事件唤醒,直接接着执行 WFE 后的程序。唤醒后, STM32会使用 HIS 作为系统时钟。

由外部中断按键触发唤醒。
四、待机模式
待机模式,它除了关闭所有的时钟,还把 1.2V 区域的电源也完全关闭了,也就是说,从待机模式唤醒后,由于没有之前代码的运行记录,只能对芯片复位,重新检测 boot 条件,
从头开始执行程序。它有四种唤醒方式,分别是 WKUP(PA0)引脚的上升沿(相当于手机的电源键), RTC 闹钟事件(相当于手机自动开机), NRST 引脚的复位和 IWDG(独立看门狗)复位。
1、 待机模式的各种特性
进入方式 : 内核寄存器的 SLEEPDEEP =1, PWR_CR 寄存器中的 PDDS=1, PWR_CR 寄存器中的唤醒状态位 WUF=0,然后调用 WFI 或 WFE 指令即可进入待机模式;
唤醒方式 : 通过 WKUP 引脚的上升沿, RTC 闹钟、唤醒、入侵、时间戳事件或NRST 引脚外部复位及 IWDG 复位唤醒。
待机时 , 内核停止,片上外设也停止;内核寄存器、内存的数据会丢失;除复位引脚、 RTC_AF1 引脚及 WKUP 引脚,其它 I/O 口均工作在高阻态。
唤醒延迟 : 芯片复位的时间
唤醒后 , 相当于芯片复位,在程序表现为从头开始执行代码
上一篇:STM32红外串口接收
史海拾趣
|
单极隔离式功率因数校正(PFC)变换器 现代开关电源的主要发展趋向之一是提高AC/DC变换器输入端功率因数,减少对电网的谐波污染。传统的AC/DC开关变换器输入端是二极管整流—电容滤波组合电路,其输入端电流波形呈 ...… 查看全部问答> |
|
在进行STM32程序调试时,发现按下中断按键时,程序始终停在一个状态(LED1亮/灭),不知道在中断时为什么会出现这样的现象,各位大侠帮帮忙,万分感谢。 程序代码如下: #include \"stm32f10x_lib.h\" GPIO_InitTypeDef GPIO_InitSt ...… 查看全部问答> |
|
单片机的烧程序软件stc_isp在vista操作系统下为什么装不上? 我想学单片机,前几天系统是xp的时候还能用stc_isp,可用了几天就不能用了,电脑还有了病毒,最后一键还原,系统成了vista ,但硬是装不上stc_isp,请大家帮帮忙,解决一下问题,找个能在vista 下能装的stc_isp ,或解决一怎么样才能装上。谢谢啦!! ...… 查看全部问答> |
|
要写两个程序,一个运行在PC机上,一个在PDA上,两个机器通过usb连接,要他们之间传递信息,请问如何实现 我的本意是像socket编程那样,一个server,一个client两个互相传递信息,唯一的区别是通过usb线而不是网线,请高手指教… 查看全部问答> |
|
搞了三天,终于出来了。虽然狂简单,但是这是我的一大步。发个帖子纪念一下。如果这些东西对你有用,请你留言让我知道。哪怕就是一个“顶”字,也是对我的鼓励。 谢谢。 说明: 硬件是一块以前的人开发后遗留下来的ARM开发板,芯片内部的rom ...… 查看全部问答> |
|
第一次做硬件开发 能不能给点指导 比如,如何开发、怎么调用硬件等 如果有中文的开发指导说明,发一份给我hxgwd_5658@126.com 谢谢!!!!… 查看全部问答> |
|
之前没有留意过2812发热的问题 现在手头上的这块板子,当2812跑到150M的时候 无意中碰到了芯片,发现还挺烫的 我想问问,是不是2812正常运行的时候不会明显发热 如果明显发热就说明这个片子坏了?… 查看全部问答> |
|
电力猫是一项基于电力线传输信号的设备,它使同一电路回路的家庭或小办公室透过既有的电源线路,建构区域网路。对于家庭或小办公室用户而言,电力猫产品提供了最便捷、最安全的方式,有效延伸区域网路的涵盖范围。电力猫作为第三代主流网络设备,不 ...… 查看全部问答> |




