就像一只小狗不停地在女士的手提包,看门狗定时器往往被认为是不必要的。但是,把两者同等对待,是对看门狗的极大侮辱。不像手提包狗,看门狗具有关键的监控功能,可以帮助您监控系统的内部和外部故障,并在故障发生时采取措施。

什么是看门狗定时器?

简而言之,看门狗定时器是一种器件,如果它在特定时间范围内没有从处理器接收到周期性脉冲信号,就会发出复位输出信号。应用该器件的一种方法是将处理器的数字信号输出(GPIO)反馈到外部看门狗定时器的看门狗输入(WDI),如图1所示。TPS3851是一款集成看门狗定时器的监控器,可以监控微控制器的电源轨,并通过外部方式监控来自微控制器(MCU)的数字脉冲。

图1 TPS 3851提供的看门狗监控。

处理器定期向看门狗定时器发送一个脉冲,以指示系统软件的正常运行。如果看门狗定时器在规定的时间范围内没有收到该脉冲(称为看门狗超时),看门狗定时器将发出一个复位输出信号。复位输出信号可以用来通知系统处理器被关闭或冻结,或者用来复位处理器本身。图2显示了看门狗超时期间和超过看门狗超时期间后接收到的脉冲。

图2标准看门狗定时器的操作。

为什么看门狗定时器如此重要?

Watchdog提供了一种机制,用于向系统发出警报或重置软件被冻结或停止的处理器。虽然没有人会故意设计会死机的软件,但是优秀的系统设计师会为失败做准备,因为提前计划总是好的。如果没有这种监控,处理器可能会无限期地冻结,导致更多的系统故障。例如,TPS3851具有一个超时间隔可调的外部看门狗定时器,它可以在几毫秒内识别这些软件冻结,并相应地复位系统或处理器。因为手动重置这些系统是不切实际的,甚至几乎是不可能的,所以这个功能在嵌入式或远程系统中就更加必要了。

如何在嵌入式系统中使用看门狗定时器?

实现看门狗定时器有两种主要方式:

-使用具有集成看门狗功能的处理器。很多微控制器,如MSP430F5529系列,都有集成看门狗的功能。它的价值在于非常容易实现,并且不需要使用其他IC。然而,有一个重要的警告:由程序代码问题引起的MCU故障可能会无意中禁用看门狗定时器,因此集成的看门狗可能不总是按预期工作。同样,虽然软件的编写方式使得内部看门狗可以检测所有的冻结或关断,但采取额外的步骤来冗余地监控看门狗输入有助于解决程序代码中不可预见的错误。

-使用带看门狗定时器的电压监控器。具有看门狗定时器功能的监控器,如TPS3851或TPS3110,可以通过外部冗余方式监控电源电压和看门狗信号。如果处理器的内部看门狗未能检测到错误或丢失脉冲,外部看门狗定时器将能够发挥其他方法无法达到的检测水平。

原则上看门狗定时器的功能不会太复杂;但是,它在维护系统可靠性方面的重要性不可低估,尤其是当系统出错,而人为的系统复位却很困难甚至不可能的时候。

探索看门狗定时器的应用

接下来,本文将解释为什么要在应用程序中使用看门狗定时器,窗口看门狗定时器是如何工作的,以及看门狗定时器的一些特性,如何使它们成为许多不同应用程序的优秀附加功能。

为什么在应用中使用看门狗定时器?

看门狗在很多应用中都有一席之地,比如无人机、电网计量、电机控制等。对于这些不同的应用,看门狗定时器提供了相同的基本功能:它可以通过监视处理器来检测错误的操作,并发出相应的信号。

但是,监控的使用可能因应用程序的类型而异。例如,期望有人在距离地面数百英尺的无人机上手动重置处理器是不现实的。在智能电表中,同样的问题可能导致设备无法读取或记录信息,位于远程位置的电表和传感器也会遇到软件故障,导致系统无法读取和记录信息,没有人可以手动重置。控制马达和其他机械部件的系统中的程序代码的故障尤其令人紧张,因为这些系统的故障可能对正在操作的人和附近的人造成身体伤害。幸运的是,使用看门狗定时器可以增加冗余来拦截这些错误,并有助于防止这些问题。

窗口看门狗定时器是如何工作的?

图3所示的窗口看门狗定时器是一个特殊的看门狗定时器,它不仅监视处理器发送的信号在看门狗超时结束前(即看门狗上限)是否失效,还监视处理器在看门狗超时窗口开始前是否发送了看门狗输入(WDI)信号(即看门狗下限)。这个函数如图4所示。

图3监控微控制器的窗口看门狗定时器。

图4窗口看门狗功能。

不同于标准看门狗定时器,其仅检查脉冲是否在超时结束之前到达。监控早期WDI信号可以检测并停止不期望的超频,这是非常有用的功能。

看门狗还有哪些附加功能?

窗口看门狗定时器只是看门狗定时器众多功能中的一个附加功能。其他几个附加功能可以确保系统的稳定性和功能性:

可调代数表达式看门狗超时:不同的系统和应用需要不同的WDI信号超时周期。外部电容和SET引脚可以用来将看门狗超时时间从几毫秒调整到一分钟。

-看门狗定时器的关闭功能:一些看门狗定时器可以通过使用器件上的引脚关闭。这是非常有用的,当你不我不想在系统初始化和调试期间重置处理器。