登录/注册

采用单片机的看门狗电路的解析

单片机系统因干扰复位或掉电后复位均属非正常复位,应进行故障诊断并能自动恢复非正常复位前的状态。

更多

好的,我们来详细解析一下单片机(MCU)中看门狗电路(Watchdog Timer, WDT)的工作原理、作用和实现方式。

核心概念:

看门狗电路本质上是单片机的一个独立的计时器(或与独立硬件芯片构成),用于监控单片机主程序的运行状态。 如果主程序运行不正常(如跑飞、死循环、严重阻塞),不能在规定时间内“喂狗”,看门狗就会强制复位单片机,使之重新启动,让系统从失控状态中恢复。

为什么需要看门狗?

单片机在复杂的电磁环境或运行复杂的软件时,可能会因为干扰、电源波动、软件逻辑错误(如死循环、堆栈溢出、数组越界)、硬件故障等原因导致程序不按预期执行(俗称“程序跑飞”或“死机”)。此时,系统可能会卡死、输出错误信号或不响应。看门狗就是为了检测这种“假死”状态并提供自动恢复机制。

工作原理(关键流程)

  1. 初始化和使能:

    • 系统启动(上电复位或手动复位)后,在主程序初始化阶段,需要使能看门狗。
    • 配置看门狗的超时周期。这个周期通常在几毫秒到几秒之间,由具体应用需求决定(如程序主循环的典型执行时间)。这个时间应长于正常循环时间,但又不能过长以免系统长时间失控。
  2. 启动计时(狗饿了):

    • 看门狗使能后,其内部的计数器自动开始递减计数(或递增计数)操作。
    • 这个计数过程是独立于主程序运行的,由独立的振荡器或系统时钟分频驱动。
  3. 主程序运行(喂狗):

    • 主程序需要在超时周期结束前,周期性地执行一个特殊的操作——喂狗
    • 这个操作通常是通过向看门狗的控制寄存器写入一个特定的值(例如 0x55 + 0xAA)或者翻转某个I/O口电平(外部看门狗)来实现。
    • 一次成功的喂狗操作会将看门狗的计数器重置(清零或重新加载初始值),使其从头开始倒计时,暂时不会触发复位。
  4. 监控状态:

    • 看门狗计数器持续计数。
    • 只要主程序在正常执行,它会在每一个主循环或关键任务结束时都进行一次喂狗操作,计数器总是在超时前被清零,永远不会计数到零(或预定值)。
  5. 程序失控(没有喂狗):

    • 如果程序因为某种原因跑飞、陷入死循环、或者在某个地方长时间阻塞无法按时执行喂狗指令
  6. 超时触发复位(狗咬人):

    • 看门狗计数器持续计数直至到达预设的超时值(如计数到0或溢出)。
    • 此时,看门狗电路会检测到超时事件。
    • 作为响应,看门狗会产生一个复位信号,这个信号可能:
      • 内部看门狗: 直接连接到单片机的复位逻辑,导致芯片复位
      • 外部看门狗芯片: 通过一个引脚输出复位信号到单片机的复位引脚,同样导致单片机复位
  7. 系统恢复:

    • 复位操作让整个单片机从头开始执行程序(就像刚上电一样)。
    • 主程序初始化阶段会再次使能看门狗。
    • 系统重新进入正常工作流程。

关键特点和实现方式

  1. 独立性:

    • 看门狗的计时器必须独立于主程序运行。即使是软件跑飞,计时器也应能不受影响地继续计数。对于内部看门狗,这通常由一个独立的低精度RC振荡器或经过专门处理的分频时钟驱动;外部看门狗芯片则拥有完全独立的振荡器。
  2. 实现方式:

    • 内部看门狗: 现代主流单片机大多将看门狗作为一个片上外设集成在芯片内部。在软件中通过配置寄存器即可启用和控制。优点是成本低、连接简单(无额外元件)、功耗低。缺点是复位信号在芯片内部,如果芯片因严重干扰完全锁死,内部看门狗也可能失效(尽管罕见)。
    • 外部看门狗: 使用单独的看门狗芯片(如 TI 的 TPS38xx, Maxim/Dallas 的 MAX67xx/DS1232/DS181x, ADI 的 ADM671x 等系列)连接到单片机的复位引脚和某个GPIO(用于喂狗)。喂狗通常通过周期性地翻转(Toggle) 某个GPIO引脚电平或按照特定序列发送脉冲来实现。外部看门狗的优点是其物理隔离性更强(时钟、电源都更独立),因此可靠性通常更高,尤其是在恶劣环境中;功能也更复杂(如电压监控、手动复位按钮)。缺点是增加物料成本(BOM)和PCB空间。
  3. 喂狗策略:

    • 主循环喂狗: 在主程序的大循环 (while(1)) 末尾喂狗。最简单常用。
    • 多任务/状态机喂狗: 在关键状态转换或任务完成时喂狗。需要精心设计,确保所有路径都覆盖。
    • 避免误区: 不能在中断服务程序 (ISR) 中单独喂狗。如果主程序卡死而中断仍正常运行,ISR 仍能喂狗,看门狗失效!正确的做法是主程序和ISR配合,或者仅在主程序的关键节点喂狗。
  4. 超时周期选择:

    • 太长: 系统失控后恢复慢,可能导致更多问题(如驱动电机等执行器长时间处于错误状态)。
    • 太短: 正常程序稍有延迟就被误复位(过于敏感),甚至可能因喂狗频率跟不上导致无限循环复位。
    • 原则: 必须远大于程序正常主循环的最长预期时间,远小于系统允许失控的最大容忍时间。需要根据实际程序执行流程分析。
  5. 窗口看门狗:

    • 更高级的看门狗类型(某些MCU支持),不仅要求在规定时间内喂狗,还要求不能过早喂狗(有一个“喂狗窗口”)。如果喂狗太早(在窗口开始前)或在窗口结束后,都会触发复位。
    • 作用:防止程序在错误的执行点上(比如陷入某个短循环)喂狗,增加了检测程序结构错误的可靠性。

