硬件看门狗工作原理

硬件看门狗是什么?

硬件看门狗(Hardware Watchdog)是一种用于监控系统运行状态的硬件设备或电路。它的主要功能是检测系统是否正常运行,并在系统出现故障或无响应时自动重启或采取其他恢复措施。

工作原理与引脚

硬件看门狗一般外挂在主控芯片MCU上,看门狗内部有一个定时器,系统正常上电复位后该定时器会被重置;MCU在定时器设定的时间内给看门狗发送一个脉冲信号来进行“喂狗”,看门狗接收到喂狗信号后,将定时器重置开启新一轮计时;MCU发生异常无法完成“喂狗”操作直到看门狗定时器超时,看门狗会触发其故障处理操作,发送信号将MCU进行复位;如下:
在这里插入图片描述

  • 根据上面的原理,我们来想一下一个最简单的看门狗芯片有哪些引脚:
    供电引脚VCC和接地引脚GND;
    使能引脚EN;
    喂狗引脚即MCU时钟脉冲输入引脚CLK;
    复位信号输出引脚RST;

  • 以上就是最简单的看门狗所需的引脚,大部分看门狗还有以下几个引脚:
    看门狗定时器时间以及看门狗复位延迟时间设置引脚CTW;
    (定时器时间:即喂狗时间阈值可以通过在此引脚上外接电容来进行设置;)
    (复位延迟时间:看门狗触发复位输出时输出多长时间的脉冲时间;)
    (二者都可以通过在此引脚上外接电容来进行设置;)
    上电复位时间设置引脚CT;
    (上电复位时间:系统上电时看门狗复位输出脉冲持续的时间;)

设计这两个引脚主要是考虑到以下两点原因:

  1. 不同的MCU内部时钟不同,有些功能简单的MCU内部时钟可能很小只有KHz级别,有些功能复杂的MCU内部时钟在MHz级别,看门狗定时器时间需要根据不同的MCU进行配置;
  2. 不同MCU对于RST复位的脉冲时间有不同的要求,看门狗复位时间需要根据不同MCU进行配置;
  3. 不同MCU对上电时序有一定要求,看门狗上电复位时间需要根据不同MCU进行配置;

看门狗工作时主要引脚电压

在这里插入图片描述
上图是看门狗上电后,使能引脚EN(高有效)一直拉高,当时钟输入引脚CLK一直没收到喂狗信号时,各个引脚的电压变化,由上图知道:

  1. 上电后,当VDD电压值达到看门狗最小工作电压V_{DET},看门狗开始上电复位,CT引脚电压开始充电直到CT引脚的电压升高到该引脚阈值V_{CTTH},这段时间为看门狗的上电复位时间tD;
  2. 上电复位完成后,CTW引脚电压开始充电,直到CTW引脚的电压升高到该引脚高边阈值V_{CTWH},这期间看门狗CLK引脚没有接收到来自MCU的喂狗信号,看门狗触发复位操作,将引脚RST(低有效)拉低;
  3. 引脚RST拉低后,CTW电压开始降低,直到CTW引脚的电压升高到该引脚低边阈值V_{CTWL},这段时间为RST持续输出复位低电平信号给MCU,这段时间为看门狗的复位时间tWL;
  4. 复位完成后,看门狗开始重新计时,RST引脚恢复为高电平,CTW引脚电压开始充电,直到CTW引脚的电压升高到该引脚高边阈值V_{CTWH},这段时间为看门狗的喂狗时间阈值tWH;

相关时间设置与计算

以罗姆的BD87B29FVM看门狗为例,手册中提供了根据外接电容来计算喂狗时间阈值(定时器时间),复位时间以及上电复位时间的方法,如下:

在这里插入图片描述
其中tD为上电复位时间,tWH为喂狗时间阈值(定时器时间),tWH为复位时间;

