发新帖本帖赏金 20.00元(功能说明)我要提问
返回列表
打印
[STM32]

看门狗的分类与实现原理

[复制链接]
599|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
forgot|  楼主 | 2023-3-28 10:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 forgot 于 2023-3-28 10:40 编辑

  在单片机控制系统中,在程序本身有BUG或者是受外界干扰的情况下,有可能会使系统进入“死机”状态,或者是说程序卡在某个局部的循环当中,所以往往会在程序设计完成后加入看门狗进行程序的运行监控,当意外发生时,可以由看门狗自动将系统进行复位重新运行。

  看门狗又叫watchdog timer,按照类型可以分为硬件看门狗和软件看门狗,所谓的硬件看门够是需要通过增加一颗看门狗硬件芯片,通过硬件电路连接到单片机的IO口进行监控的方法,软件看门狗是通过单片机内部的看门狗模块进行软件编程来实现的程序监控手段。软件看门狗一般又可以分为独立看门和窗口看门狗两种,可以通过单片机相关的寄存器进行配置。

  先说一下硬件看门狗的实现方式和原理,以TITPL5010 芯片为例子,除了芯片本身的电源和地引脚以外,还包含有DELAY/M_RST引脚,这个引脚与GND之间串接一个电阻,可以通过调节这个电阻的阻值来调节计时间隔的时间,如果这个引脚接入高电平,还可以直接进行单片机系统的复位;DONE引脚是用于接收单片机的信号,每次接收到信号时就可以进行计数器的复位,进行重新定时计数;WAKE引脚是发送给单片机,并且要求通过DONE返回,如果在一定时间内没有收到返回,就会通过RSTn对单片机进行复位,这就是整个芯片的工作流程。所以在单片机程序设计时,就必须做两件事情:
1、通过GPIO进行WAKE信号的接收;
2、通过GPIO进行DONE信号的应答;
如果单片机因为死机而导致无法完成接收和应答,TPL5010 就会将单片机的复位引脚进行复位,重启单片机。


  软件看门够以STM32看门狗为例,使用独立看门狗时,先对看门狗的预分频系数和重载值进行配置,就可以确定计数时长,该步骤类似硬件看门狗中的延时电阻值的选择;再通过对寄存器IWDG_KR写入0xCCCC,开始启用独立看门狗,此时看门狗递减计数就开始启动,如果计数到0,单片机就会进行复位,在技术过程中,通过对寄存器IWDG_KR中写入0xAAAA就是喂狗动作,该动作可以进行计数重置(重新加载),避免复位。所以软件看门狗的使用就是在程序中不同或者是相同的位置进行喂狗,如果程序一旦发生意外不能及时喂狗,就会认为程序存在问题,需要进行复位动作了。
  窗口看门狗的使用跟独立看门狗类似,就是在喂狗的时间上设置了一个窗口期,喂狗的时间不能过早也不能过晚,这样可以保证运行监控的的精确性,在一般的设计中,独立看门狗就够用了。

  看门狗的设计是为了防止单片机程序运行意外的发生,但是很多系统中并不允许程序进行复位,特别是有些设计启动时间较长,复位过程不能够被接受,这时就需要从本质上尽可能避免程序BUG和外接干扰;另外对于喂狗在程序中的位置设计至关重要,喂狗过于频繁可能起不到监控的作用,喂狗不及时反而会因为看门狗功能导致程序经常复位,需要在具体设计的时候着重考虑。


使用特权

评论回复

打赏榜单

21ic小管家 打赏了 20.00 元 2023-04-14

相关帖子

沙发
ewfrg| | 2023-9-5 10:05 | 只看该作者
学习了

使用特权

评论回复
板凳
zwsam| | 2024-1-27 09:23 | 只看该作者

使用特权

评论回复
发新帖 本帖赏金 20.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1721

主题

12982

帖子

54

粉丝