相信大家对复位电路都不陌生,知道它是和电源、晶振一起构成单片机最小系统的组成部分。由于结构功能过于简单,以至于大部分人都不愿花太多时间去研究,有时候恰恰是那些你忽视的微小事物对产品的成败起到关键性的作用。
复位电路的作用是让单片机处于初始化状态,程序从头开始执行。复位电路设计的好坏,直接影响整个系统是否稳定可靠。
复位电路作用的对象是单片机的RESET引脚,拿89C51系列单片机举例,当系统正常工作时,如果RESET引脚有一个高电平并维持2个机器周期以上,则单片机响应复位动作。
单片机的复位可分为低电平复位和高电平复位,这是由厂家决定的,区分的方式可以看数据手册如果复位脚RESET字母上方有上划线,那就是低电平复位,反之是高电平复位。
单片机的复位可以分为三种情况:上电复位、手动复位、程序自动复位。
上电复位的意思是单片机每次上电都会给RESET脚一个复位信号,让单片机从一个固定的相同状态重新开始工作;手动复位可以通过一个复位按键让死机或跑飞的程序重新运行;程序自动复位也是让程序在一定时间失去响应的情况下通过自身看门狗模块或者外部看门狗模块给其下达复位指令及操作。
图1是最常见的低电平上电复位原理图,我们来分析这个过程,上电前C1两端电压为0。上电后,电流从5V流经R1、C1到地,由于电容C1两端电压不能突变,所以上电瞬间RESET脚上电压也为零,并保持一小段时间低电平,这段时间触发单片机复位;随着时间推移,C1两端电压抬升至5V高电平,复位完成。
那么问题来了,这个电阻、电容是不是可以随便取值,答案是否定的,如果取值太小C1瞬间充满电,低电平的保持时间不够例如51单片机的2个机器周期时间长度,那么复位是失效的。
我们给出个结论t≈R1*C1,这个时间要大于数据手册给的持续时间就可以,经计算我们的例子中t=1ms,远远大于数据手册给的持续时间。
手动按钮复位在GND和RESET脚间接一个按钮。当人为按下按钮时, RESET脚就会被GND拉为低电平。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。
程序自动复位也分两种,一种是单片机内置看门狗,对看门狗寄存器初始化,即启动看门狗,在主循环程序中不停的刷新看门狗,俗称喂狗。一般都有一个看门狗专用寄存器,因不同单片机,寄存器不同,启动方法和刷新也稍有不同,内置看门狗又称窗口看门狗,它的时钟来源于系统时钟,只能解决软件程序导致的系统跑飞。一旦外部晶振停振,内置看门狗也无法计时,系统也将无法运行。
另一种是外部看门狗,他可以解决单片机内置看门狗无法解决的问题,因为它有自己独立的时钟源,一旦单片机因为各种原因停止喂狗,外部看门狗将复位单片机。
当然复位电路还可以衍生出很多千变万化的类型比如低电压复位电路(LVR),有些单片机自带低电压复位模块,但当内建的低电压复位电压可能与应用不符时就可以采用外部低电压复位电路如下图,供电电压正常时,RESET端口高电平,当供电电压下降到低于稳压二极管的稳压电压(Vz+0.7V)时,三级管导通,RESET脚拉低,单片机复位。
低电压复位电路还有如图5的集成电路方案,供电电压低于2.9V时复位
现在还有好多把外部看门狗电路和低电压复位电路做在一起的集成方案如SP706等。最后强调一点,RESET的走线越短越好,复位电路一定要尽可能靠近MCU,不能因为MCU出线多或周边器件太多把复位电路放在离MCU较远的地方,这大大增加系统的不稳定因素。
转帖自网络