STM32二进制逻辑运算,与或非和异或
扫描二维码
随时随地手机看文章
STM32内部自带了一个可编程电压检测器(PVD),对VDD的电压进行监控可以通过电源控制寄存器PLS[ 2:0 ]位来设置监控电压的阀值,这样通过与VDD电压比较达到了监控电压的目的。
文章被收录于专栏:二猫の家
第一部分。单片机简介
MSC-51单片机指以8051为核心的单片机,由美国的Intel公司在1980年推出,80C51是MCS-51系列中的一个典型品种;其它厂商以8051为基核开发出的CMOS工艺单片机产品统称为80C51系列。
单片机:在一片集成电路芯片上集成微处理器(CPU)、存储器(ROM和RAM)、I/O接口电路,从而构成了单芯片微型计算机,即单片机(single chip Microcomputer)也叫微控制器(MCU)。
CPU( Central Processing Unit ):由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM( Random-Access Memory ):用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM (Read-Only Memory):用以存放程序、一些原始数据和表格;
I/O(input/output)口:四个8位并行I/O口,既可用作输入,也可用作输出;
T/C (timer/counter):两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
数字电路中只有两种电平:高和低
单片机为TTL电平: 高 +5V 低 0V
RS232电平:计算机的串口 高 -12V 低+12V
所以计算机与单片机之间通讯时需要加电平转换芯片max232等其他芯片
数字电路的点评特性据定了他只能用二级制:
二进制逻辑运算,与或非和异或
电源控制状态寄存器(PWR_CSR)中的PVDO用来表明VDD是高于还是低于PVD的电压阀值。当VDD下降到PVD阀值以下或VDD上升到PVD阀值之上时,通过外部中断16线上升或下降边沿触发设置,产生PVD中断。在中断处理函数中做相应的保护措施。
具体由以下图片和表格所示。

图1:阀值与PVD输出关系

表:具体寄存器参数
下面对上面的图片和表格中的数据做一个简要的解释:
(1)
PVD = Programmable Votage Detector 可编程电压监测器
它的作用是监视供电电压,在供电电压下降到给定的阀值以下时,产生一个中断,通知软件做紧急处理。在给出表格的上半部分就是可编程的监视阀值数据。当供电电压又恢复到给定的阀值以上时,也会产生一个中断,通知软件供电恢复。
供电下降的阀值与供电上升的PVD阀值有一个固定的差值,这就是表中的VPVDhyst(PVD迟滞)这个参数,通过列出的PVD阀值数据可以看到这个差别。引入这个差值的目的是为了防止电压在阀值上下小幅抖动,而频繁地产生中断。
(2)
POR = Power On Reset 上电复位;
PDR = Power Down Reset 掉电复位。
POR的功能是在VDD电压由低向高上升越过规定的阀值之前,保持芯片复位,当越过这个阀值后的一小段时间后(图中的"滞后时间"或表中的"复位迟滞"),结束复位并取复位向量,开始执行指令。这个阀值就是表中倒数第4行(min=1.8,typ=1.88,max=1.96)。
PDR的功能是在VDD电压由高向低下降越过规定的阀值后,将在芯片内部产生复位,这个阀值就是表中倒数第3行(min=1.84,typ=1.92,max=2.0)。
(3)
当可以看到POR比PDR大了0.04V,这就是表中倒数第2行,VPDRhyst(PDR迟滞)=40mV。
(4)
当VDD上升越过POR阀值时,内部并不马上结束复位,而是等待一小段时间(Reset temporization),这就是表中的最后一行TRSTTEMPO,它的典型数值是2.5ms。
这个滞后时间是为了等待供电电压能够升高到最低可靠工作电压以上,我们看到POR阀值最小只有1.8V,最大也只有1.96V,都低于数据手册中给出的最低可靠工作电压2.0V,所以这个滞后时间是十分必要的,如果供电电压上升缓慢,尤其是从1.8V升到2.0V以上超过1~2.5ms,则很可能造成上电复位后MCU不能正常工作的情况。
(5)
BOR,即Brown-out reset,欠压复位。
主要用于单片机因为电源电压供电中电压波动或者有较大负载造成过流。可以设置一个电压阈值,当电压低于阈值时单片机产生中断,高于阈值时也产生中断,另外还有机制使阈值允许在某个范围内波动,避免电压在阈值附近波动时造成连续中断。以Microchip的单片机为例,在验证是本人用的是PIC16F877-20I/L。这该单片机是工业版本,工作温度范围为-40°C至+85°C。采用16MHz时钟时,电源范围为+4.0V至+5.5V。模块内部的工作电压(V1)是+5V。显示器显示的是,单片机(V2)上的虚假电量电压约为+1.5V。
还有其他两种情况,“RAM数据保持电压(VDR)”为+1.5V,“典型值”。“VDD启动电压”(VPOR)以确保内部上电复位为0V,“典型值”。将所有这些情况加在一起可以告诉我们,该设备处于危险区域之内。由于电压远高于此电压,因此无法预期上电复位(VPOR)。此外,由于虚假电量处于RAM保持电压下,因此也无法预期的欠压会使设备保持活动状态(VDR)。谁知道设备的其余部分在做什么?
为什么打开BOR可以解决此问题?欠压复位触发规范(VBOR)的范围是+3.7V至+4.35V,典型值为+4.0V。虚假电量电平远低于BOR的触发电压。问题解决了。但是,为什么微控制器在实验室中可以正常工作并以许多次电源循环正常运行仍然是个谜。