详细计算过程如下:

  1. 喂狗时间阈值由CTW引脚外接的电容来决定:
    t W H = ∣ V C T W H − V C T W L ∣ × C C T W I C T W C = ∣ 0.9 V − 0.3 V ∣ × C C T W 0.3 u A = 2 × C C T W × 1 0 − 6 t_{WH}=\frac{\left | V_{CTWH}-V_{CTWL} \right |\times C_{CTW} }{I_{CTW_C} } =\frac{\left | 0.9V-0.3V \right |\times C_{CTW} }{0.3uA }=2\times C_{CTW}\times 10^{-6} tWH=ICTWCVCTWHVCTWL×CCTW=0.3uA0.9V0.3V×CCTW=2×CCTW×106
    V_{CTWH}为CTW引脚高边阈值,单位为V;V_{CTWL}为CWT引脚低边阈值,单位为V; I_{CTW_C}为CWT充电电流,单位为A;三者均可以在datasheet中找到对应值;
    C_{CTW} 为CTW引脚外接电容容值,单位为F;
    计算除了的tWH为喂狗时间阈值,单位为S,与datasheet中给出的计算公式一致;

  2. 复位时间也由CTW引脚外接的电容来决定:
    t W L = ∣ V C T W H − V C T W L ∣ × C C T W I C T W D = ∣ 0.9 V − 0.3 V ∣ × C C T W 0.9 u A ≈ 0.67 × C C T W × 1 0 − 6 t_{WL}=\frac{\left | V_{CTWH}-V_{CTWL} \right |\times C_{CTW} }{I_{CTW_D} } =\frac{\left | 0.9V-0.3V \right |\times C_{CTW} }{0.9uA }\approx 0.67\times C_{CTW}\times 10^{-6} tWL=ICTWDVCTWHVCTWL×CCTW=0.9uA0.9V0.3V×CCTW0.67×CCTW×106
    V_{CTWH}为CWT引脚高边阈值,单位为V;V_{CTWL}为CWT引脚低边阈值,单位为V; I_{CTW_D}为CWT放电电流,单位为A;三者均可以在datasheet中找到对应值;
    C_{CTW} 为CTW引脚外接电容容值,单位为F;
    计算除了的tWL为复位时间,单位为S,与datasheet中给出的计算公式一致;

  3. 上电复位时间由CT引脚外接电容来决定:
    t D = V C T T H × C C T I C T = 0.9 V × C C T 1.3 u A ≈ 0.69 × C C T × 1 0 − 6 t_{D}=\frac{V_{CTTH}\times C_{CT} }{I_{CT} }=\frac{0.9V\times C_{CT} }{1.3uA }\approx 0.69\times C_{CT}\times 10^{-6} tD=ICTVCTTH×CCT=1.3uA0.9V×CCT0.69×CCT×106
    V_{CTTH}为CT引脚阈值电压,单位为VI_{CT} 为CWT充电电流,单位为A;三者均可以在datasheet中找到对应值;
    C_{CT}为CT引脚外接电容容值,单位为F;
    计算除了的tD为上电复位时间,单位为S,与datasheet中给出的计算公式一致;

以上计算都是通过电荷量的基础公式进行计算的:
Q = I t = C V Q=It=CV Q=It=CV

注意事项

  1. 对于这个看门狗来说,喂狗时间阈值由硬件C_{CTW}电容大小来确定,而真正的喂狗周期由软件来设置:软件设置的喂狗周期不能太长,如果喂狗周期很接近喂狗时间阈值,则系统可能会由于电容精度等误差发生异常复位的情况;软件设置的喂狗周期不能太短,喂狗周期太短会导致系统功耗增大,尤其是在休眠情况下,喂狗太频繁会导致休眠电流偏大;
    因此,通常软件喂狗时间设置为喂狗时间阈值的一半比较合适;
  2. MCU对RST信号在上电时刻和持续时长有一定要求:一般来说MCU要保证上电一段时间后,才允许RST引脚拉高;复位MCU时也会需要RST信号持续一定时间才能正确复位MCU;
    因此,要先明确MCU的需求,再通过看门狗上电复位时间和复位时间公式来计算出CT与CTW引脚外接电容的容值;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/888358.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神经网络中的优化方法(一)

