原创 STM32教程之电源管理学习(带源码和流程图)

2010-12-19 20:51 8605 4 7 分类: MCU/ 嵌入式

一、实现的功能


1.实现STM32进入停止模式,并利用外部中断线唤醒来推出停止模式。


2.实现外部按键和RTC报警两个外部中断来唤醒进入停止模式的STM32。


二、实验操作及现象


1.双击PWR.eww打开工程文件,然后进行编译。


2.用Flash Loader将程序下载到ARM内,或者利用JLINK等仿真器进行仿真。


3.程序运行后可根据4个LED灯来判断STM32当前的运行状态:


       LD1亮、LD4灭表示处于运行状态;


       LD1灭、LD4亮表示处于停止模式;


       LD2的取反状态代表由外部中断9(User按键)来唤醒STM32;


       LD3的取反状态代表由外部中断17(RTC报警)来唤醒STM32;


三、电源管理学习


STM32的电源组成,其主要由3个部分:独立的A/D供电电压和参考电压、备份电压、电压调节器。


1.A/D供电电压和参考电压


       为了提高转换的精确度,ADC使用一个独立的电源供电(VDDA,范围:2.4V~3.6V),过滤和屏蔽来自PCB上的毛刺干扰。


参考电压VREF+和VREF-分别是正和负极,一般VREF-接地,VREF+的范围为VREF-~VDDA,这个电源100脚封装芯片和其他封装芯片不同,100脚的这个电压和A/D供电电压是独立的,而其他封装它们是内部直接连接的。 


2.备份电压


备份电压指的是备份域使用的供电电源,也就是VBAT引脚的供电,使用电池或其他电源连接到VBAT脚上,当VDD断电时,可以保存备份寄存器的内容。VBAT脚也为RTC供电,这保证当主要电源被切断时RTC能继续工作。如果应用中没有使用外部电池,VBAT必须连接到VDD引脚上。


3.电压调节器


电压调节器为STM32提供所需的1.8V电源,也就是内部把你提供的3.3V转换成1.8V,供STM32使用,其主要有三种工作模式:


-运行模式:以正常功耗模式提供1.8V 电源(内核,内存和外设)。


-停止模式:以低功耗模式提供1.8V 电源,以保存寄存器和SRAM 的内容。


-待机模式:停止供电。除了备用电路和备份域外,寄存器和SRAM 的内容全部丢失。


4.电源管理器(PVD)


电源管理器的第1部分是上电复位(POR)和掉电复位(PDR):当电源小于POR和/或PDR门限时,系统处于复位状态,其他时间处于正常工作状态。


电源管理器的第2部分是可编程电压监测器:


-用户可以利用PVD对VDD电压与电源控制寄存器中的PLS[2:0]位进行比较来监控电源,这几位选择监控电压的阀值。


-通过设置PVDE位来使能PVD。


-电源控制/状态寄存器中的PVDO标志用来表明VDD是高于还是低于PVD的电压阀值。该事件在内部连接到外部中断的第16线。当VDD下降到PVD阀值以下和(或)当VDD上升到PVD阀值之上时,根据外部中断第16线的上升/下降边沿触发设置,就会产生PVD中断。这一特性可用于用于执行紧急关闭任务。


电源管理器的第3部分是低功耗模式,共有睡眠、停止、待机3种低功耗模式。


睡眠模式:在睡眠模式下,CPU时钟处于停止状态,但是所有的外设继续运行(除非它们被关闭)电源功耗相应地减少。任一中断或唤醒事件可将微处理器从睡眠模式中唤醒。在睡眠模式下,所有的SRAM和寄存器内的内容被保存下来。睡眠模式有2种,一种是通过执行WFI进入睡眠模式,任意一个被嵌套向量中断控制器响应的外设中断都能将系统从睡眠模式唤醒 ;令一种是执行WFE 指令进入睡眠模式,外设控制寄存器中被使能的中断事件,但该中断事件未被嵌套向量中断控制器使能,或者设置为事件模式的外部中断线上的事件可以将系统从睡眠模式唤醒。


停止模式:停止模式是在Cortex-M3的深睡眠模式基础上结合了外设的时钟控制机制,在停止模式下电压调节器可运行在正常或低功耗模式。此时在1.8V供电区域的的所有时钟都被停止,PLL、HSI和HSE,RC振荡器的功能被禁止,SRAM和寄存器内容被保留下来。


       进入停止模式:


– 设置Cortex-M3系统控制寄存器中的SLEEPDEEP位


– 清除电源控制寄存器(PWR_CR)中的PDDS位


- 通过设置PWR_CR中LPDS位选择电压调节器的模式


在以上条件下执行行WFI或WFE指令进入停止模式。


       退出停止模式:


如果是使用WFI进入的停止模式,则任一外部中断线产生中断可以唤醒系统,如果是使用WFE禁止的停止模式,则任一外部中断线产生事件可以唤醒系统。


待机模式:待机模式可实现系统的最低功耗。该模式是在Cortex-M3深睡眠模式时关闭电压调节器。整个1.8V供电区域被断电。PLL、HSI和HSE振荡器也被断电。SRAM和寄存器内容丢失。只有备份的寄存器和待机电路维持供电。


进入待机模式


在以下条件下执行WFI或WFE指令进入待机模式:


– 设置Cortex-M3系统控制寄存器中的SLEEPDEEP位


– 设置电源控制寄存器(PWR_CR)中的PDDS位


– 清除电源控制/状态寄存器(PWR_CSR)中的WUF位被


退出待机模式


当一个外部复位(NRST引脚)、IWDG复位、WKUP引脚上的上升沿或RTC闹钟事件发生时,微控制器从待机模式退出。


最后是低功耗模式下的自动唤醒:RTC可以唤醒低功耗模式下的微控制器(自动唤醒模式)。RTC可以按照可编程周期从停止或待机模式下唤醒微控制器。通过对备份区域控制寄存器的RTCSEL[1:0]位的编程,三个RTC时钟源中的二个可以选作实现此功能:


-低功耗32.768kHz 外部晶振(LSE OSC)


-低功耗内部RC 振荡器(LSI RC)


为了用RTC闹钟事件将微处理器从停止模式下唤醒,必须进行如下操作:


-配置外部中断线17 为上升沿触发。


-配置RTC 使其可产生RTC 闹钟事件。


如果要从待机模式中唤醒,不必配置外部中断线17。


四、程序流程分析


       程序流程见附件《STM32例程之PWR流程图.pdf》


五、代码例程(不包括库文件)


       程序的IAR例程工程见附件“PWR.rar”


PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

用户1836540 2015-4-30 13:59

感谢楼主

用户239975 2013-10-29 11:33

hao

用户445067 2013-8-13 10:40

谢谢楼主
相关推荐阅读
用户1505072 2010-12-13 20:33
STM32教程系列之FLASH学习
一、实现的功能1.实现对STM32Fxxx的片内FLASH的擦除和烧写,并读出后进行检验。2.用串口打印出检验FLASH内容是否正确的变量值。二、实验操作及现象1.双击FLASH.eww打开工程文件,...
我要评论
3
4
关闭 站长推荐上一条 /3 下一条