0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

安利给工程师!看门狗相关知识

青山老竹农 来源:jf_82863998 作者:jf_82863998 2024-12-31 14:29 次阅读

看门狗能够及时检测并采取相应措施,从而避免系统长时间处于故障状态。本文将详细介绍看门狗的工作原理及其正确使用方法。

同时通过具体示例解析,教你如何在一个简单的LuatOS项目中集成看门狗定时器,设置适当的参数来确保系统在正常运行和故障场景下都能自动恢复。​

▼ 看门狗简介 ▼

看门狗(Watch Dog Timer,WDT)——是一种监控电路,主要应用于嵌入式系统,目的是为了提高系统的可靠性和稳定性。在看门狗电路的帮助下,当系统出现异常,如程序跑飞或死循环时,能够自动复位并重新启动系统。

工作原理:

看门狗电路通常包括一个定时器、一个喂狗信号和一个复位(Reset)输出。在正常的系统运行过程中,主控制器(MCU)会定期向喂狗信号发送一个脉冲,以“喂”看门狗,防止其计时到达预设值。如果MCU由于某种原因未能在规定时间内喂狗,看门狗定时器将会计满并输出一个复位信号,将MCU复位。

应用架构:

在实际应用中,看门狗芯片通常连接到MCU的一个GPIO端口。MCU在其正常运行期间会定期向该端口写入一个高电平或低电平信号,以此告诉看门狗它仍然正常工作。如果MCU未能按时发出信号,看门狗将触发复位操作。

芯片引脚功能:

某些看门狗芯片,如TPV6823具有多个引脚:包括供电引脚(VCC)、喂狗信号引脚(WDI)、复位输出引脚(RESETn)和手动复位输入引脚(MRn)。这些引脚提供了多种复位方式和时间设置,以适应不同的应用需求。

定时时间:

看门狗的定时时间通常需要保持在一个相对较长的周期,例如200毫秒左右。这样的设置是为了确保在正常运行中,即使MCU由于干扰而未能及时喂狗,看门狗也不会立即复位系统,从而给MCU足够的时间来响应和处理问题。

软硬件看门狗的区别:

硬件看门狗利用独立的定时器电路来实现监控功能,具有较高的可靠性。软件看门狗则使用处理器内部的定时器或其他机制来实现,虽然在一定程度上可以简化硬件设计,但在可靠性方面通常不如硬件看门狗。

WDT库提供了一系列用于管理和操作看门狗定时器的API函数,开发者可以通过Air201方便地在LuatOS系统中管理看门狗定时器,从而提高设备的稳定性。

软硬件相关准备工作及最新示例源码下载详见:

​​https://docs.openluat.com/air201/luatos/app/service/wdt/​​

一、看门狗示例解析

本文示例分为两个部分:

正常运行情况和故障场景模拟

在正常运行情况下,示例代码会初始化看门狗库,并设置超时时间和喂狗周期。然后,创建一个任务,该任务会定期喂狗,以防止看门狗定时器超时。如果看门狗定时器超时,系统将自动重启。

在故障场景模拟部分,我们添加了一个新的任务fault_task,该任务进入一个死循环,不进行喂狗操作。这样,当看门狗定时器超时后,系统将自动重启,模拟了设备在故障场景下的自动恢复能力。

1.1 程序正常运行

1.1.1 示例代码介绍

项目信息

在开头定义了项目名称(PROJECT)和版本(VERSION),并通过日志输出这些信息。

引入系统库:

通过require("sys") 引入了sys库,这是LuatOS中常用的系统库。

任务初始化:

使用sys.taskInit函数创建一个新的任务。在任务中检查wdt库是否可用,如果不可用,则进入一个无限循环,每秒钟输出一次提示信息。

WDT配置:

初始化wdt库,设置超时时间为9秒。设置一个定时器每3秒喂一次看门狗,确保设备在正常运行的情况下不会重启;若发生软件崩溃或硬件故障,最多18秒后将自动重启设备。

运行系统:

最后通过sys.run() 启动系统,后面不应添加任何其他语句。

1.1.2 完整代码展示

wKgZO2dyP1iAOrMJAATrj7x_ANc937.png

1.1.3 运行结果展示

通过Luatools工具查看日志:

wKgZO2dyP2WAMfbsAAMoa4r1Jcw219.png

1.2 添加死循环模拟故障场景

1.2.1 示例代码介绍

我们在原有示例代码中创建了一个新的任务,命名为fault_task,它将进入一个死循环。由于这个新任务不会喂看门狗,设备将在超时后自动重启。这样,我们就可以有效地模拟看门狗的超时情况。

wKgZO2dyP3aAYQBkAAEWpwMIeAM783.png

