上电复位的实现及稳定性设计
2.1 上电复位
上电复位(Power OnReset,POR),即系统上电时通过复位电路,在RST引脚提供一个足够长时间的复位电平信号,直至系统电源稳定后,再撤销复位电平。在嵌入式系统中,上电复位是系统启动初始化复位,全面而系统地复位处理器内的所有逻辑单元与模块,将初始化内部逻辑操作,如存储器控制器、中断控制器和I/O引脚等的配置。
上电复位是保证嵌入式系统正常运行的基本操作。通常处理器芯片内部自带上电复位电路,图2(a)所示为某MCU(微控制器)Reset引脚示意图,内部自带上电复位电路。MCU芯片上电时,片内POR将产生内部复位信号以初始化芯片内的数字模块,其时序如图2(b)所示。
有的处理器芯片通过在片外添加RC延时电路来得到上电复位信号。RC复位电路的复位脉冲宽度由芯片要求的复位时间决定,持续时间取决于RC电路参数,电容太大复位时间很长,电容太小复位时间不够,不足以稳定复位。
2.2 上电复位失效及应对措施
实际工作时,由于各方面的原因,上电复位会失效。由于受到干扰、电源波动、误操作等原因,短暂的电压下降造成供电恢复时由于电压没有满足POR的发生条件,复位端的低电平复位信号无法启动系统重新复位工作,此时会出现系统死机;电源二次开关时间间隔太短时,复位不可靠;当电源电压中有浪涌现象时,可能在浪涌消失后不能产生复位脉冲。这些现象并不频繁,但对于某些特殊应用场景,如不能随时进行手动复位的远程自动控制系统,却是致命的。
出现失效时,常采用提高复位门限来应对,使复位门限位于处理器正常工作电压范围内,且接近处理器正常工作时的门限。另一应对措施是延长复位信号时间,让复位信号在电压值恢复后维持足够长的时间。电源稳定后还要经过一定的延时才撤销复位信号,以防止电源开关或电源捕头分一合过程中引起的抖动影响复位。为了解决电源毛刺和电源缓慢下降(电池电压不足)等问题引起的POR不可靠现象,有设计人员在RC电路中增加了二极管放电回路,在电源电压瞬间下降时使电容迅速放电,这样,一定宽度的电源毛刺也可令系统可靠复位。
2.3 实例分析:快速开关机单片机启动不稳定
笔者曾经做过一个ZigBee物联网项目,采用ZigBeeSoC芯片,硬件结构如图3所示,主要包括一个8051的MCU核和ZigBee收发器。调试时,发现ZigBee模块快速关机快速开机,即二次开机时不稳定,有时启动不正常,功能不能实现。在软件里加Trace信息,发现当快速开关机时MCU并没有正常启动,没有进入所需要的初始化和主循环。避免快速关机开机,则可以正常启动。当嵌入式系统关机后立即再开机,有时不能正常工作,是因为复位不充分,这是嵌入式系统的共同点。
发现,由于SoC芯片里有内部POR,片外没有加RC复位电路。而工作电源VDD_3V上有20μF电容,下电时不能快速放电。添加外部RC复位电路(100kΩ电阻和1μF电容),延长复位时间,电源