看似乖巧的看门狗,也有比较调皮的一面,在烧录无法喂狗的特殊情况下仍会毫不留情的复位芯片,造成烧录失败,该如何避免这种情况的发生吗?
初识看门狗
嵌入式产品设备在电源瞬变、电磁干扰、 静电放电、极端温湿度等复杂环境的干扰下可能会造成程序异常,从而使系统陷入瘫痪状态,这时候我们就希望设备能够自动复位,而不需要人工干预,看门狗定时器可以帮助捕获和重置已经“失控”的设备,实现无人值守,提高系统可靠性。
看门狗又叫 watchdog timer,是一个定时器电路,一般有一个输入端用来喂狗,一个输出端RST接到芯片的复位引脚,芯片正常工作的时候,每隔一段时间输出一个信号到喂狗端,给看门狗清零,如果超过规定的时间不喂狗,看门狗溢出,就会给出一个复位信号,拉低RST引脚使得芯片复位。
ZL6300 是广州致远微电子有限公司自行设计的一款集欠压监测复位、手动复位和超时复位功能的看门狗芯片,具有以下特性:
- 上电复位脉冲200mS;
- 支持手动复位;
- 看门狗定时器溢出周期1.7S;
- 低功耗仅9uA;
- 欠压复位。
图1 ZL6300内部结构
应用电路
通过之前对看门狗的初步认识,好的看门狗设计可以大大提升产品的稳定可靠性,我司基于该理念,核心板上均板载独立看门狗,为适应各种复杂环境保驾护航。下面以我司性能卓越的M3568核心板为例,看下它如何灵活设计看门狗电路,对应的原理图如下图2所示,看门狗芯片选型ZL6300,支持手动按键复位和看门狗溢出复位,当系统正常运行时从芯片上电启动到加载看门狗喂狗驱动所需时长约为1S左右,ZL6300溢出周期为1.7S,可以在看门狗溢出周期内及时喂狗清除定时器。
图2 看门狗电路
当芯片处于烧录状态时因内核停止工作,喂狗程序不能正常运行,不能及时喂狗,看门狗溢出拉低芯片复位引脚,导致程序下载失败。为应对这种特殊情况,预留了跳线冒选项,插上短路帽即可禁用看门狗,当J2插上短路帽时,WDO_EN被拉至低电平,Q1三级管处于关断状态,WDI引脚处于高组态,当WDI引脚检测到它处于高阻抗状态时将产生自己的WDI脉冲,对应的喂狗波形如下图3所示。图3 看门狗禁能时喂狗波形
当烧录完成后拔掉跳线帽,Q3处于导通状态,芯片产生的喂狗脉冲WDI_GPIO可通过Q3传递到WDI引脚,实现正常喂狗,对应的喂狗波形如下图4所示。图4 看门狗使能时喂狗波形
总结下面简单汇总看门狗电路设计注意事项
- 看门狗复位脉冲时长要大于CPU的最少复位时间;
- 看门狗溢出周期要大于系统启动到加载看门狗驱动时长,并留有一定的余量;
- 充分利用WDI引脚在高阻态时看门狗定时器功能禁用;
- 避免通过使能看门狗的电源来控制看门狗工作与否,否则会造成系统一直重启,看门狗芯片上电后会输出一个时长200mS的POR信号。