采用单片机的看门狗电路的解析
单片机系统因干扰复位或掉电后复位均属非正常复位,应进行故障诊断并能自动恢复非正常复位前的状态。
好的,我们来详细解析一下单片机(MCU)中看门狗电路(Watchdog Timer, WDT)的工作原理、作用和实现方式。
核心概念:
看门狗电路本质上是单片机的一个独立的计时器(或与独立硬件芯片构成),用于监控单片机主程序的运行状态。 如果主程序运行不正常(如跑飞、死循环、严重阻塞),不能在规定时间内“喂狗”,看门狗就会强制复位单片机,使之重新启动,让系统从失控状态中恢复。
为什么需要看门狗?
单片机在复杂的电磁环境或运行复杂的软件时,可能会因为干扰、电源波动、软件逻辑错误(如死循环、堆栈溢出、数组越界)、硬件故障等原因导致程序不按预期执行(俗称“程序跑飞”或“死机”)。此时,系统可能会卡死、输出错误信号或不响应。看门狗就是为了检测这种“假死”状态并提供自动恢复机制。
工作原理(关键流程)
-
初始化和使能:
- 系统启动(上电复位或手动复位)后,在主程序初始化阶段,需要使能看门狗。
- 配置看门狗的超时周期。这个周期通常在几毫秒到几秒之间,由具体应用需求决定(如程序主循环的典型执行时间)。这个时间应长于正常循环时间,但又不能过长以免系统长时间失控。
-
启动计时(狗饿了):
- 看门狗使能后,其内部的计数器自动开始递减计数(或递增计数)操作。
- 这个计数过程是独立于主程序运行的,由独立的振荡器或系统时钟分频驱动。
-
主程序运行(喂狗):
- 主程序需要在超时周期结束前,周期性地执行一个特殊的操作——喂狗。
- 这个操作通常是通过向看门狗的控制寄存器写入一个特定的值(例如
0x55+0xAA)或者翻转某个I/O口电平(外部看门狗)来实现。 - 一次成功的喂狗操作会将看门狗的计数器重置(清零或重新加载初始值),使其从头开始倒计时,暂时不会触发复位。
-
监控状态:
- 看门狗计数器持续计数。
- 只要主程序在正常执行,它会在每一个主循环或关键任务结束时都进行一次喂狗操作,计数器总是在超时前被清零,永远不会计数到零(或预定值)。
-
程序失控(没有喂狗):
- 如果程序因为某种原因跑飞、陷入死循环、或者在某个地方长时间阻塞无法按时执行喂狗指令。
-
超时触发复位(狗咬人):
- 看门狗计数器持续计数直至到达预设的超时值(如计数到0或溢出)。
- 此时,看门狗电路会检测到超时事件。
- 作为响应,看门狗会产生一个复位信号,这个信号可能:
- 内部看门狗: 直接连接到单片机的复位逻辑,导致芯片复位。
- 外部看门狗芯片: 通过一个引脚输出复位信号到单片机的复位引脚,同样导致单片机复位。
-
系统恢复:
- 复位操作让整个单片机从头开始执行程序(就像刚上电一样)。
- 主程序初始化阶段会再次使能看门狗。
- 系统重新进入正常工作流程。
关键特点和实现方式
-
独立性:
- 看门狗的计时器必须独立于主程序运行。即使是软件跑飞,计时器也应能不受影响地继续计数。对于内部看门狗,这通常由一个独立的低精度RC振荡器或经过专门处理的分频时钟驱动;外部看门狗芯片则拥有完全独立的振荡器。
-
实现方式:
- 内部看门狗: 现代主流单片机大多将看门狗作为一个片上外设集成在芯片内部。在软件中通过配置寄存器即可启用和控制。优点是成本低、连接简单(无额外元件)、功耗低。缺点是复位信号在芯片内部,如果芯片因严重干扰完全锁死,内部看门狗也可能失效(尽管罕见)。
- 外部看门狗: 使用单独的看门狗芯片(如 TI 的 TPS38xx, Maxim/Dallas 的 MAX67xx/DS1232/DS181x, ADI 的 ADM671x 等系列)连接到单片机的复位引脚和某个GPIO(用于喂狗)。喂狗通常通过周期性地翻转(Toggle) 某个GPIO引脚电平或按照特定序列发送脉冲来实现。外部看门狗的优点是其物理隔离性更强(时钟、电源都更独立),因此可靠性通常更高,尤其是在恶劣环境中;功能也更复杂(如电压监控、手动复位按钮)。缺点是增加物料成本(BOM)和PCB空间。
-
喂狗策略:
- 主循环喂狗: 在主程序的大循环 (
while(1)) 末尾喂狗。最简单常用。 - 多任务/状态机喂狗: 在关键状态转换或任务完成时喂狗。需要精心设计,确保所有路径都覆盖。
- 避免误区: 不能在中断服务程序 (ISR) 中单独喂狗。如果主程序卡死而中断仍正常运行,ISR 仍能喂狗,看门狗失效!正确的做法是主程序和ISR配合,或者仅在主程序的关键节点喂狗。
- 主循环喂狗: 在主程序的大循环 (
-
超时周期选择:
- 太长: 系统失控后恢复慢,可能导致更多问题(如驱动电机等执行器长时间处于错误状态)。
- 太短: 正常程序稍有延迟就被误复位(过于敏感),甚至可能因喂狗频率跟不上导致无限循环复位。
- 原则: 必须远大于程序正常主循环的最长预期时间,远小于系统允许失控的最大容忍时间。需要根据实际程序执行流程分析。
-
窗口看门狗:
- 更高级的看门狗类型(某些MCU支持),不仅要求在规定时间内喂狗,还要求不能过早喂狗(有一个“喂狗窗口”)。如果喂狗太早(在窗口开始前)或在窗口结束后,都会触发复位。
- 作用:防止程序在错误的执行点上(比如陷入某个短循环)喂狗,增加了检测程序结构错误的可靠性。
应用场景
- 工业控制: PLC、传感器、电机驱动器等。
- 汽车电子: ECU、BCM、各类车载控制器等。
- 消费电子: 智能家电(防止按键卡死等)、玩具。
- 通信设备: 路由器、交换机模块。
- 航空航天及医疗设备: 对可靠性要求极高的领域(往往使用冗余、更可靠的硬件看门狗)。
- 任何需要系统在无人干预下能自动恢复的关键应用。
设计看门狗时的常见陷阱(需避免)
- 仅在中断中喂狗: 如前所述,主程序卡死后中断仍可能执行,导致看门狗不能复位系统。
- 喂狗位置不当: 放在程序非常早期的初始化代码里(后面卡住了也不喂狗);或者放在某个不经常执行的路径里(如错误处理中)。必须在所有关键路径都能定期喂到狗。
- 过度工程/喂狗过于频繁: 在多个地方或过于频繁地喂狗,虽然不会出错,但浪费功耗,且可能掩盖了程序结构上的缺陷。
- 喂狗时序冲突: 在喂狗操作附近操作关键资源时,可能因中断被临时禁止导致喂狗不及时(此时看门狗超时周期应留有余量)。
- 忽略上电延时: 有些单片机启动时初始化较慢,如果看门狗使能过早,可能导致刚上电就复位。需要在程序稳定运行且能按时喂狗时再使能看门狗。
- 调试时忘记禁用: 在下载、单步调试程序时,看门狗会因程序暂停执行而超时复位,导致无法调试。需要提供关闭看门狗的途径(跳线、软件配置位)。
总结
看门狗电路是提高单片机系统可靠性和健壮性的基本、廉价而有效的机制。它像一个忠实的警卫,持续监控着程序的“心跳”(按时喂狗)。一旦程序“心跳停止”(超时未喂狗),它就强行“电击抢救”(复位),让系统重新“复活”(恢复运行)。正确理解和应用看门狗(选择合适的类型、合理配置超时时间、精心设计喂狗逻辑、避免常见错误)对于开发稳定可靠的嵌入式产品至关重要。
如果你想了解某个具体单片机型号(如 STM32, PIC, 8051, MSP430, ESP32, Renesas RX, NXP LPC/Kinetis 等)的内部看门狗如何配置和使用,或者外部看门狗芯片的具体接法,可以提供型号,我可以给出更具体的细节。
什么是模拟看门狗?模拟看门狗有什么用处?
看门狗大家应该再熟悉不过了,一旦忘记喂狗就会导致单片机复位,而在大部分stm32中都存在两种类型的看门狗,Independent watchdo
2023-11-22 09:40:29
“看门狗”也有软硬
输入叫做“喂狗”,输出一般连接到另外一个部分的复位端,一般是连接到单片机。“看门狗”的功能是定期的查看芯片内部的情况,一旦发生错误就向芯片发出重启信号。“看门
2023-09-08 09:52:20
STC单片机看门狗
STC单片机看门狗设时钟为11.0592MHz看门狗溢出时间 = (12 Prescale32768)/11059200 = Prescale*
资料下载
laisvl
2021-12-23 19:22:00
单片机看门狗有两种:分别为独立看门狗和窗口看门狗,它们有什么区别?资料下载
电子发烧友网为你提供单片机看门狗有两种:分别为独立看门狗和窗口看门狗,它
资料下载
佚名
2021-04-18 08:41:01
STM32中的独立看门狗和窗口看门狗
一、前言 在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前看门
2022-12-22 16:58:20
单片机为什么需要看门狗
当然我们需要合理的设置看门狗(Watch Dog Timer)溢出时间,也要合理的放置看门狗清零指令。才可以让看门狗(Watch Dog Tim
2019-10-07 11:42:00
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 芯片的工作原理是什么?
- ssd是什么意思
- 什么是蓝牙?它的主要作用是什么?
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- dtmb信号覆盖城市查询
- 怎样挑选路由器?
- 华为芯片为什么受制于美国?
- 元宇宙概念股龙头一览
- type-c四根线接法图解
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- BLDC电机技术分析
- 复位电路的原理及作用
- dsp是什么意思?有什么作用?
- iphone13promax电池容量是多少毫安
- 苹果无线充电器怎么使用?
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 传感器常见类型有哪些?
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机