总结写在前面
STM32的电源控制(PWR)模块是微控制器能效管理的关键组件,它通过多种机制来优化能源使用,特别是在对电池寿命敏感的应用中。以下是PWR模块核心功能和低功耗模式的总结:
PWR模块核心功能:
-
可编程电压监测器(PVD):允许用户设置电压阈值,监测VDD电源电压。一旦电压超出设定范围,PVD可通过中断通知处理器,便于采取预防措施,如数据保存或安全关机,以保护系统免受电压波动损害。
-
电源管理:支持不同级别的低功耗模式,包括睡眠、停机和待机模式,每种模式通过不同程度地关闭系统组件来减少能耗。
低功耗模式概览:
- 睡眠模式:CPU暂停工作,但外设和SRAM保持上电,可由中断快速唤醒。
- 停机模式:进一步降低功耗,停止所有时钟并禁用PLL、HSI和HSE,但SRAM和寄存器内容保留,仅通过外部中断唤醒。
- 待机模式:达到最低功耗水平,几乎整个1.8V供电域断电,仅备份寄存器和待机电路保持供电,唤醒需要特定事件(如WKUP引脚、RTC闹钟或外部复位)且程序从初始位置重启。
配置与唤醒机制:
- 进入低功耗模式:通过执行WFI(等待中断)或WFE(等待事件)指令。
- 唤醒条件:根据模式不同,可通过中断(NVIC/EXTI)、事件(如RTC闹钟)或硬件引脚(如WKUP)唤醒。
其他考虑因素:
- 电源电压范围与复位:确保系统在电压降至危险水平前采取行动,通过PVD设置预警线,并在1.9V以下触发复位保护。
- 频率调整:降低CPU主频也是降低整体系统功耗的有效策略。
- VDDA与VBAT:模拟电源(VDDA)保证模拟外设的稳定供电,后备电池(VBAT)在主电源断开时为RTC和备份寄存器供电,确保关键数据不丢失。
综上所述,STM32的PWR模块及其低功耗模式设计旨在满足电池驱动设备的严格能耗要求,通过灵活的电源管理和多种唤醒机制,平衡了能效与响应速度的需求,适用于各类物联网、可穿戴设备、远程监控等应用场景。
目录
PWR
简介
- PWR(Power Control)电源控制
- PWR负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能
- 可编程电压监测器(PVD)可以监控VDD电源电压,当VDD下降到PVD阀值以下或上升到PVD阀值之上时,PVD会触发中断,用于执行紧急关闭任务
- 低功耗模式包括睡眠模式(Sleep)、停机模式(Stop)和待机模式(Standby),可在系统空闲时,降低STM32的功耗,延长设备使用时间
尤其是像用电池供电的设备,对空闲时候的供电量是有极大要求的,比如数据采集设备、车钥匙、遥控器、报警器等
在这些设备的生命周期里,大多时间都是空闲的状态~都需要低功耗
电源框图
最上面是VDDA - 模拟供电
中间是 数字供电 - VDD供电区域,1.8V供电区域
下面是后备电源供电VBAT
上电复位和掉电复位
查看手册
可编程电压检测器
PVD输出在阈值高的时候,输出是低电平。我们可以通过检测这个PVD输出的下降沿和上升沿中断,进行处理~
这个PVD中断申请是外部中断
配置PLS寄存器的三个位,可以选择下列这么多阈值
电源电压在3.3V附近是正常工作的电压,在2.9V~2.2V之间,属于PVD检测的范围,可以通过PVD设置一个警告线,再降低到1.9V就是复位电路的检测范围,低于1.9V直接复位了
低功耗模式
低功耗模式有三中国,睡眠模式 - 停机模式 - 待机模式
从表里看,这三种低功耗模式,从上到下,关闭的电路越来越多,越来越省电,也越来越难唤醒的
睡得越深~关的越多~越省电~越难叫醒
睡眠模式,设置WFI或者WFE进入睡眠模式,WFI是用中断唤醒,WFE是用事件唤醒
停机模式,设置PDDS=0进入停机模式,只有外部中断才能唤醒停机模式
待机模式,设置PDDS=1进入待机模式,具体唤醒看上图~,文字表述不如图片直接
模式选择
执行WFI(Wait For Interrupt)或者WFE(Wait For Event)指令后,STM32进入低功耗模式
睡眠模式
- 执行完WFI/WFE指令后,STM32进入睡眠模式,程序暂停运行,唤醒后程序从暂停的地方继续运行
- SLEEPONEXIT位决定STM32执行完WFI或WFE后,是立刻进入睡眠,还是等STM32从最低优先级的中断处理程序中退出时进入睡眠
- 在睡眠模式下,所有的I/O引脚都保持它们在运行模式时的状态
- WFI指令进入睡眠模式,可被任意一个NVIC响应的中断唤醒
- WFE指令进入睡眠模式,可被唤醒事件唤醒
停止模式
- 执行完WFI/WFE指令后,STM32进入停止模式,程序暂停运行,唤醒后程序从暂停的地方继续运行
- 1.8V供电区域的所有时钟都被停止,PLL、HSI和HSE被禁止,SRAM和寄存器内容被保留下来
- 在停止模式下,所有的I/O引脚都保持它们在运行模式时的状态
- 当一个中断或唤醒事件导致退出停止模式时,HSI被选为系统时钟
- 当电压调节器处于低功耗模式下,系统从停止模式退出时,会有一段额外的启动延时
- WFI指令进入停止模式,可被任意一个EXTI中断唤醒
- WFE指令进入停止模式,可被任意一个EXTI事件唤醒
待机模式
- 执行完WFI/WFE指令后,STM32进入待机模式,唤醒后程序从头开始运行
- 整个1.8V供电区域被断电,PLL、HSI和HSE也被断电,SRAM和寄存器内容丢失,只有备份的寄存器和待机电路维持供电
- 在待机模式下,所有的I/O引脚变为高阻态(浮空输入)
- WKUP引脚的上升沿、RTC闹钟事件的上升沿、NRST引脚上外部复位、IWDG复位退出待机模式
降低主频也能降低功耗,降低耗电电流
电池备份区域
使用电池或其他电源连接到VBAT脚上,当VDD断电时,可以保存备份寄存器的内容和维持RTC的 功能。 VBAT脚为RTC、LSE振荡器和PC13至PC15端口供电,可以保证当主电源被切断时RTC能继续 工作。切换到VBAT供电的开关,由复位模块中的掉电复位功能控制。
警告:在VDD上升阶段(tRSTTEMPO)或者探测到PDR(掉电复位)之后,VBAT和VDD之间的电源开关仍会保持 连接在VBAT。 在VDD上升阶段,如果VDD在小于tRSTTEMPO的时间内达到稳定状态(关于tRSTTEMPO数值可参考数据 手册中的相关部分),且VDD > VBAT + 0.6V时,电流可能通过VDD和VBAT之间的内部二极管注入到 VBAT。 如果与VBAT连接的电源或者电池不能承受这样的注入电流,强烈建议在外部VBAT和电源之间连 接一个低压降二极管
如果在应用中没有外部电池,建议VBAT在外部连接到VDD并连接一个100nF的陶瓷滤波电容,更 多细节请参阅AN2586。
当备份区域由VDD(内部模拟开关连到VDD)供电时,下述功能可用:
- PC14和PC15可以用于GPIO或LSE引脚
- PC13可以作为通用I/O口、TAMPER引脚、RTC校准时钟、RTC闹钟或秒输出(参见第5 38/754 章:备份寄存器(BKP))
注: 因为模拟开关只能通过少量的电流(3mA),在输出模式下使用PC13至PC15的I/O口功能是有限 制的:速度必须限制在2MHz以下,最大负载为30pF,而且这些I/O口绝对不能当作电流源(如驱 动LED)。
当后备区域由VBAT供电时(VDD消失后模拟开关连到VBAT),可以使用下述功能:
- PC14和PC15只能用于LSE引脚
- PC13可以作为TAMPER引脚、RTC闹钟或秒输出(参见第5.4.2节:RTC时钟校准寄存器 (BKP_RTCCR))
手册这里特意强调了PC13~PC15端口绝对不能驱动LED,但是最小系统板有两个LED,一个就是PC13,另一个是电源指示灯,就......