上电复位是指上电压从无到有在RESET处会先处于高电平一段时间,然后由于该点通过电阻接地,则RESET该点的电平会逐渐的改变为低电平,从而使得单片机复位口电平从1转到0,达到给单片机复位功能的一种复位方式。复位方式除了上电复位外,还有手动复位。
电容在上接高电平,电阻在下接地,中间为RST。这种复位电路为高电平复位。
其工作原理是:通电时,电容两端相当于是短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降,降到一定程度,即为低电平,单片机开始正常工作。
1、上电复位:上电瞬间,电容充电电流最大,电容相当于短路,RST端为高电平,自动复位;电容两端的电压达到电源电压时,电容充电电流为零,电容相当于开路,RST端为低电平,程序正常运行。
2、手动复位:首先经过上电复位,当按下按键时,RST直接与VCC相连,为高电平形成复位,同时电解电容被短路放电;按键松开时,VCC对电容充电,充电电流在电阻上,RST依然为高电平,仍然是复位,充电完成后,电容相当于开路,RST为低电平,正常工作。
为什么需要复位:
1:因为微处理器(如我们常说的电脑CPU芯片和高端ARM)和微控制器(单片机、低端ARM什么的)芯片都是数字电路芯片,其正常工作是只有0低电平和1高电平这两个电平状态,属于离散系统。而供给芯片的电源输入却是模拟电路,属于连续线性系统。合上开关,芯片的VDD和VSS之间的电压要达到数字芯片可正常工作的电压是需要几毫秒到十几毫秒的过程的。
2:因为微处理器和微控制器是数字电路芯片,其需要时钟信号才能工作。不管是内部芯片自带的低频RC振荡器还是外接晶振或者其他时钟电路,从上电到时钟电路正常起振也是需要时间的。可以看下图我用示波器测到的:ARM9上电那几百毫秒内,电源输入VCC对地电压(黄线)、及18.492M时钟(绿线)引脚对地电压发生的情况。可以看到芯片在给电的10毫秒内电源开始升到正常供电水平,但至少500毫秒后晶振才开始正常输出时钟(之前的虽然有时钟信号,也可以让CPU工作,但波形不稳定,按此状态运行的CPU容易出错)
所以,需要在芯片上电的时候给复位端一个复位信号让微处理器和微控制器内部的CPU在刚上电那段时间不要工作。
上电复位是微处理器或微控制器都必须存在的一个重要操作,没有这个操作CPU直接上电工作的话非常容易出错(程序跑飞、寄存器数据错误……)。