看门狗电路设计:典型电路原理图分析、复位引脚连接、喂狗信号设计

看门狗电路,说白了就是给MCU请了个“监工”。

这个监工不干活,只盯着MCU干活。一旦MCU死机或者跑飞了,监工就一巴掌把它拍醒——也就是拉低复位引脚,让系统重新启动。

我刚开始做工业设备那会儿,总觉得看门狗可有可无。后来有一次,现场一台设备在高温下连续跑了三天,突然死机了。操作员没发现,整条产线停了两个小时。嗯,从那以后,我再也不敢省这个电路了。

典型看门狗电路原理图分析

先看一个最经典的电路。我用的是MAX706,这芯片我用了十几年,皮实耐用。

// 典型看门狗电路连接(MAX706)
// VCC —— 3.3V
// GND —— GND
// WDI —— MCU的GPIO(喂狗引脚)
// RST —— MCU的复位引脚(低电平有效)
// MR  —— 手动复位按钮(可选)
// PFI —— 电源监测输入(分压电阻接VCC)

这个电路的核心逻辑其实很简单:

  • WDI引脚:MCU每隔一段时间给它一个脉冲,这就是“喂狗”
  • RST引脚:如果超时没喂狗,芯片拉低这个引脚,MCU复位
  • MR引脚:手动复位,调试时很有用
  • PFI引脚:监测电源电压,低于阈值也会触发复位

我个人习惯在WDI引脚上加一个10kΩ上拉电阻。为什么?因为MCU刚上电时,GPIO可能是高阻态,不加电阻的话,WDI引脚悬空,看门狗可能误动作。我在一个项目中吃过这个亏,后来就长记性了。

关键参数速查表

参数 典型值 说明
超时时间 1.6s MAX706固定值,不可调
复位脉冲宽度 200ms 足够MCU完成内部复位
电源监测阈值 4.65V 5V系统常用,3.3V系统选其他型号
喂狗脉冲宽度 ≥100ns 太窄可能触发不了

复位引脚连接——细节决定成败

复位引脚怎么连?很多人觉得直接连上就行了。其实没那么简单。

我建议你注意这几点:

  1. 复位引脚要加下拉电阻——不是上拉,是下拉。看门狗输出是开漏结构,下拉电阻确保复位信号干净。我见过有人用10kΩ上拉,结果复位信号毛刺不断。
  2. 走线要短——复位信号对噪声敏感。走线长了,容易耦合干扰。我一般控制在5cm以内。
  3. 远离高频信号——别把复位线跟SPI、I2C走在一起。你想想看,高速信号串扰过来,MCU莫名其妙复位了,查都查不出来。
  4. 加个小电容——在复位引脚对地加一个0.1μF电容,滤除高频噪声。这个电容不能太大,否则会影响复位脉冲的上升沿。

⚠️ 我曾经踩过的坑:

有一次,我把看门狗的复位输出直接连到了MCU的复位引脚,中间没加任何保护。结果现场有强电磁干扰,复位引脚被耦合进了高压脉冲,MCU的复位电路直接烧了。后来我在中间加了一个100Ω的限流电阻和一个TVS管,再也没出过问题。

喂狗信号设计——不是随便喂的

喂狗,就是给WDI引脚送脉冲。但怎么送、什么时候送,这里面有讲究。

先看代码:

// 喂狗函数示例(基于STM32)
void feed_watchdog(void)
{
    // 喂狗脉冲:拉低-拉高-拉低
    HAL_GPIO_WritePin(WDI_GPIO_Port, WDI_Pin, GPIO_PIN_RESET);
    delay_us(10);  // 保持低电平10μs
    HAL_GPIO_WritePin(WDI_GPIO_Port, WDI_Pin, GPIO_PIN_SET);
    delay_us(10);  // 保持高电平10μs
    HAL_GPIO_WritePin(WDI_GPIO_Port, WDI_Pin, GPIO_PIN_RESET);
}

这个脉冲宽度,我一般取10μs。太窄了,芯片可能检测不到;太宽了,浪费CPU时间。MAX706要求至少100ns,10μs完全够用。

喂狗的位置也很关键。我见过有人把喂狗放在主循环里:

while(1)
{
    feed_watchdog();  // 每循环一次喂一次
    // 其他任务...
}

这样行不行?行,但不推荐。为什么?因为如果某个任务卡死了,但主循环还在跑,喂狗照常进行,看门狗就形同虚设了。

我建议的做法是:

  • 在关键任务完成后喂狗——比如传感器采集完、通信处理完、控制输出完
  • 喂狗间隔要小于超时时间的一半——留出余量。超时1.6s,我一般每500ms喂一次
  • 不要在中断里喂狗——中断可能还在正常触发,但主程序已经死了

💡 我的一个小技巧:

我会在喂狗前检查几个关键标志位。比如“传感器数据是否更新”、“通信是否正常”、“控制输出是否到位”。如果某个标志位异常,我就不喂狗,让系统复位。这样看门狗就不只是防死机,还能防“假死”——系统还在跑,但功能已经不正常了。

看门狗电路的核心逻辑

下面这张图,是我自己画的看门狗电路工作流程。你看一眼就明白了:

看门狗电路工作流程 MCU 执行主程序 看门狗芯片 MAX706 复位引脚 RST 喂狗脉冲 超时→复位 复位信号反馈 判断逻辑 MCU正常运行时:每500ms喂狗一次 → 看门狗不动作 MCU死机时:超过1.6s未喂狗 → 看门狗拉低复位引脚 → MCU重启

这张图把整个流程串起来了。你看,MCU正常工作时,每隔一段时间给看门狗芯片发一个喂狗脉冲。看门狗收到脉冲,就重置内部计时器。如果MCU死机了,喂狗脉冲没了,计时器溢出,看门狗就拉低复位引脚,MCU重启。

说白了,这就是一个“你干活我就不打扰你,你不干活我就踹你一脚”的逻辑。

总结一下核心要点:

  • 看门狗芯片选型:固定超时还是可编程?我推荐固定超时的,简单可靠
  • 复位引脚连接:加限流电阻、加TVS、走线要短
  • 喂狗策略:不要放在主循环,要放在关键任务之后
  • 喂狗间隔:留出余量,别卡着超时时间喂

嗯,这些就是我十几年做工业设备积累下来的经验。看门狗电路看着简单,但细节不少。你按我说的做,基本不会出大问题。


专注资料整理