1.2.2 完整代码展示

wKgZPGdyP46AXVAQAAOFKd8u_I8599.png

1.2.3 运行结果展示

wKgZO2dyP6OAUkPUAATeOubucu4417.png

二、看门狗的扩展

2.1 看门狗定时器的应用场景

看门狗定时器广泛应用于各种嵌入式系统和物联网设备中,特别是在需要高可靠性的应用场景中。

一些典型的应用场景包括:

工业控制系统:

工业生产过程中,控制系统需要高度稳定和可靠,看门狗定时器可以确保系统在受到干扰或异常情况时能够迅速恢复。

车载电子系统:

车载电子系统面临着复杂的电磁环境和振动,看门狗定时器可以帮助系统在上电复位后保持稳定运行,防止因软件或硬件故障导致的系统死机。

医疗设备:

医疗设备对稳定性和可靠性有很高的要求,看门狗定时器可以确保设备在长时间运行过程中不会因为故障而停止工作,从而保障患者的安全和设备的连续性。

通信设备:

在通信系统中,看门狗定时器可以用于监控和保护网络设备,确保数据传输的稳定性和可靠性。

2.2 看门狗定时器的设计考虑因素

在设计和实现看门狗定时器时,需要考虑以下几个关键因素:

超时时间:

超时时间是指看门狗定时器从开始计时到触发复位信号的时间间隔。这个时间需要根据具体应用的需求来设定,通常需要平衡系统的稳定性和响应速度。

喂狗周期:

喂狗周期是指主控制器向看门狗芯片发送脉冲的时间间隔。喂狗周期应该设置得足够短,以防止看门狗定时器在正常运行中误触发复位。

看门狗复位输出:

看门狗定时器通常具有一个复位输出引脚,用于向主控制器提供复位信号。在设计时,需要确保复位输出引脚的电平和主控制器的复位输入引脚兼容。

看门狗功耗:

在设计看门狗定时器时,需要考虑其功耗,特别是在低功耗应用中。选择低功耗的看门狗芯片和合理的电源设计对于系统的整体功耗至关重要。

兼容性和可扩展性:

在设计看门狗定时器时,需要考虑其与其他系统的兼容性和可扩展性。确保看门狗定时器能够与其他硬件和软件组件无缝集成,并在未来需要时能够轻松扩展或升级。

通过综合考虑这些因素,开发者可以设计和实现一个稳定、可靠且高效的看门狗定时器解决方案,以确保嵌入式系统的正常运行和数据传输的稳定性。

三、看门狗的常见问题

3.1 看门狗定时器是如何工作的?

看门狗定时器通过主控制器定期向其发送脉冲信号来保持计时。如果主控制器在规定时间内未能发送脉冲,看门狗定时器将触发复位信号,将主控制器复位。

3.2 如何配置看门狗定时器的超时时间和喂狗周期?

在LuatOS等嵌入式操作系统中,看门狗定时器的超时时间和喂狗周期通常通过API函数进行配置。可以根据具体应用的需求来设置合适的时间间隔。

若使用本文中所提到的watchdog操作库,可按照以下步骤进行配置:

1)初始化看门狗:

使用wdt.init(timeout) 函数来初始化看门狗定时器,timeout参数是超时时长,单位为毫秒。

例如,如果你希望看门狗的超时时间为9000毫秒,可以这样调用:

wKgZPGdyP7mAacykAAAHhr8S5i4126.png

2)设置看门狗超时时间(可选):

如果设备支持,可以调用:

wdt.setTimeout(timeout)

重新设置看门狗的超时时长,单位同样为毫秒。

例如:

wKgZO2dyP8aABMazAAAOIpsJCGg767.png

3)定期喂狗:

使用wdt.feed() 函数来喂狗,以重置超时计时。建议使用定时器定期调用这个函数。

例如,使用系统定时器每3000毫秒喂一次狗,可以这样设置:

wKgZPGdyP9GAY-YcAAAKV_16bPw036.png

通过以上步骤,你可以成功配置看门狗定时器的超时时间和喂狗周期,确保设备不会因为未喂狗而重启。

今天的内容就分享到这里了~

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 看门狗
    +关注

    关注

    10

    文章

    565

    浏览量

    70833
  • 物联网
    +关注

    关注

    2909

    文章

    44701

    浏览量

    373947
