问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

硬件看门狗:守护电子设备的秘密武器

创作时间:
2025-01-21 20:55:50
作者:
@小白创作中心

硬件看门狗:守护电子设备的秘密武器

在电子设备中,硬件看门狗扮演着至关重要的角色。它是一种电路组件,主要用于监控和保障设备的稳定运行。通过定时器电路在特定条件下复位系统,防止程序死锁或跑飞。特别是独立看门狗(IWDG)和窗口看门狗(WWDG),分别适用于不同的应用场景。了解其工作原理对于提高电子设备的可靠性和稳定性至关重要。

01

硬件看门狗的工作原理

硬件看门狗,又称为watchdog timer,本质上是一个定时器电路,一般有一个输入和一个输出。其中的输入叫做喂狗,输出一般连接到另外一个部分的复位端,另外一个部分就是所要处理的部分,暂且称之为MCU。

在MCU正常工作的时候,每隔一段时间输出一个信号到喂狗端,给看门狗电路清零。如果在超过规定的时间不喂狗,WDT定时超时,就会回给一个复位信号到达MCU,使MCU复位,防止MCU死机。总的来说,看门狗电路的作用就是防止程序发生死循环,或者说程序跑飞。

WDT的基本工作原理如下:在整个系统运行以后就启动了看门狗的计数器,此时看门狗就开始自动计时,如果到达了一定的时间还不去给它清零,看门狗计数器就会溢出从而引起看门狗中断,造成系统的复位。

看门狗分硬件看门狗和软件看门狗。硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗称“喂狗”),因此程序正常工作时,定时器总不能溢出,也就不能产生复位信号。如果程序出现故障,不在定时周期内复位看门狗,就使得看门狗定时器溢出产生复位信号并重启系统。软件看门狗原理上一样,只是将硬件电路上的定时器用处理器的内部定时器代替,这样可以简化硬件电路设计,但在可靠性方面不如硬件定时器,比如系统内部定时器自身发生故障就无法检测到。当然也有通过双定时器相互监视,这不仅加大系统开销,也不能解决全部问题,比如中断系统故障导致定时器中断失效。 看门狗本身不是用来解决系统出现的问题,在调试过程中发现的故障应该要查改设计本身的错误。加入看门狗目的是对一些程序潜在错误和恶劣环境干扰等因素导致系统死机而在无人干预情况下自动恢复系统正常工作状态。看门狗也不能完全避免故障造成的损失,毕竟从发现故障到系统复位恢复正常这段时间内怠工。同时一些系统也需要复位前保护现场数据,重启后恢复现场数据,这可能也需要一笔软硬件的开销。

02

独立看门狗与窗口看门狗的区别

为了满足更多使用场景,现在很多MCU都集成了两个看门狗:独立看门狗与窗口看门狗。

独立看门狗

独立看门狗,顾名思义,就是独立的一个看门狗,由其专用低速时钟 (LSI) 驱动,因此,即便在主时钟发生故障时仍然保持工作状态。IWDG 最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。

独立看门狗特性:

  • 自由运行递减计数器
  • 时钟由独立 RC 振荡器提供(可在待机和停止模式下运行)
  • 当递减计数器值达到 0x000 时产生复位(如果看门狗已激活)

窗口看门狗

窗口看门狗,之所以称为窗口,是因为其喂狗时间是一个有上下限的范围内,你可以通过设定相关寄存器,设定其上限时间和下限时间:喂狗的时间不能过早也不能过晚。

窗口型看门狗
窗口看门狗的上窗口就是配置寄存器WWDG->CFR里设定的W[6:0];下窗口是固定的0x40;当窗口看门狗的计数器在上窗口值之外,或是低于下窗口值都会产生复位。

窗口型看门狗工作原理
上窗口的值可以只有设定,7位二进制数最大只可以设定为127(0x7F),最小又必须大于下窗口的0x40,所以其取值范围为64127(即:0x400x7F);配置寄存器WWDG->CFR中为计数器设定时钟分频系数,确定这个计数器可以定时的时间范围,从而确定窗口的时间范围。