目录 1. 与纯优化的区别1.1 经验风险最小化1.2 代理损失函数1.3 批量算法和小批量算法 2. 神经网络中优化的挑战2.1 病态2.2 局部极小值2.3 高原、鞍点和其他平坦区域2.4 悬崖和梯度爆炸2.5 长期依赖2.6 非精确梯度2.7 局部和全局结构间的弱对应 3. 基本算法3.1 随机梯度下降(小…

海康gige工业相机无驱动取像突破(c#实现,最后更新,你也可以移植到linux下去用)

买了3个海康的相机,最初测试成功的是500万相机。 然后写了一个通用版,害怕有问题,又买了600万的相机,测试果然不及格,花了九牛二虎之力找到一个小问题,就这个 if (changdu > 1000); 最后又…

Linux -初识 与基础指令1

博客主页:【夜泉_ly】 本文专栏:【Linux】 欢迎点赞👍收藏⭐关注❤️ 文章目录 📚 前言🖥️ 初识🔐 登录 root用户👥 两种用户➕ 添加用户🧑‍💻 登录 普通用户⚙️ 常见…

Elasticsearch在liunx 中单机部署

下载配置 1、下载 官网下载地址 2、上传解压 tar -zxvf elasticsearch-XXX.tar.gz 3、新建组和用户 (elasticsearch 默认不允许root账户) #创建组 es groupadd es #新建用户 useradd ryzhang -g es 4、更改文件夹的用户权限 chown -R ryzhang …

Refit 使用详解

Git官网:https://github.com/reactiveui/refit Refit 是一个针对 .NET 应用程序的 REST API 客户端库,它通过接口定义 API 调用,从而简化与 RESTful 服务的交互。其核心理念是利用声明性编程的方式来创建 HttpClient 客户端,使得…

《山海经》:北山

《山海经》:北山 北山一经单狐山求如山(水马:形状与马相似,滑鱼:背部红色)带山(䑏疏:似马,一只角,鵸鵌:状乌鸦五彩斑斓,儵鱼&#xff…

使用gemini-1.5-pro-002做视频检测

使用Google Cloud Video Intelligence API做视频检测最大的缺陷是无法自定义规则,若使用gemini-1.5-pro-002多模拟模型,则可以自定义检测的规则,具有更好的灵活性。 安装SDK pip install --upgrade google-cloud-aiplatform gcloud auth ap…

动态规划——子序列问题

文章目录 目录 文章目录 前言 一、动态规划思路简介 二、具体实现 1. 字符串问题 1.1 最长公共字符串 1.2.0 最长回文子串 1.2.1 最长回文子序列 2.编辑距离问题 2.1 判断子序列 2.2 编辑距离 总结 前言 上文提到动态规划的背包问题,本文继续介绍动态…

Ubuntu24.04配置DINO-Tracker

一、引言 记录 Ubuntu 配置的第一个代码过程 二、更改conda虚拟环境的默认安装路径 鉴于不久前由于磁盘空间不足引发的重装系统的惨痛经历,在新系统装好后当然要先更改虚拟环境的默认安装路径。 输入指令: conda info可能因为我原本就没有把 Anacod…

vulnhub靶场【哈利波特】三部曲之Aragog

前言 使用virtual box虚拟机 靶机:Aragog : 192.168.1.101 攻击:kali : 192.168.1.16 主机发现 使用arp-scan -l扫描,在同一虚拟网卡下 信息收集 使用nmap扫描 发现22端口SSH服务,openssh 80端口HTTP服务,Apach…

顶刊算法 | 鱼鹰算法OOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Maltab)

顶刊算法 | 鱼鹰算法OOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Maltab) 目录 顶刊算法 | 鱼鹰算法OOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Maltab)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实…

getchar()

getchar():从计算机终端(一般是键盘)输入一个字符 1、getchar返回的是字符的ASCII码值(整数)。 2、getchar在读取结束或者失败的时候,会返回EOF 输入密码并确认: scanf读取\n之前的内容即12345678 回车符…

动态规划-----路径问题

动态规划-----路径问题 下降最小路径和1:状态表示2:状态转移方程3 初始化4 填表顺序5 返回值6 代码实现 总结: 下降最小路径和 1:状态表示 假设:用dp[i][j]表示:到达[i,j]的最小路径 2:状态转…

网络安全防护指南

网络安全防护指南 网络安全是指保护网络系统中的硬件、软件及数据不受偶然或恶意原因而遭到破坏、更改或泄露,确保网络系统连续可靠地正常运行。随着互联网的普及和技术的发展,网络安全问题日益严峻,对个人、企业和国家都构成了巨大威胁。因…

实现PDF文档加密,访问需要密码

01. 背景 今天下午老板神秘兮兮的来问我,能不能做个文档加密功能,就是那种用户下载打开需要密码才能打开的那种效果。boss都发话了,那必须可以。 需求:将 pdf 文档经过加密处理,客户下载pdf文档,打开文档需…

HarmonyOS Next 模拟器安装与探索

HarmonyOS 5 也发布了有一段时间了,不知道大家实际使用的时候有没有发现一些惊喜。当然随着HarmonyOS 5的更新也带来了很多新特性,尤其是 HarmonyOS Next 模拟器。今天,我们就来探索一下这个模拟器,看看它能给我们的开发过程带来什…

深入探索进程间通信:System V IPC的机制与应用

目录 1、System V概述 2.共享内存(shm) 2.1 shmget — 创建共享内存 2.1.2 ftok(为shmmat创建key值) 2.1.3 为什么一块共享内存的标志信息需要用户来传递 2.2 shmat — 进程挂接共享内存 2.3 shmdt — 断开共享内存连接 2.4…

多线程运行时,JVM(Java虚拟机)的内存模型

在多线程运行时,JVM(Java虚拟机)的内存模型主要涉及以下几个方面: 1. 主内存和工作内存 JVM内存模型定义了主内存和工作内存的概念。主内存是所有线程共享的内存区域,而工作内存是每个线程私有的内存区域。线程对变量…

Rust : 生成日历管理markdown文件的小工具

需求: 拟生成以下markdown管理小工具,这也是我日常工作日程表。 可以输入任意时间段,运行后就可以生成以上的markdown文件。 一、toml [package] name "rust-workfile" version "0.1.0" edition "2021"[d…

记一次 Golang pkg 性能提升 38147125738.8 倍之旅

我正在使用 linux-open-ports 项目来获取系统上当前打开的端口列表。不过我注意到实现速度比我预期的要慢一点,所以我开始调查、分析、修改并使整个过程,使其性能提升了 38147125738.8 倍。下面我对整个过程做一个详细叙述。 1 基线 Go 提供了通过基准测…