收藏 人收藏

    评论

    相关推荐

    独立看门狗(IWDG)的基础知识

      STM32F10xxx系列内置两个看门狗(独立看门狗和窗口看门狗),提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗
    发表于 10-19 17:10 4271次阅读
    独立<b class='flag-5'>看门狗</b>(IWDG)的基础<b class='flag-5'>知识</b>

    STM32中的独立看门狗和窗口看门狗是什么

    在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前看门狗发展到今天基本上分为两大类:独立看门狗
    的头像 发表于 02-20 17:47 2764次阅读
    STM32中的独立<b class='flag-5'>看门狗</b>和窗口<b class='flag-5'>看门狗</b>是什么

    独立看门狗( IWDG)和窗口看门狗( WWDG)

    一个热爱代码的工程师,唯有凭借双手不断敲打,才可以快速提升实力!本文谨以记录,日后相忘时再作复习,代码没有贵贱,既来之则安之。 STM32F1内部自带了 2 个看门狗:独立看门狗( IWDG)和窗口
    发表于 08-02 10:55

    什么是看门狗电路

    看门狗电路 看门狗电路一般有软件看门狗和硬件看门狗两种。软件看门狗不需外接硬件电路,但系统需要出让一个定时器资源,这在许多系统中很
    发表于 10-21 01:40 8191次阅读

    stm32看门狗时间计算 独立看门狗和窗口看门狗的特性是什么

    本文为您讲解STM看门狗时间计算(时限)与频率计算,独立看门狗和窗口看门狗的特性、区别与联系。
    发表于 10-10 10:41 8773次阅读

    什么是stm32看门狗?独立看门狗和窗口看门狗工作原理解析

    stm32有两个看门狗,独立看门狗和窗口看门狗,其实两者的功能是类似的,只是喂狗的限制时间不同。 独立看门狗
    的头像 发表于 11-06 11:48 2.8w次阅读
    什么是stm32<b class='flag-5'>看门狗</b>?独立<b class='flag-5'>看门狗</b>和窗口<b class='flag-5'>看门狗</b>工作原理解析

    STM32看门狗配置(独立看门狗IWDG和窗口看门狗WWDG)

    stm32自带两个看门狗模块,独立看门狗IWDG和窗口看门狗WWDG。看门狗主要作用是可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型
    发表于 11-09 17:17 8454次阅读
    STM32<b class='flag-5'>看门狗</b>配置(独立<b class='flag-5'>看门狗</b>IWDG和窗口<b class='flag-5'>看门狗</b>WWDG)

    avr看门狗原理知识资料下载

    电子发烧友网为你提供avr看门狗原理知识资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师
    发表于 04-17 08:45 9次下载
    avr<b class='flag-5'>看门狗</b>原理<b class='flag-5'>知识</b>资料下载

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

    电子发烧友网为你提供单片机看门狗有两种:分别为独立看门狗和窗口看门狗,它们有什么区别?资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户
    发表于 04-18 08:41 2次下载
    单片机<b class='flag-5'>看门狗</b>有两种:分别为独立<b class='flag-5'>看门狗</b>和窗口<b class='flag-5'>看门狗</b>,它们有什么区别?资料下载

    MCU独立看门狗与窗口看门狗的区别

    早期的MCU没有看门狗,就容易引起有些产品死机了不能重启工作。为了避免这个问题,后期的MCU在内部集成了看门狗的功能。为了满足更多使用场景,现在很多MCU都集成了两个看门狗:独立看门狗
    发表于 10-28 20:06 8次下载
    MCU独立<b class='flag-5'>看门狗</b>与窗口<b class='flag-5'>看门狗</b>的区别

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

    STM32单片机的看门狗有独立看门狗和窗口看门狗之分,这两者的工作原理却完全不同。
    发表于 02-08 16:15 18次下载
    STM32:独立<b class='flag-5'>看门狗</b>、窗口<b class='flag-5'>看门狗</b>的配置

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

    一、前言 在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前看门狗发展到今天基本上分为两大类:独立
    的头像 发表于 12-22 16:58 2163次阅读

    详解独立看门狗的实现原理

    这里以大家熟悉的STM32为例大家讲解一下独立看门狗的配置以及工作过程。STM32F10xxx内置两个看门狗:独立看门狗和窗口看门狗,提供
    发表于 12-22 17:01 3257次阅读

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

    在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前看门狗发展到今天基本上分为两大类:独立看门狗
    的头像 发表于 01-30 14:38 1392次阅读
    STM32中的独立<b class='flag-5'>看门狗</b>和窗口<b class='flag-5'>看门狗</b>

    窗口看门狗的基础知识

    随着窗口看门狗变得越来越普遍,对其操作有一个基本的了解非常重要。本应用笔记介绍了窗口看门狗的几个特性,供读者了解MAX20478和MAX20480产品系列的一般知识。这些功能包括可编程扩展窗口
    的头像 发表于 06-15 14:20 1250次阅读
    窗口<b class='flag-5'>看门狗</b>的基础<b class='flag-5'>知识</b>