任何一个嵌入式控制器,都会有相对应的电源控制模块。对于STM32F4xx系列控制来说,器件的工作电压(Vdd)要求介于1.8V~3.6V之间,嵌入式线性调压器用于提供内部1.2V数字电源。
当主电源VDD断电时,可通过Vbat电压为实时时钟RTC,RTC备份寄存器和SRAM(BKP SRAM)供电。
独立 A/D 转换器电源和参考电压
为了提高转换精度,ADC 配有独立电源,可以单独滤波并屏蔽 PCB 上的噪声。
● ADC 电源电压从单独的 VDDA 引脚输入。
● VSSA 引脚提供了独立的电源接地连接。
为了确保测量低电压时具有更高的精度,用户可以在 VREF 上连接单独的 ADC 外部参考电压 输入。VREF 电压介于 1.8 V 到 VDDA 之间。
电池备份域
备份域说明
要在 VDD 关闭后保留 RTC 备份寄存器和备份 SRAM 的内容并为 RTC 供电,可以将 VBAT 引 脚连接到通过电池或其它电源供电的可选备用电压。
要使 RTC 即使在主数字电源 (VDD) 关闭后仍然工作,VBAT 引脚需为以下各模块供电:
● RTC
● LSE 振荡器
● 备份 SRAM(使能低功耗备份调压器时)
● PC13 到 PC15 I/O,以及 PI8 I/O(如果封装有该引脚)
VBAT 电源的开关由复位模块中内置的掉电复位电路进行控制。
备份域访问
复位后,备份域(RTC 寄存器、RTC 备份寄存器和备份 SRAM)将受到保护,以防止意外 的写访问。要使能对备份域的访问,请按以下步骤进行操作:
● 访问 RTC 和 RTC 备份寄存器
将 RCC_APB1ENR 寄存器中的 PWREN 位置 1,使能电源接口时钟.
将电源控制器(PWR_CR)DBP位置1,使能备份域的访问;
选择RTC时钟源
通过对RCC备份域控制器寄存器(RCC_BDCR)中的RTCEN[15]位进行编程,是能RTC时钟
●访问备份 SRAM
将 RCC_APB1ENR 寄存器中的 PWREN 位置 1,使能电源接口时钟.
将电源控制器(PWR_CR)DBP位置1,使能备份域的访问;
通过将RCC AHB1外设时钟使能寄存器(RCC_AHB1ENR)中BKPSRAME位置1,使能备份SRAM时钟。
调压器
嵌入式线性调压器为备份域和待机电路以外的所有数字电路供电。调压器输出电压约为 1.2 V。
此调压器需要将两个外部电容连接到专用引脚 VCAP_1 和 VCAP_2,所有封装都配有这两个引 脚。为激活或停用调压器,必须将特定引脚连接到 VSS 或 VDD。具体引脚与封装有关。
通过软件激活时,调压器在复位后始终处于使能状态。根据应用模式的不同,可采用三种不同的模式工作。
1 运行模式,调压器为 1.2 V 域(内核、存储器和数字外设)提供全功率。在此模式下,调压器的输出电压(约 1.2 V)可通过软件调整为不同的电压值:
2.停止模式,调压器为 1.2 V 域提供低功率,保留寄存器和内部 SRAM 中的内容。
3.待机模式,调压器掉电。除待机电路和备份域外,寄存器和 SRAM 的内容都将丢失。
电源监控器
上电复位 (POR)/掉电复位 (PDR)
本器件内部集成有 POR/PDR 电路,可以从 1.8 V 开始正常工作。
当 VDD/VDDA 低于指定阈值 VPOR/PDR 时,器件无需外部复位电路便会保持复位状态
欠压复位 (BOR)
上电期间,欠压复位 (BOR) 将使器件保持复位状态,直到电源电压达到指定的 VBOR 阈值。
VBOR 通过器件选项字节进行配置。BOR 默认为关闭。可以选择 4 个 VBOR 阈值。
● BOR 关闭 (VBOR0):1.80 V 到 2.10 V 电压范围的复位阈值级别
● BOR 级别 1 (VBOR1):2.10 V 到 2.40 V 电压范围的复位阈值级别
● BOR 级别 2 (VBOR2):2.40 V 到 2.70 V 电压范围的复位阈值级别
● BOR 级别 3 (VBOR3):2.70 V 到 3.60 V 电压范围的复位阈值级别
当电源电压 (VDD) 降至所选 VBOR 阈值以下时,将使器件复位。
可编程电压检测器 (PVD)
PWR 电源控制/状态寄存器 (PWR_CSR) 中提供了 PVDO 标志,用于指示 VDD 是大于还是 小于 PVD 阈值。该事件内部连接到 EXTI 线 16,如果通过 EXTI 寄存器使能,则可以产生中 断。当 VDD 降至 PVD 阈值以下以及/或者当 VDD 升至 PVD 阈值以上时,可以产生 PVD 输 出中断,具体取决于 EXTI 线 16 上升沿/下降沿的配置。该功能的用处之一就是可以在中断 服务程序中执行紧急关闭系统的任务。
低功耗模式
默认情况下,系统复位或上电复位后,微控制器进入运行模式。在运行模式下,CPU 通过 HCLK 提供时钟,并执行程序代码。系统提供了多个低功耗模式,可在 CPU 不需要运行时 (例如等待外部事件时)节省功耗。由用户根据应用选择具体的低功耗模式,以在低功耗、短启动时间和可用唤醒源之间寻求最佳平衡。
器件有三个低功耗模式:
● 睡眠模式(Cortex™-M4F 内核停止,外设保持运行)
● 停止模式(所有时钟都停止)
● 待机模式(1.2 V 域断电)
此外,可通过下列方法之一降低运行模式的功耗:
● 降低系统时钟速度
● 不使用 APBx 和 AHBx 外设时,将对应的外设时钟关闭
1-降低系统时钟速度
在运行模式下,可通过对预分频寄存器编程来降低系统时钟(SYSCLK、HCLK、PCLK1 和 PCLK2)速度。进入睡眠模式之前,也可以使用这些预分频器降低外设速度。
2-外设时钟门控
在运行模式下,可随时停止各外设和存储器的 HCLKx 和 PCLKx 以降低功耗。
要进一步降低睡眠模式的功耗,可在执行 WFI 或 WFE 指令之前禁止外设时钟。
外设时钟门控由 AHB1 外设时钟使能寄存器 (RCC_AHB1ENR)、AHB2 外设时钟使能寄存 器 (RCC_AHB2ENR) 和 AHB3 外设时钟使能寄存器 (RCC_AHB3ENR) 进行控制
在睡眠模式下,复位 RCC_AHBxLPENR 和 RCC_APBxLPENR 寄存器中的对应位可以自动 禁止外设时钟。
3-睡眠模式
进入睡眠模式
执行 WFI(等待中断)或 WFE(等待事件)指令即可进入睡眠模式。根据 Cortex™-M4F 系 统控制寄存器中 SLEEPONEXIT 位的设置,可以通过两种方案选择睡眠模式进入机制:
● 立即休眠:如果 SLEEPONEXIT 位清零,MCU 将在执行 WFI 或 WFE 指令时立即进入睡眠模式。
● 退出时休眠:如果 SLEEPONEXIT 位置 1,MCU 将在退出优先级最低的 ISR 时立即进入睡眠模式。
退出睡眠模式
如果使用 WFI 指令进入睡眠模式,则嵌套向量中断控制器 (NVIC) 确认的任意外设中断都会 将器件从睡眠模式唤醒。
如果使用 WFE 指令进入睡眠模式,MCU 将在有事件发生时立即退出睡眠模式。唤醒事件可 通过以下方式产生:
● 在外设的控制寄存器使能一个中断,但不在 NVIC 中使能,同时使能 Cortex™-M4F 系
统控制寄存器中的 SEVONPEND 位。当 MCU 从 WFE 恢复时,需要清除相应外设的中
断挂起位和外设 NVIC 中断通道挂起位(在 NVIC 中断清除挂起寄存器中)。
● 配置一个外部或内部 EXTI 线为事件模式。当 CPU 从 WFE 恢复时,因为对应事件线的
挂起位没有被置位,不必清除相应外设的中断挂起位或 NVIC 中断通道挂起位。
由于没有在进入/退出中断时浪费时间,此模式下的唤醒时间最短。
停止模式
停止模式基于 Cortex™-M4F 深度睡眠模式与外设时钟门控。调压器既可以配置为正常模 式,也可以配置为低功耗模式。在停止模式下,1.2 V 域中的所有时钟都会停止,PLL、HSI 和 HSE RC 振荡器也被禁止。内部 SRAM 和寄存器内容将保留。
待机模式
待机模式下的 I/O 状态
在待机模式下,除以下各部分以外,所有 I/O 引脚都处于高阻态:
● 复位引脚(仍可用)
● RTC_AF1 引脚 (PC13)(如果针对入侵、时间戳、RTC 闹钟输出或 RTC 时钟校准输出
进行了配置)
● WKUP 引脚 (PA0)(如果使能)
调试模式
默认情况下,如果使用调试功能时应用程序将 MCU 置于停止模式或待机模式,调试连接将 中断。这是因为 Cortex™-M4F 内核时钟停止了。
不过,通过设置 DBGMCU_CR 寄存器中的一些配置位,即使 MCU 进入低功耗模式,仍可 使用软件对其进行调试
对 RTC 复用功能进行编程以从停止模式和待机模式唤醒器件
RTC 复用功能可以从低功耗模式唤醒 MCU。
RTC 复用功能包括 RTC 闹钟(闹钟 A 和闹钟 B)、RTC 唤醒事件、RTC 入侵事件和 RTC 时间戳事件。
这些 RTC 复用功能可将系统从停止和待机低功耗模式唤醒。
通过使用 RTC 闹钟或 RTC 唤醒事件,无需依赖外部中断即可将系统从低功耗模式唤醒(自 动唤醒模式)。
电源控制寄存器
用于 STM32F405xx/07xx 和 STM32F415xx/17xx 的 PWR 电源控制寄存器
(PWR_CR)
位 14 VOS:调压器输出电压级别选择
此位用来控制内部主调压器的输出电压,以便在器件未以最大频率工作时使性能与功耗实现平衡。
0:级别 2 模式
1:级别 1 模式(复位时的默认值)
位 9 FPDS:停止模式下 Flash 掉电 (Flash power-down in Stop mode)
将此位置 1 时,Flash 将在器件进入停止模式后掉电。这样可以降低停止模式的功耗,但会
延长重新启动时间。
0:器件进入停止模式时 Flash 不掉电
1:器件进入停止模式时 Flash 掉电
位 8 DBP:禁止备份域写保护 (Disable backup domain write protection)
在复位状态下,RCC_BDCR 寄存器、RTC 寄存器(包括备份寄存器)以及 PWR_CSR 寄存器的 BRE 位均受到写访问保护。必须将此位置 1 才能使能对这些寄存器的写访问。
0:禁止对 RTC、RTC 备份寄存器和备份 SRAM 的访问
1:使能对 RTC、RTC 备份寄存器和备份 SRAM 的访问
位 7:5 PLS[2:0]:PVD 级别选择 (PVD level selection)
这些位由软件写入,用于选择电压检测器检测的电压阈值
000:2.0 V
001:2.1 V
010:2.3 V
011:2.5 V
100:2.6 V
101:2.7 V
110:2.8 V
111:2.9 V
位 4 PVDE:使能电源电压检测器 ,此位由软件置 1 和清零。
0:禁止 PVD
1:使能 PVD
位 3 CSBF:将待机标志清零 (Clear standby flag),此位始终读为 0。
0:无操作
1:写 1 将 SBF 待机标志清零。
位 2 CWUF:将唤醒标志清零 (Clear wakeup flag),此位始终读为 0。
0:无操作
1:写 1 操作 2 个系统时钟周期后将 WUF 唤醒标志清零
位 1 PDDS:深度睡眠掉电 (Power-down deepsleep)此位由软件置 1 和清零。与 LPDS 位结合使用。
0:器件在 CPU 进入深度睡眠时进入停止模式。调压器状态取决于 LPDS 位。
1:器件在 CPU 进入深度睡眠时进入待机模式。
位 0 LPDS:深度睡眠低功耗 (Low-power deepsleep)此位由软件置 1 和清零。与 PDDS 位结合使用。
0:停止模式下调压器开启
1:停止模式下调压器进入低功耗模式
PWR 电源控制/状态寄存器 (PWR_CSR)
位 14 VOSRDY:调压器输出分级电压就绪标志 (Regulator voltage scaling output selection ready bit)
0:未就绪
1:就绪
位 9 BRE:使能备份调压器 (Backup regulator enable)此位置 1 时,使能备份调压器(用于在待机模式和 VBAT 模式下保持备份 SRAM 内容)。
如果 BRE 复位,备份调压器关闭。仍可使用备份 SRAM 但在待机模式和 VBAT 模式中其内容将丢失。将此位置 1 后,应用程序必须等待备份调压器就绪标志 (BRR) 置 1,指示在待机模式和 VBAT 模式下会保持写入 RAM 中的数据。
0:禁止备份调压器
1:使能备份调压器
位 8 EWUP:使能 WKUP 引脚 (Enable WKUP pin)此位由软件置 1 和清零。
0:WKUP 引脚用作通用 I/O。WKUP 引脚上的事件不会把器件从待机模式唤醒。
1:WKUP 用于从待机模式唤醒器件并被强制配置成输入下拉(WKUP 引脚出现上升沿时从待机模式唤醒系统)。注意:此位通过系统复位进行复位。
位 3 BRR:备份调压器就绪 (Backup regulator ready)
由硬件置 1,用以指示备份调压器已就绪。
0:备份调压器未就绪
1:备份调压器就绪
位 2 PVDO:PVD 输出 (PVD output)
此位通过硬件置 1 和清零。仅当通过 PVDE 位使能 PVD 时此位才有效。
0:VDD 高于 PLS[2:0] 位选择的 PVD 阈值。
1:VDD 低于 PLS[2:0] 位选择的 PVD 阈值。
注意:PVD 在进入待机模式时停止。因此,进入待机模式或执行复位后,此位等于 0,直到PVDE 位置 1。
位 1 SBF:待机标志 (Standby flag)
此位由硬件置 1,清零则只能通过 POR/PDR(上电复位/掉电复位)或将 PWR_CR 寄存器中的 CSBF 位置 1 来实现。
0:器件未进入待机模式
1:器件在此次复位前进入待机模式
位 0 WUF:唤醒标志 (Wakeup flag)此位由硬件置 1,清零则只能通过 POR/PDR(上电复位/掉电复位)或将 PWR_CR 寄存器中的 CWUF 位置 1 来实现。
0:未发生唤醒事件
1:收到唤醒事件,可能来自 WKUP 引脚、RTC 闹钟(闹钟 A 和闹钟 B)RTC 入侵事件、RTC 时间戳事件或 RTC 唤醒事件。
注意:如果使能 WKUP 引脚(将 EWUP 位置 1)时 WKUP 引脚已为高电平,系统将检测到另一唤醒事件。