以STM32单片机解析说明PVD的使用

前言
有时在一些应用中,我们需要检测系统是否掉电了,或者要在掉电的瞬间需要做一些处理。stm32就有这样的掉电检测机制——pvd(programmable voltage detecter),即可编程电压检测器。通过pvd我们可以设定一个基准电压,当芯片的供电电压高于或低于该基准电压时便产生pvd中断,我们可以在pvd中断里做一些处理。
pvd介绍
本文以stm32f1x为例,来说明pvd的使用。
用户可以利用pvd对vdd电压与电源控制寄存器(pwr_cr)中的pls[2:0]位进行比较来监控电源,这几位选择监控电压的阀值。
通过设置pvde位来使能pvd。电源控制/状态寄存器(pwr_csr)中的pvdo标志用来表明vdd是高于还是低于pvd的电压阀值。
该事件在内部连接到外部中断的第16线,如果该中断在外部中断寄存器中是使能的,该事件就会产生中断。当vdd下降到pvd阀值以下和(或)当vdd上升到pvd阀值之上时,根据外部中断第16线的上升/下降边沿触发设置,就会产生pvd中断。例如,这一特性可用于用于执行紧急关闭任务。
由pls[2:0]的介绍可以发现pvd的电压阈值共有8个等级,实际使用时可根据自己的实际情况进行选择。
对于软件编程中具体如何实现可以自行编写相关代码。
pvd的作用
在实际做产品/项目的过程中,可能大家对pvd的作用会忽视掉,下面列举pvd的作用:
01
记录设备掉电时间
这个很好理解,可能业务上就有这个需求,或者可以利用这一点来完成低功耗设备的待机时长测试。
02
通知其他处理离线
假如设备中有由干电池供电的mcu1和由锂电池供电的mcu2,mcu1的部分功能可能需要mcu2来完成,mcu1需要知道mcu2是否离线(因为锂电池可拔插,可能随时被拔)。这种情况就可以在mcu2上利用pvd来通知mcu1。通知的方式有很多,例如串口直接通知另一方自己将要断电了。
ps:当然也可通过mcu2监听mcu1的电源来实现。
03
防止掉电过程中程序跑飞
小编在之前设计的一款产品有一定的概率会出现程序丢失的情况,最初怀疑竞争对手恶意破坏或竞争对手尝试读取程序导致程序自动擦除。
后来经过实际测试发现:由于设备电压降落较慢,下电时间较长(约20ms)。在下电过程中电压较低/电压不稳定时pc指针乱跑(即所谓的程序跑飞),正好pc指向了代码中擦除flash的位置。(设备进行isp程序升级需要将自身的flash擦除写入新数据)。
关于什么是isp升级,可以参考下方推荐阅读中的第二篇文章。
后来最终的解决方案为:在代码中增加pvd功能,在pvd中断中进行软件复位,保证程序不跑飞。


如何构建一个廉价的系统来检查电源网络的状态
采用DSP TMS320F28335的三相SPWM变频电源的
互联网的发展历程是怎样的
首款旗舰手K20 Pro正式亮相,Redmi手机矩阵布局完毕
OLED透明屏的市场规模预测:柔性设计引领未来发展
以STM32单片机解析说明PVD的使用
p+f安全棚是什么,倍加福P+F安全棚的应用说明
全面分析全球及国内光模块的市场前景
小米Note2最引以为傲的双曲面屏,最终被证实自打脸?
搪瓷反应釜脱瓷的修复方法
美国投行分析师:苹果iPhone将在中国大幅降价
捷通灵云支持交通银行率先推出首款实体机器人“交交”
统一平台下的WEB服务
人工智能存储平台能满足需求吗
基于测温安检门人体测温筛查的解决方案
对于纯电动汽车而言最不能忽视的地方就是动力电池
利用ATmega16和nRF905芯片实现无线数据传输系统的设计方案
安森美推出Hyperlux LP图像传感器系列
天威技术推出适用于BRO TN821/851系列激光兼容芯片
电子连接器是什么_电子连接器的材料