首页/文章/ 详情

嵌入式学习(六)—STM32电源控制器

1年前浏览4168

任何一个嵌入式控制器,都会有相对应的电源控制模块。对于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 备份寄存器

  1. 将 RCC_APB1ENR 寄存器中的 PWREN 位置 1,使能电源接口时钟.

  2. 将电源控制器(PWR_CR)DBP位置1,使能备份域的访问;

  3. 选择RTC时钟源

  4. 通过对RCC备份域控制器寄存器(RCC_BDCR)中的RTCEN[15]位进行编程,是能RTC时钟

访问备份 SRAM

  1. 将 RCC_APB1ENR 寄存器中的 PWREN 位置 1,使能电源接口时钟.

  2. 将电源控制器(PWR_CR)DBP位置1,使能备份域的访问;

  3. 通过将RCC AHB1外设时钟使能寄存器(RCC_AHB1ENR)中BKPSRAME位置1,使能备份SRAM时钟。


    RTC 和 RTC 备份寄存器
    实时时钟 (RTC) 是一个独立的 BCD 定时器/计数器。RTC 提供一个日历时钟、两个可编程闹 钟中断,以及一个具有中断功能的可编程的周期唤醒标志。

调压器

嵌入式线性调压器为备份域和待机电路以外的所有数字电路供电。调压器输出电压约为 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 引脚已为高电平,系统将检测到另一唤醒事件。

来源:不懂幽默的秦二
电源电路通用控制SCL
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-06-21
最近编辑:1年前
点墨设计
本科 | 高级硬件工程... 十年饮冰,难凉热血!
获赞 0粉丝 6文章 48课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