应用场景

设计看门狗时的常见陷阱(需避免)

  1. 仅在中断中喂狗: 如前所述,主程序卡死后中断仍可能执行,导致看门狗不能复位系统。
  2. 喂狗位置不当: 放在程序非常早期的初始化代码里(后面卡住了也不喂狗);或者放在某个不经常执行的路径里(如错误处理中)。必须在所有关键路径都能定期喂到狗。
  3. 过度工程/喂狗过于频繁: 在多个地方或过于频繁地喂狗,虽然不会出错,但浪费功耗,且可能掩盖了程序结构上的缺陷。
  4. 喂狗时序冲突: 在喂狗操作附近操作关键资源时,可能因中断被临时禁止导致喂狗不及时(此时看门狗超时周期应留有余量)。
  5. 忽略上电延时: 有些单片机启动时初始化较慢,如果看门狗使能过早,可能导致刚上电就复位。需要在程序稳定运行且能按时喂狗时再使能看门狗。
  6. 调试时忘记禁用: 在下载、单步调试程序时,看门狗会因程序暂停执行而超时复位,导致无法调试。需要提供关闭看门狗的途径(跳线、软件配置位)。

总结

看门狗电路是提高单片机系统可靠性和健壮性的基本、廉价而有效的机制。它像一个忠实的警卫,持续监控着程序的“心跳”(按时喂狗)。一旦程序“心跳停止”(超时未喂狗),它就强行“电击抢救”(复位),让系统重新“复活”(恢复运行)。正确理解和应用看门狗(选择合适的类型、合理配置超时时间、精心设计喂狗逻辑、避免常见错误)对于开发稳定可靠的嵌入式产品至关重要。

如果你想了解某个具体单片机型号(如 STM32, PIC, 8051, MSP430, ESP32, Renesas RX, NXP LPC/Kinetis 等)的内部看门狗如何配置和使用,或者外部看门狗芯片的具体接法,可以提供型号,我可以给出更具体的细节。

什么是模拟看门狗?模拟看门狗有什么用处?

看门狗大家应该再熟悉不过了,一旦忘记喂狗就会导致单片机复位,而在大部分stm32中都存在两种类型的看门狗,Independent watchdo

2023-11-22 09:40:29

单片机看门狗的分类及其工作原理

,造成寄存器和内存数据混乱,导致程序跑飞和死循环,而看门狗电路可以有效防止由于单片机死机而造成的系统故障。

2023-09-09 09:34:36

看门狗”也有软硬

输入叫做“喂狗”,输出一般连接到另外一个部分的复位端,一般是连接到单片机。“看门狗”的功能是定期的查看芯片内部的情况,一旦发生错误就向芯片发出重启信号。“看门

2023-09-08 09:52:20

基于51单片机的内部看门狗实验例程源代码

基于51单片机的内部看门狗实验例程源代码

资料下载 木头1233 2023-05-12 16:22:29

STM32:独立看门狗、窗口看门狗的配置

STM32单片机的看门狗有独立看门狗和窗口看门狗之分,这两者的工作原理却

资料下载 旧念 2022-02-08 16:15:35

STC单片机看门狗

STC单片机看门狗设时钟为11.0592MHz看门狗溢出时间 = (12 Prescale32768)/11059200 = Prescale*

资料下载 laisvl 2021-12-23 19:22:00

单片机看门狗有两种:分别为独立看门狗和窗口看门狗,它们有什么区别?资料下载

电子发烧友网为你提供单片机看门狗有两种:分别为独立看门狗和窗口看门狗,它

资料下载 佚名 2021-04-18 08:41:01

使用单片机实现键控看门狗的程序和工程文件免费下载

本文档的主要内容详细介绍的是使用单片机实现键控看门狗的程序和工程文件免费下载。

资料下载 佚名 2021-01-12 18:01:50

STM32单片机看门狗的配置方法

SATM32单片机的看门狗有独立看门狗和窗口看门狗之分,这两者的工作原理

2023-06-22 09:07:00

单片机独立看门狗和窗口看门狗的区别

早期的MCU没有看门狗,就容易引起有些产品死机了不能重启工作。为了避免这个问题,后期的MCU在内部集成了看门狗的功能。

2023-06-06 09:40:32

STM32中的独立看门狗和窗口看门狗

一、前言 在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前看门

2022-12-22 16:58:20

单片机看门狗工作原理

刚学习单片机的萌新都听说过单片机看门狗,但是对于其工作原理并不是很清楚,今天这篇文章将为大家介绍

2022-10-12 13:46:12

单片机看门狗工作原理

单片机看门狗工作原理,目的看门狗又叫watchdog timer 是一种计时器,为了防止

2021-07-22 07:52:17

STM32单片机两种看门狗的区别和配置方法

SATM32单片机的看门狗有独立看门狗和窗口看门狗之分,这两者的工作原理

2020-10-10 11:27:40

单片机为什么需要看门狗

当然我们需要合理的设置看门狗(Watch Dog Timer)溢出时间,也要合理的放置看门狗清零指令。才可以让看门狗(Watch Dog Tim

2019-10-07 11:42:00

7天热门专题 换一换
相关标签