为应对日益复杂的处理任务,越来越多的应用会使用微处理器搭载各种操作系统的方案。操作系统的启动周期一般在十几秒,有的甚至在一分钟以上。另外,为保证在程序跑飞时系统可自恢复,在许多对可靠性要求较高的应用中,外置看门狗定时器也是不可或缺的。此类定时器的溢出周期一般为一两秒。由于微处理器与看门狗芯片是同步上电,在看门狗定时器的溢出周期内微处理器必须提供脉冲信号来喂狗,但若系统未完全启动,又无法提供脉冲信号,无脉冲信号,看门狗溢出,系统复位……如此会进入死锁状态。
在微处理器超长启动周期中,如何有效的管理外部看门狗,本文将做详细探讨,并提供行之有效的参考设计电路。
微处理器多功能复位管理芯片
以UM706为例,这是一款微处理器多功能复位管理芯片,集看门狗定时器、按键复位、上电/掉电复位、电压跌落预警等多种功能于一身,内置抗干扰电路,性能稳定可靠,适合对可靠性要求高的应用场合。
图1. UM706内部框图
典型应用
UM706的一个典型应用如图2所示。电路中,看门狗输出与手动复位输入相连,微处理的复位触发信号可以是上电/掉电、按键接地或看门狗定时器溢出。该电路非常简洁,可同时对多种复位信号进行管理,但是缺点也很明显,就是前文提到的,若微处理器启动周期超出看门狗溢出周期,复位信号将反复被触发,系统死锁。
图2.典型应用
微处理器启动过程中禁止看门狗
针对图2应用电路的不足,巧妙的增加一个SPDT(单刀双掷)模拟开关UM3157,可以实现在微处理器启动期间禁止看门狗。
UM706的规格书指明,当看门狗输入端WDI悬空或三态时,看门狗禁止,内部计数器停止计数,输出端将保持高电平。充分利用这一特性,处理器启动期间,通过模拟开关使WDI选通到悬空通道(如图4所示),看门狗禁止,不影响系统正常启动;待系统启动完毕,连接EN的I/O引脚输出控制电平,使WDI选通到另一I/O引脚,看门狗使能,实现正常的喂狗操作(如图5所示)。另外,需特别注意的是,一般处理器上电后,I/O引脚默认输出高电平或低电平,无论哪种情况,只需保证启动期间WDI悬空即可,故图3中NC与NO引脚哪个悬空,哪个接处理器I/O,视具体情况而定。
图3的应用电路,可以说非常实用,UM3157为SOT363封装,尺寸仅2mm*2mm,成本非常低,占用处理器资源也很少,只需一根额外的I/O引脚控制模拟开关的通道选择。
图3.利用SPDT模拟开关实现启动过程中禁止看门狗
图4.启动期间模拟开关状态
图5.启动完毕模拟开关状态
微处理器启动过程中的看门狗禁止周期设置
在某些应用中,客户希望启动过程也要在看门狗的监控中,也就是说万一系统启动失败,看门狗可以自动输出复位信号让系统重新启动,这在网络远程启动,无人值守的状况下非常必要。为实现这一目的,要求看门狗溢出周期至少要比系统启动周期长,但实际上市面上基本没有溢出周期一分钟以上的看门狗芯片。
如图6所示,在图3电路基础上增加555定时器搭建的单稳态触发器,通过设置外部RC元件参数,可灵活设置看门狗的禁止周期,若系统在预先由RC元件设定的时长内未完成启动,看门狗重新被使能,再经短暂的溢出周期后(UM706看门狗溢出周期典型值1.6秒),输出低电平,系统被复位,重新启动,直至成功。
图6.利用555定时器设置看门狗禁止周期
原理分析:无论何种原因触发复位信号,上电/掉电、按键接地或看门狗溢出,输出0电平,即555电路TRIG引脚的输入信号vi为0电平,由于vi连接至555定时器内部比较器的同相端,该比较器的反相端通过内部分压电路连接到,此时,该比较器输出为0,即内部RS触发器的置1端为0,则RS触发器输出1,OUT引脚输出1,vo为1,模拟开关COM选通到悬空通道NO,看门狗禁止。与此同时,555定时器内部放电开关管由导通态变为截止态,单稳触发器进入暂稳态,电容C1开始充电,放电端电压vc“缓慢”上升,如图7所示。看门狗禁止周期由R4和C1设定,
通常R的取值在几百欧姆到几兆欧之间,电容的取值范围为几百皮法到几百微法,的范围为几微妙到几分钟。但越大,其精度和稳定度也要下降。
当放电端电压,555定时器内部RS触发器置0端为0,RS触发器输出0,vo=0,模拟开关COM选通到通道NC,看门狗使能,若启动正常,微处理器可正常喂狗。与此同时,555定时器内部放电开关管由截止态变为导通态,单稳触发器进入稳态。
图7.单稳触发器波形
图6的应用电路,本质上是一种双看门狗设计,处理器启动过程中利用555定时器,对启动过程进行长看门狗周期管理;待启动完毕,电路自动切换至UM706内部看门狗,对程序运行进行短看门狗周期管理;其中,模拟开关UM3157起到桥梁的作用,把两部分巧妙的组合成一个有机整体。