我最近在整理单片机的复位问题,很多文献都过分的集中于外部复位,特意把内部复位的东西整理一下,我参考了很多的飞思卡尔的文档。我一直觉得飞思卡尔的文件系统和它的品质都是优秀的,虽然目前ST的单片机很有竞争力。
① 上电复位:是由外部总线产生的一种异步复位,单片机电压监测电路检测到电源电压VDD上升时,会产生一个上电复位脉冲,由内部计时器进行延时后等待电源电压上升到可以工作的电压后,整个单片机系统就完成了上电复位。注意上电复位电路并不会检测延时过后的系统电压,如果此时的电压低于单片机的最小工作电压,整个上电复位就失效了。
图所示是整个上电复位的过程,其步骤如下:
1)电源电压VDD大于一定范围时候,通常是1V以上的时候,单片机内部的CMOS的逻辑电路开始运作,这个电压我们也称为VOS。在这个电压下,不管使用的何种外部振荡器,振荡电路将开始起作用产生信号。
2)随着振荡器的运行,所有的内部逻辑必须进行初始化以保证处在正确的逻辑状态下。
3)此时上电复位电路内部的计数器将开始工作,一般而都会维持一定的复位周期延迟,飞思卡尔的HC08系列的复位时钟延迟tPOR等于4096个机器周期,并且复位逻辑将维持内部复位信号。
4) 当持续时间大于tPOR,上电复位电路的复位逻辑将反转并关闭上电复位电路。没有其他复位源的时候,单片机将退出复位状态并开始执行的代码。
因此如果依靠单片机内部的上电复位完成整个过程,复位与电源电压的上升率有很大的关系,需要确认电压的上升速率应大于最小上升速率,如果不注意这点将造成单片机的无法启动,计算方法如下:
VRUN = VOS +MVDD_SLEW×4096/FOSC
其中VRUN是单片机的最小工作电压,FOSC-是内部总线频率,MVDD_SLEW是电源电压上升率。
② 欠压复位:单片机内部电压监控电路形成的异步复位,当电源电压VDD电压小于一定触发阈值时,发出复位信号并保持到电源电压大于欠压复位功能恢复电压。欠压复位是用来确保单片机的电源并不在有效工作电压范围之内时内部产生复位过程,使得单片机保持在正确的状态中,欠压复位有三个重要的参数:
1) VTR是欠压复位功能恢复电压,大于该电压值的时单片机的欠压复位状态就结束了;
2)VTF是欠压复位功能触发电压,小于该电压值的时单片机将保持欠压复位状态;
3) VHYS是欠压复位的回差电压,VHYS=VTR - VTF;这个电压的主要目的是防止电源有噪声干扰的时候频繁的反弹,一般在0.1~0.2V之间。
如图所示,欠压复位是在电源电压达到VTR以后,内部的计数器才工作,因此在上电复位完成以后,欠压复位继续工作直至欠压复位完成既定的延迟后,整个单片机才会退出复位状态;因此内部引入欠压复位电路对于解决电源电压上升率过快和过慢的情况都有很大的帮助。需要注意的是低电压的复位电平阈值是和供电电压相关的,并且按照比例设定的无法更改,因此如果系统上不合适则需要考虑外部的复位方法。