STM32个人笔记-电源管理

笔记来源于STM32F103VET6,野火指南者,中文参考手册,HAL库开发手册和b站的野火指南者视频。观看过好多次了,但往往理解得不够全面,现记下小笔记,用来回顾。属于个人笔记。

电源监控器

STM32芯片主要通过VDD引脚从外部获取电源,在它的内部具有电源监控器用于检测VDD的电压,以实现复位功能及掉电紧急处理功能,保证系统可靠地运行。

上电复位与掉电复位(POR与PDR)

当检测到VDD的电压低于阈值VPOR及VPDR时,无需外部电路辅助,STM32芯片会自动保持在复位状态,防止因电压不足强行工作而带来严重的后果。

在刚开始电压低于VPOR时(约1.92V),STM32保持在上电复位状态(POR,Power On Reset)。当VDD电压持续上升至大于VPOR时,芯片开始正常运行。

而在芯片开始正常运行的时候,当检测到VDD电压下降至低于VPDR阈值(约1.88V),会进入掉电复位状态(PDR,Power Down Reset)。

可编程电压检测器PVD(实时监测VDD的电压)

当检测到VDD电压低于编程的VPVD阈值时,会向内核产生一个PVD中断(EXTI16线中断)以使内核在复位前进行紧急处理。该电压阈值可通过电源控制寄存器PWR_CSR设置。 

阈值等级 条件 最小值 典型值 最大值 单位
级别0 上升沿 2.1 2.18 2.26 V
级别0 下降沿 2 2.08 2.16 V
级别1 上升沿 2.19 2.28 2.37 V
级别1 下降沿 2.09 2.18 2.27 V
级别2 上升沿 2.28 2.38 2.48 V
级别2 下降沿 2.18 2.28 2.38 V
级别3 上升沿 2.38 2.48 2.58 V
级别3 下降沿 2.28 2.38 2.48 V
级别4 上升沿 2.47 2.58 2.69 V
级别4 下降沿 2.37 2.48 2.59 V
级别5 上升沿 2.57 2.68 2.79 V
级别5 下降沿 2.47 2.58 2.69 V
级别6 上升沿 2.66 2.78 2.9 V
级别6 下降沿 2.56 2.68 2.8 V
级别7 上升沿 2.76 2.88 3 V
级别7 下降沿 2.66 2.73 2.9 V

STM32电源系统

STM32个人笔记-电源管理_第1张图片

ADC电源及参考电压(VDDA供电区域) 

为了提高转换精度,STM32的ADC配有独立的电源接口,方便进行单独的滤波。ADC的工作电源使用VDDA引脚输入,使用VSSA作为独立的地连接,VREF引脚作为ADC提供测量使用的参考电压。

VDD供电区域

所有数字逻辑都在内。VDD的供电电压为1.8V。 

后备供电区域

接晶振。RTC用到的纽扣电池推荐CR1220。

低功耗模式

工作模式(高功耗->低功耗):运行、睡眠、停止、待机。

若备份域电源正常供电,备份域内的RTC都可以正常运行,备份域内的寄存器的数据会被保存,不受功耗模式影响。

STM32个人笔记-电源管理_第2张图片

睡眠模式 

特性 说明
立即睡眠 在执行WFI或WFE指令时立即进入睡眠模式
退出时睡眠 在退出优先级最低的中断服务程序后才进入睡眠模式
进入方式

内核寄存器的SLEEPDEEP=0,然后调用WFI或WFE指令即可进入睡眠模式;

另外若内核寄存器的SLEEPONEXXIT=0时,进入“立即睡眠”模式。SLEEPONEXXIT=1时,进入“退出时睡眠”模式

唤醒方式

如果是使用WFI指令睡眠的,则可使用任意中断唤醒;

如果是使用WFE指令睡眠的,则由事件唤醒;

睡眠时 关闭内核时钟,内核停止,而外设正常运行,在软件上表现为不再执行新的代码。这个状态会保留睡眠前的内核寄存器、内存的数据
唤醒延迟 无延迟
唤醒后

若由中断唤醒,先进入中断,退出中断服务程序后,接着执行WFI指令后的程序;

若由事件唤醒,直接接着执行WFE后的程序

停止模式

在停止模式中,进一步关闭了其它所有的时钟,于是所有的外设停止了工作,但由于其1.8V区域的部分电源没有关闭,还保留了内核的寄存器、内存的信息,所有从停止模式唤醒,并重新开启时钟后,还可以从上次停止处继续执行代码。停止模式可以由任意一个外部中断(EXTI)唤醒,在停止模式中可以选择电压调节器开启或低功耗模式。

特性 说明
调压器低功耗模式 在停止模式下调压器可工作在正常模式或低功耗模式,可进一步降低功耗
进入方式

内核寄存器的SLEEPDEEP=1,PWR_CR:PDDS=0,然后调用WFI或WFE指令即可进入停止模式;

PWR_CR:LPDS=0,调压器工作在正常模式;PWR_CR:LPDS=1,调压器工作在低功耗模式;

唤醒方式

如果是使用WFI指令睡眠的,可使用任意EXTI线的中断唤醒;

如果是使用WFE指令睡眠的,可使用任意配置为事件模式的EXTI线事件唤醒;

停止时 内核停止,片上外设也停止。这个状态会保留停止前的内核寄存器、内存的数据
唤醒延迟 基础延迟为HSI振荡器的启动时间,若调压器工作在低功耗模式,还需要加上调压器从低功耗切换至正常模式下的时间
唤醒后

若由中断唤醒,先进入中断,退出中断服务程序后,接着执行WFI指令后的程序;

若由事件唤醒,直接接着执行WFE后的程序。唤醒后,STM32会使用HSI作为系统时钟

待机模式

待机模式,它除了关闭所有的时钟,还把1.8V区域的电源也完全关闭了。即从待机模式唤醒后,由于没有之前代码的运行记录,只能对芯片进行复位,重新检测boot条件,从头开始执行程序。

它由四种唤醒方式,分别是WKUP(PA0)引脚的上升沿、RTC闹钟事件、NRST引脚的复位和IWDG(独立看门狗)复位。

特性 说明
进入方式

内核寄存器的SLEEPDEEP=1,PWR_CR:PDDS=1,PWR_CR:WUF=0,然后调用WFI或WFE指令即可进入停止模式;

唤醒方式 通过WKUP引脚的上升沿、RTC闹钟、唤醒、入侵、时间戳事件或NRST引脚外部复位及IWDG复位唤醒
待机时 内核停止,片上外设也停止。内核寄存器、内存的数据会丢失;除复位引脚、RTC_AF1引脚及WKUP引脚,其它I/O口均工作在高阻态
唤醒延迟 芯片复位的时间
唤醒后 相当于芯片复位,在程序表现为从头开始执行代码

库函数

PWR_PVDLevelConfig(配置PVD监控功能)

低于阈值产生PVD中断。阈值由参数配置。参数可选择宏,宏对应上述的阈值等级。

PWR_EnterSTOPMode(进入停止模式)

void PWR_EnterSTOPMode(uint32_t PWR_Regulator,uint8_t PWR_STOPEntry);

PWR_Regulator可选择宏:PWR_Regulator_ON、PWR_Regulator_LowPower。

PWR_STOPEntry可选择宏:PWR_STOPEntry_WFI、PWR_STOPEntry_WFE。

#define __WFI __wfi
#define __WFE __wfe

PWR_EnterSTANDBYMode(进入待机模式)

void PWR_EnterSTANDBYMode(void);

进入待机模式必须开启PWR时钟。

你可能感兴趣的:(STM32个人笔记,stm32,单片机,arm)