两者对比
1.使用条件对比
2.特点对比
两者的区别
独立看门狗与窗口看门狗的区别如下:

  • 独立看门狗没有中断,窗口看门狗有中断。
  • 独立看门狗有硬件软件之分,窗口看门狗只能软件控制。
  • 独立看门狗只有下限,窗口看门狗有下限和上限。
  • 独立看门狗是12位递减的,窗口看门狗是7位递减的。
  • 独立看门狗是用的内部大约40KHz的RC振荡器,窗口看门狗是用的系统时钟APB1ENR
  • 独立看门狗没有中断功能,只要在计数器减到0(下限)之前,重新装载计数器的值,就不会产生复位。要注意看门狗和外接复位IC同时存在的情况,外部电路可能会阻止看门狗复位。
    窗口看门狗有中断,这个中断的作用是在计数器达到下限0x40的时候,产生中断,让你喂狗;如果你不喂狗,计数器的值变为0x3f的时候,将会产生系统复位;即使是喂狗,也应该在中断里快速喂狗,要不时间长了计数器减1也会变成0x3f产生复位。窗口看门狗还有一个上限值,这个值如果大于计数器的初始值,那么就没有任何作用了;这个值小于计数器初始值的时候,当计数器的值大于上限值时你对计数器进行装载,将会产生复位,只有在计数器减到小于上限值时,你才能重新装载计数器。意思就是说只有计数器的值在上限值和下限值之间你才能装载计数器,否则就会产生系统复位,当上限值小于下限值,也没有意义。
03

实际应用案例

在实际应用中,硬件看门狗被广泛应用于各种电子设备中,以确保系统的稳定性和可靠性。

  1. 机器人控制系统:通过在主循环中定期喂狗,确保主控制程序正常运行。如果系统出现异常,看门狗会触发复位,使机器人恢复到安全状态。

  2. 工业通信板:在DP80等通信设备中,看门狗用于监控心跳信号。如果通信中断或异常,看门狗会触发系统重启,恢复通信功能。

  3. 无刷直流电机(BLDC)控制板:在电机控制系统中,看门狗用于监控控制算法的执行。如果控制算法出现异常,看门狗会触发复位,防止电机失控。

04

技术发展趋势

随着微控制器技术的发展,现代MCU通常同时集成了独立看门狗和窗口看门狗,以提供更全面的保护机制。例如,ARM内核的单片机中,WDG(看门狗)的主要目标是检测和解决由软件故障引起的故障。原理是定期刷新WDG(或者称为“喂狗”),如果计数器没有被刷新,就会生成系统重置。此外,WDG作为一种保护措施,因为它避免了在处理的某个特定阶段卡住。使用选项字节进行配置可以由硬件或软件启动WDG。一旦启用,它只能通过重置来禁用。

窗口看门狗(WWDG)和独立看门狗(IWDG)是两种在微控制器中用于系统稳定性和可靠性保障的机制,它们各自有不同的特点和优势。

窗口看门狗(WWDG)的特点和优势:

  • 双向时间窗口:WWDG有一个设定的时间窗口,必须在这个窗口内重置计数器,既不能太早也不能太晚。
  • 中断功能:WWDG具有提前唤醒中断(EWI)功能,在计数器达到某个预设值时触发中断,给予系统一次避免复位的机会。
  • 软件控制:WWDG通常只能通过软件来控制和重置。
  • 更精准的时间控制:WWDG使用系统时钟源,可以提供更精准的时间控制。

独立看门狗(IWDG)的特点和优势:

  • 简单易用:IWDG不需要在喂狗的时间窗口内操作,只要在计数器归零前重置即可。
  • 硬件/软件启动:IWDG可以通过硬件或软件启动。
  • 没有中断:IWDG不具备中断功能,一旦启动,如果在设定的时间内没有重置,就会引发复位。
  • 内部时钟:IWDG通常由内部低速时钟驱动,即使主时钟发生故障,它也仍然有效。

应用场景:

  • WWDG适用于需要在特定时间窗口内进行系统监控的应用,如在系统即将复位前保存重要数据或状态。
  • IWDG适用于需要简单持续监控的应用,它提供了一种基本的保护,以防止系统长时间运行在异常状态。

选择WWDG还是IWDG取决于具体的应用需求。如果需要在系统复位前执行一些关键操作,WWDG可能是更好的选择。如果需要一个简单且可靠的监控机制来防止长时间的系统故障,IWDG可能更适合。在设计系统时,两种看门狗有时会结合使用,以提供更全面的保护。

总结来说,硬件看门狗作为电子设备中的重要组件,通过其独特的监控和复位机制,为系统的稳定运行提供了有力保障。随着技术的不断发展,看门狗技术也在不断创新和完善,为各类电子设备的可靠运行保驾护航。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号