【STM32】PWR电源控制

总结写在前面

STM32的电源控制(PWR)模块是微控制器能效管理的关键组件,它通过多种机制来优化能源使用,特别是在对电池寿命敏感的应用中。以下是PWR模块核心功能和低功耗模式的总结:

PWR模块核心功能:

  1. 可编程电压监测器(PVD):允许用户设置电压阈值,监测VDD电源电压。一旦电压超出设定范围,PVD可通过中断通知处理器,便于采取预防措施,如数据保存或安全关机,以保护系统免受电压波动损害。

  2. 电源管理:支持不同级别的低功耗模式,包括睡眠、停机和待机模式,每种模式通过不同程度地关闭系统组件来减少能耗。

低功耗模式概览:

  • 睡眠模式: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

简介

  • 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,另一个是电源指示灯,就……

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-05 23:16:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-05 23:16:06       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-05 23:16:06       87 阅读
  4. Python语言-面向对象

    2024-06-05 23:16:06       96 阅读

热门阅读

  1. 【Docker学习】docker login/logout

    2024-06-05 23:16:06       27 阅读
  2. mysql 根据经纬度计算距离

    2024-06-05 23:16:06       23 阅读
  3. MFC 用Imm类库实现输入法修改输入模式

    2024-06-05 23:16:06       31 阅读
  4. N叉树的层序遍历-力扣

    2024-06-05 23:16:06       31 阅读
  5. apex代码发送邮件时进行抄送

    2024-06-05 23:16:06       30 阅读
  6. C#语言进阶(二)—事件 第二篇(.net标准事件模型)

    2024-06-05 23:16:06       36 阅读
  7. C#面:.NET Remoting 的⼯作原理是什么

    2024-06-05 23:16:06       29 阅读
  8. 6.13 CO-RE(Compile Once – Run Everywhere)简介

    2024-06-05 23:16:06       32 阅读