1. 什么是看门狗?
看门狗电路就是防止微控制器程序跑飞设置的一个复位电路,正常的情况下进行喂狗(计数器重新赋值),异常情况下产生复位信号。
2. 内置看门狗
有的微控制器自带看门狗电路,包括独立看门狗和窗口看门狗。
独立看门狗(IWDG):由专用的低速时钟驱动,主时钟故障也仍然有效的看门狗电路。
窗口看门狗(WWDG):由外设时钟分频后得到,可配置时间窗口来检测程序的非正常行为的看门狗电路。
IWDG和WWDG都是解决软件错误引起的故障,在计数器中装入值,递减,减到下限值之前,若计数器重新被赋值,则不会产生复位信号,否则产生复位信号。
- IWDG适用于在主程序之外,并且对时间精度要求低的场合。
- WWDG应用于对计时要求高的场合。
- 相比于IWDG计数器减小0产生复位,WWDG是减小到某一窗口值,这个值可以设定,这就是窗口定义的来源。
3. 外部看门狗
有的微控制器没有看门狗电路,为了保证其可靠运行,或者弥补初始化前程序跑飞的情况,在外部加看门狗电路,当然外加的硬件看门狗电路没有软件看门狗修改和屏蔽容易。
硬件看门狗一般采用复位芯片实现,如SP706s,里面包含了一个1.6s的定时器,超过1.6s,WDI的电平没有变化,则产生复位信号。所以在MCU的软件里,需要设定WDI对应的I/O在1.6s内电平翻转。另外,在系统上电时,SP706s会自动产生200ms的复位信号,使得MCU正常复位, 而后开始1.6s的溢出检测。
MR:手动复位,低电平有效,相当于看门狗使能引脚。
WDI:看门狗输入
WDO:看门狗输出,1.6s定时器溢出后,输出低电平
RST:复位信号输出,低电平有效。MR为低时才会产生复位信号
PFI:电源失效输入
PFO:电源失效输出
从芯片的内部结构可以看出,RESET输出只跟Vcc与MR信号有关。
这里要注意芯片的监测电压,不同的型号对应不同的监测电压,SP706与SP706s的监测电压是不一样的,给错误的供电会导致复位。
参考文献
《STM32F103中文教程及参考手册》
《SP706 datasheet》