硬件看门狗的选择与设计

看门狗定时器(WatchDog Timer)用于在程序异常时复位处理器,防止系统卡死。本文深入解析其工作原理,包括计数器溢出机制与“喂狗”操作,并探讨内部与外部WDT的区别。此外,针对系统启动时间长的问题,提出两种解决方案:模拟开关配合普通WDT,以及使用具有长时间溢出周期的WDT。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看门狗定时器(WatchDog Timer)在出现程序跑飞卡死的时候用来强制复位处理器或控制器。具体操作是:通常程序正常循环会在一定周期内进行“喂狗”,若程序执行一个错误代码或者程序卡死,将不能进行“喂狗”,WDT会将控制器进行复位。而且,WDT不能检测瞬态故障,只有在WDT计数器达到预定的时间间隔时才会产生复位。

WDT基本原理

WDT的核心是计数寄存器,时钟源连续递增计数器的值,计数器发生溢出时,WDT产生复位。为防止复位,需要周期性的将计数清零,俗称“喂狗”。

内部或外部WDT

现在好多MCU内置WDT,使用内部WDT最大优势就是节省成本体积,但缺点也比较明显容易受软件程序失效影响,稳定性不佳。使用外部WDT IC具有独立的时钟源,稳定性较高,但相应的也会增加一定成本。

在一些要求较高的场合下,建议使用外部WDT IC。


看门狗电路

本身看门狗电路比较简单,一个IO引脚用来喂狗,另一个IO引脚输出复位响应。详细的设计需要仔细查看DataSheet。

在这里插入图片描述

本文将介绍一下有些系统会涉及操作系统启动时间较长超出溢出周期的方案设计。

一些系统启动需要经历U-boot–kernel–文件系统–应用层,这种启动时间短则几十秒,多则甚至1分钟以上,只有系统启动正常后才能进行喂狗,如果这是外部WDT IC 一直得不到喂狗,就会一直产生喂狗,系统进入死锁状态。

下面介绍两种方法:

1. 模拟开关+普通WDT

使用一个单刀双掷模拟开关接到WDI引脚上,当启动时WDI通过模拟开关将接到悬空态,这种情况下,看门狗会禁止,内部计数器停止计数。当系统正常启动后,打开IO调整模拟开关,进行正常工作。

在这里插入图片描述

2. 使用长时间溢出周期的WDT

如下芯片启动会有51s延时,常规超时1.6s复位。如下示意:

在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值