登录/注册

STM32PVD低电压检测

STM32PVD低电压检测

更多

好的,我们来详细解释一下 STM32 中的 PVD (Programmable Voltage Detector - 可编程电压检测器),特别是它在低电压检测方面的应用。

一、PVD 是什么?

PVD 是 STM32 微控制器内部集成的一个硬件功能模块。它的核心作用就是实时监控微控制器的主电源电压 (VDD/VDDA)。当 VDD/VDDA 的电压下降到用户预先设定的一个阈值 (VPVD) 以下时,PVD 能立即产生相应的信号。

二、PVD 如何用于低电压检测?

  1. 电压比较器: PVD 内部包含一个比较器。
  2. 可编程阈值 (VPVD): 用户可以通过配置特定的寄存器位 (通常是 PWR_CR 寄存器中的 PLS[2:0] 位) 来设置一个检测阈值电压 (VPVD)。这个阈值通常在芯片参考手册中给出一个范围(例如 2.0V - 2.9V,具体范围取决于芯片型号),并有多个可选的档位(如 2.0V, 2.1V, 2.3V, 2.5V, 2.7V, 2.9V)。
  3. 监控 VDD: 比较器会持续地将当前的实际 VDD/VDDA 电压与预设的 VPVD 阈值进行比较。
  4. 检测到低压: 当 VDD 的电压低于设定的 VPVD 阈值时,比较器输出状态改变。
  5. 产生信号:
    • 中断: PVD 可以配置为产生一个中断请求。这是最常见的方式。当低压被检测到时,CPU 会跳转到对应的中断服务程序 (PVD_IRQHandler)。
    • 事件: PVD 也可以配置为产生一个事件。这个事件可以直接连接到 NVIC 用于唤醒,或者(在某些型号上)连接到内部的复位发生器(PVD_RST),当电压跌落到 VPVD 以下时自动触发芯片复位(后一种用法有时也称为 POR/PDR 或 BOR 复位)。
    • 状态标志: 无论是否使能中断/事件,PVD 的检测状态(VDD < VPVD?)都会反映在一个状态寄存器位(通常是 PWR_CSRPWR_EXTSCR 中的 PVDO / PVD1 / PVMO 等位)上,软件可以随时读取查询。

三、为什么要用 PVD 做低电压检测?主要应用场景

  1. 安全关闭/数据保护: 这是最重要的应用。当系统供电不足(如电池耗尽、电源故障、大负载瞬变)导致 VDD 急剧下降时,正常的程序执行会变得不可靠,RAM 内容甚至寄存器都可能丢失。PVD 可以在 VDD 降至可能导致“代码乱飞”或“数据丢失”的临界点之前(即低于 CPU/存储器可靠工作的最小电压之前)提前预警
    • 怎么用? 将 VPVD 阈值设置为略高于芯片要求的最小工作电压(例如,芯片要求在 1.8V 以上工作,可将 VPVD 设为 2.0V 或 2.1V)。在 PVD 中断服务函数中:
      • 立即保存关键数据到非易失性存储器(如 Flash, EEPROM, 备份寄存器)。
      • 关闭外设以降低功耗,防止不确定状态。
      • 可能进入低功耗停机模式等待电压恢复或彻底关闭。
      • 目的: 在系统完全崩溃前保存用户设置、运行状态、测量数据等关键信息。
  2. 可靠复位: 如上所述,配置 PVD 事件连接到复位发生器(如果芯片支持)。当 VDD 跌落到不可靠工作的阈值 (VPVD) 以下时,芯片立即自动复位,防止代码执行出错。电压回升超过 VPVD 后,芯片会经历一个正常的复位过程重新启动。这比不可预测的系统崩溃要可靠得多。
  3. 电源状态监测: 在不需要数据保存的场景下,可以用它检测电源是否正常,或者电压是否低于某个警示水平。读取状态位或处理中断/事件可以触发警示灯、蜂鸣器或在软件中记录电源事件。
  4. 低功耗管理: 在电池供电应用中,监测电压可以评估电池电量状态(虽然不如专用电量计精准,但简单有效),并在电压偏低时提醒用户或执行降级操作。

四、配置和使用 PVD 的关键步骤(概述)

  1. 使能 PWR 时钟: 在 RCC 中使能 PWR 外设的时钟 (例如:__HAL_RCC_PWR_CLK_ENABLE() in HAL)。
  2. 配置触发电压:PWR->CR / PWR->CR2 / PWR->VOSCR (取决于系列) 中设置 PLS[2:0] 位,选择所需的 VPVD 阈值。
  3. 启用 PVD: 在同一寄存器中将相应的使能位置 1 (例如 PVDE, PVDEN 等)。
  4. 配置中断/事件:
    • 中断:PWR 相关的扩展中断寄存器 (如 EXTI, EXTICR, EXTSCR) 中使能 PVD 中断线,在 NVIC 中配置和使能 PVD 中断优先级。
    • 事件: 将 PVD 事件连接到目标(唤醒线、复位发生器)。
  5. (中断模式)编写中断服务函数:PVD_IRQHandler 函数中:
    • 检查状态标志 (PVDO) 确认是 PVD 触发(排除其他共用中断源)。
    • 清除挂起标志(如果需要)。
    • 执行紧急处理程序(保存数据,关闭外设等)。
    • 可以读取 PVDO 判断当前电压状态(是否低于 VPVD)。
  6. (状态位模式)轮询读取:PWR->CSR / PWR->EXTSCR 中读取 PVDO / PVD1 / PVMO 位来检测低压状态。

