什么是看门狗定时器?看门狗定时器的工作原理及配置区别
2024-04-01 11:00:02 5,586
看门狗定时器(Watchdog Timer, WDT)是一种硬件电路或软件机制,主要用于监控嵌入式系统或计算机系统的运行状况,以确保系统在遇到软件错误、死循环、外部干扰等问题时能够自我恢复。它是@单片机(MCU)或@微处理器系统中的一个重要组件,尤其在那些长时间运行且需要高度可靠性的应用中。
看门狗定时器的工作原理如下:
-
设定一个计数器,开始时初始化一个定时周期(比如几毫秒到几秒不等)。
-
在系统正常运行时,软件会在每个定时周期结束前主动清除或重置看门狗定时器。
-
如果由于任何原因(如程序跑飞、死机或硬件故障)导致软件未能在规定时间内刷新看门狗,即没有对其进行复位操作,那么看门狗定时器计数到预设的最大值时,就会产生一个复位信号。
-
这个复位信号会使得整个系统或部分关键子系统复位,从而回到初始状态重新启动,帮助系统摆脱不可预测的错误状态,恢复正常的运行秩序。
在实际应用中,#看门狗定时器#既可以是集成在微控制器内部的硬件模块,也可以是外部独立的硬件电路,或者在操作系统级别实现的软件看门狗机制。通过合理配置和使用看门狗定时器,能够显著提升嵌入式系统的稳定性和可靠性。
看门狗定时器的不同配置
在本文中,道合顺将向您展示看门狗定时器 (WDT) 在不同配置中的具体执行情况。
单级看门狗
对于此配置,系统时钟应用于计算机和看门狗定时器,如上图所示。虽然其他 WDT 可能使用独立的时钟设备,但它们具有相同的工作原理,即一旦时钟倒计时到某个值(超时),看门狗定时器就会向计算机发出 RESET 信号。
如果计算机正常运行,当时钟开始从头开始倒计时时,它会向 WDT 发送 RESTART 指令(踢狗)。
多级看门狗
如上图所示,一组定时器(时间阶段)堆积起来形成链式反应的三阶段 WDT。每次阶段 1 或阶段 2 超时时,都会触发纠正操作并到达后续阶段。一旦 stage3 超时,看门狗定时器就会向计算机发出 RESET,设置计算机重新启动。
NMI 看门狗
NMI 看门狗有点像多级看门狗。从技术上讲,它包含 2 个时间阶段,在这两个时间阶段之间向计算机发送不可屏蔽中断 (NMI)。 NMI用于通知计算机重置即将到来,然后计算机可以将堆栈和调试信息存储到非易失性存储器的区域中以供开发人员最近访问。
从内部与外部看门狗定时器
内部看门狗定时器
在当今的计算机编程实践中,几乎所有的微控制器(MCU)都集成了看门狗外设。其中一些可能包含多个不同配置的 WDT。使用内部看门狗可以节省大量成本,但可能会受到失控代码的污染。与外部看门狗定时器相比,它易于使用且对温度不太敏感。
外部看门狗定时器
另一种 WDT 是嵌入系统中的独立 IC。由于它不会像内部 WDT 那样受到失控代码的影响(如果部署得当),因此它被认为是一种更安全的类型。另外,外部看门狗定时器也可以监控 VCC 电源。此外,由于MCU的省电方法,必须计算其超时设置以匹配高速和低速时钟模式。
独立看门狗定时器与窗口看门狗定时器之间的区别
独立看门狗定时器(IWDT)
与窗口看门狗定时器相反,独立看门狗定时器也称为非窗口看门狗定时器。如前所述,它只是一个递减定时器;当计数到零时,它向计算机发送复位信号。
•它使用内部约40kHz的RC振荡器运行
•具有12位递减计数器
•它只有一层楼面
•有硬件版本和软件版本
•它不能像窗口看门狗定时器那样产生中断
•它通常用于监视硬件故障,因为它依赖于独立时钟并在主应用程序之外运行
窗口看门狗定时器(WWDT)
WWDT 与 IWDT 的不同之处在于它确定计算机是否应重新启动。它用一个“窗口”来限制踢狗的时间;踢动必须发生在窗口内(下图中的绿色区域),否则它们被识别为故障,然后将触发重置指令。
•它使用与系统共享的时钟运行
•它有一个7位递减计数器
•它有一个下限和一个上限
•仅由软件控制
•与IWDT不同,它可能在复位之前产生中断以提醒计算机
•它通常用于检测软件故障,因为它与系统使用共享时钟
IWDT & WWDT 启动时间的计算
看门狗定时器
T输出=(4×2 PRER ×rlr)/32
WWDT
T wwdg =(4096×2 WDGTB ×(T[5:0]+1 ) )/RCC PCLK3
如何选择看门狗定时器
- 如果您的项目需要更高的计时精度,建议最好购买集成了WWDT的微控制器。
- 如果您有更大的预算,始终建议应用外部 WDT 以增加一层安全性。
- 使用比 WWDG 设置的周期长得多的 IWDG 来备份 WWDG。