硬件基础——看门狗

今天我们来聊聊正经的“狗”,属于单片机的专属Dog

从字面的意思来看,就是负责看门的,那在单片机的系统中是如何实现“看门”的本领的?

看门狗,简写WDT,属于定时器的一种,当出现计时溢出的时候,就会触发系统复位,使程序重新开始执行,是一种保护机制。当运行的系统遇到强磁场,导致系统跑飞(正常系统中会定时喂狗)而不能正常喂狗时,看门狗就能强制复位整个系统,使程序重头执行。这样就能避免系统停滞带来的风险和事故。特别是在工业领域,非常常用。

那如何让这个“定时器”不溢出呢?

正常状态下,我们使用的时候是不允许看门狗溢出的,不然系统一直复位,还怎么运行程序呢?

所以我们要定时定点的给对应的寄存器“置一次值”,就是我们常说的“喂狗”。

现实中我们养的宠物狗,如果长时间不喂,它会不会一直叫,或者一直以各种方式骚扰你,让你无法正常工作,所以要想避免这种情况出现,就得按时“喂狗”。

单片机中的“喂狗”和实现中的“喂狗”是不一样的。

单片机中的“看门狗”自然也和实现中的狗没有任何的关系。一个是物理上的,一个是生物上的。

但是我们完全可以借助现实中的狗来理解单片机中看门狗的概念

从STM32的手册中我们可以看到,STM32中简称为IWDG,中文名:独立看门狗。(这里看不懂的可以直接跳过

当IWDG看门狗模块监测到计数溢出时,IWDG reset信号输出低,经过与逻辑电路触发脉冲发生器,产生一个正向窄脉冲以控制MOSFET在该脉冲宽度期间导通,并经由滤波电路产生系统复位事件信号,进而触发STM32复位。

至于软件上如何配置相应的寄存器来启动“看门狗”的本文就不展开讲解了,今天核桃主要想和小伙伴们分享一下外置的“硬件看门狗”是如何工作的。

我们先看图1所示:

图1

先理清SP706各个管脚的作用

MR 手动复位输入端:也就是当MR电压低于0.6V时,RESET输出有效复位信号。

PFI 门限检测器输入端:当电压跌落低于1.25V时,PFO输出低电平。

WDI 看门狗输入端: 也就是常说的喂狗,当WDI维持高电平或者低电平超过1.6S后,看门狗定时器就会溢出,WDO直接输出低电平。只有WDI的电平在1.6S有跳变,看门狗的定时器才会被清零。(就是说1.6s内得给你家狗狗吃的,不然它会叫)

RESET 复位输出管脚:受VCC和MR控制。

WDO 看门狗输出端:当计时溢出和VCC低于复位的门限时,WDO输出低电平,正常情况下输出高电平。

工作原理:

PFI和PFO我们可以暂时不管,都是用来监测电压的。

WDI 我们知道是看门狗的输入管脚,也就是说芯片一上电工作,定时器就开始计时,如果超过1.6S,WDI管脚的电平没有任何跳变的话,定时器就会溢出,WDO输出低电平,由于WDO是直接连接到MR的,所以MR也会同时被拉低0.6V以上,此时RESET管脚也会输出复位信号,使整个单片机系统复位。SW1就是按键,实现手动复位的。

那图1这个电路就没有任何问题了吗?

答:图1这个电路是有缺陷的!

如果单片机是新的,没有任何程序的,这个时候你需要往单片机里面烧录程序的,能保证1.6S内烧录完程序吗?显然不太现实的,所以这个时候就无法烧录程序了,因为单片机一直在复位,是无法正常烧录程序的。

那该怎么办呢?

其实很简单,只需要WDO和MR之间的连接是人为可控的就行。具体实现方法如下图2图3所示:

图2

当在需要烧录程序时,通过跳线帽把MR和WDO断开即可。烧录完成后再把跳线帽插回去即可。

或者采用图3的这种方式,都是没有问题的。

图3

图3这个电路大伙可以自行分析一下,原理基本一样!

那假如整个系统真正跑起来需要的时间远远超过1.6S了呢?看门狗电路又该如何设计呢?

好了,今天就先写到这吧!

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 3
收藏 4
关注 96
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