五、重要注意事项

  1. 阈值范围: 仔细查阅你所使用的具体 STM32 型号的参考手册 (Reference Manual)。不同系列、不同型号支持的 VPVD 阈值范围和可选档位不同。务必确保选择的阈值高于芯片保证正常工作的最低电压 (VDDmin)。
  2. 启动延迟: VPVD 分频器:为了提供稳定的参考电压和进行比较,PVD 使用内部的一个带分频器的电压参考。手册会说明设置 VPVD 阈值后需要等待一段时间 (tSTART) 才能开始有效检测。配置后需要延迟或等待状态位就绪。
  3. 中断与事件的选择:
    • 需要立即、在 CPU 还能正常运行时保存数据 -> 用 中断
    • 追求最高可靠性,在异常低电压时立即复位系统 -> 用 连接到复位的PVD事件 (如果支持)。
    • 只是作为状态监测,不需要立即响应 -> 轮询 状态位
  4. 外部干扰: 非常快的电压瞬变(毛刺)可能导致 PVD 误触发。如果应用中存在大电流开关负载,要考虑电源滤波或软件添加防抖逻辑(例如在中断中延时再确认状态位)。
  5. 低功耗模式: 在部分低功耗模式下(如 Sleep, Stop),PVD 可能仍然工作(具体看手册说明),可以作为唤醒源(配置为事件模式时)。在更低功耗模式(如 Standby)下,PVD 通常不工作。
  6. 标志读取: 在中断函数中或查询时,读取 PVDO 位:
    • PVDO = 1:表示 VDD < VPVD
    • PVDO = 0:表示 VDD > VPVD
  7. 电压跌落速度: 如果 VDD 跌落速度极快,即使在中断服务函数中执行操作也可能来不及,特别是在电压跌落到无法可靠操作 CPU/RAM 的临界点之后才触发中断的情况下。临界电压的设置 (VPVD) 要足够高于 VDDmin 以留出处理时间。连接到硬件复位的 PVD 事件是处理极快掉电的最可靠方式。

总结:

STM32 的 PVD 是内置的可编程电压检测器,通过比较 VDD 和预设阈值 VPVD 来检测低电压状况。其主要用途是 在电源电压不足导致系统崩溃前进行安全防护(数据保存)确保可靠复位。使用时需仔细配置触发电压、选择触发方式(中断/事件/状态位),并在中断函数中执行关键保护操作。务必参考具体芯片型号的参考手册进行正确配置。

在实际项目中使用 PVD,请务必参考你所用具体 STM32 芯片型号的官方参考手册和对应的外设库/框架(如 STM32CubeMX、HAL 或 LL 库)的文档及示例代码

STM32L0 PVD监测供电电压怎么能在低于阈值的电压上也产生中断?

最近在做电池电压监控这块,发现STM32自带供电检测功能,而且不需要外围电路做配置。摸索了一翻,设置阈值3.1V,当我的

2024-04-24 07:55:27

STM8L的PVD低电压检测该怎么写?

看了stm8l的资料,知道了可以通过PVD直接对低电压进行程序操作,省去了AD转换那些麻烦问题。但是我从没使用过,看了网上有人发过stm32的

2024-04-18 07:29:11

请问STM32G030K6控制器是否支持PVD呢?

我正在使用 STM32G030K6 控制器,但它无法检测到 PVD。我想知道它是否支持

2022-12-28 12:47:35

MS751瑞盟,低电压、高精度推挽输出比较器 运放方案

电子发烧友网站提供《MS751瑞盟,低电压、高精度推挽输出比较器 运放方案.pdf》资料免费下载

资料下载 jf_23120647 2022-04-25 10:15:52

STM32 PVD的使用(掉电检测

有时在一些应用中,我们需要检测系统是否掉电了,或者要在掉电的瞬间需要做一些处理。STM32就有这样的掉电检测机制——

资料下载 张伟 2021-12-07 14:06:10

dsPIC33CK低电压电机控制板用户指南

dsPIC33CK低电压电机控制板用户指南说明。

资料下载 姚小熊27 2021-04-29 09:51:15

MT-098:低电压逻辑接口

MT-098:低电压逻辑接口

资料下载 佚名 2021-03-21 08:59:53

1.5A高效同步低电压电源变频器芯片HM6350A

HM6350Ais是一种高效率的同步步进上变频器,可以提供高达1.5安培的固定输出高达5伏的低电压源。与大多数升压转换器不同,它包含了在关机、短路、输出电流过载或其他输出高于输入的事件中断开输入

资料下载 h1654156040.5061 2021-03-15 13:54:23

STM32L051 PVD中断的使用说明

有时在一些应用中,我们需要检测系统是否掉电了,或者要在掉电的瞬间需要做一些处理。STM32就有这样的掉电检测机制——

2022-11-24 14:35:39

请问有没有CH573低电压检测的例程?

如题,或者怎么个流程,低电压检测需要开ADC么

2022-05-20 07:27:23

如何解决STM32 PVD中断的问题?

如何解决STM32 PVD中断的问题?

2021-11-16 07:17:09

怎样去使用PVD可编程电压检测器呢

PVD是什么?怎样去使用PVD可编程电压检测器呢?哪些应用场合会用到

2021-10-22 09:00:43

STM32的掉电检测机制——PVD

有时在一些应用中,我们需要检测系统是否掉电了,或者要在掉电的瞬间需要做一些处理。STM32就有这样的掉电检测机制——

2021-08-05 07:48:15

低电压保护是什么意思_低电压保护的应用

本文首先阐述了低电压保护的概念,其次介绍了低电压保护的应用,最后介绍了低电压保护装置的接线要求。

2020-01-15 08:38:50

STM32单片机PVD功能操作流程解析

STM32内部自带PVD功能,用于对MCU供电电压VDD进行监控。通过电源控制寄存器中的PLS[2:0]位可以用来设定监控

2018-12-26 15:41:36

7天热门专题 换一换
相关标签