独立看门狗功能描述

描述

01IWDG

1.1独立看门狗简介

IWDG(Independentwatchdog)独立看门狗,可以用来检测并解决由于软件错误导致的故障,当计数器到达给定的超时值时,会触发一个中断或产生系统复位。

独立看门狗的时钟是它专用的低速时钟(LSI),所以它能保持工作及时主时钟出现问题。窗口看门狗的时钟是有APB1时钟分频得到得到,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。

IWDG 最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。WWDG 最适合那些要求看门狗在精确计时窗口起作用的应用程序。

1.2独立看门狗的特点

①自由运行递减计数器

②时钟来自通过独立的RC振荡器(可以工作在待机和停止模式下)

③当向下计数器值达到0时,会产生复位(如果看门狗已经激活)

1.3独立看门狗功能描述

程序

上图红框显示,看门狗功能由VDD电压域供电,所以在停止模式和待机模式下仍能工作。

向关键字寄存器(IWDG_KR)写入0XCCCC,独立看门狗就会启动,计数器开始下降从复位值0XFFF。当计数器值到达0,会产生一个复位信号(独立看门狗复位)。

无论何时向关键字寄存器写入0XAAAA,IWDG_RLR的数值会重载进计数器,避免看门狗复位。

1.4硬件看门狗

如果通过器件选项位使能“硬件看门狗”功能,上电时将自动使能看门狗;如果在计数器计数结束前,若软件没有向关键字寄存器写入相应的值,则系统会产生复位。

1.5寄存器访问保护

IWDG_PR 和IWDG_RLR 寄存器具有写访问保护。若要修改寄存器,必须首先对IWDG_KR寄存器写入代码0x5555。而写入其他值则会破坏该序列,从而使寄存器访问保护再次生效。这意味着重装载操作(即写入0xAAAA)也会启动写保护功能。

状态寄存器指示预分频值和递减计数器是否正在被更新。

1.6调试模式

当微控制器进入调试模式时(Cortex™-M3 内核停止),IWDG 计数器会根据DBG 模块中的DBG_IWDG_STOP 配置位选择继续正常工作或者停止工作。

下图是LSI在不同分频情况下IWDG超时周期的最小值和最大值。

程序

02WWDG

2.1简介

窗口看门狗(Windowwatchdog)通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6 位变成0 前被刷新,看门狗电路在达到预置的时间周期时,会产生一个MCU 复位。如果在递减计数器达到窗口寄存器值之前刷新控制寄存器中的7 位递减计数器值,也会产生MCU 复位。这意味着必须在限定的时间窗口内刷新计数器。

2.2窗口看门狗主要特点

①可编程自由向下计数器

②复位条件,激活看门狗的情况下,当递减计数器值小于0x40 时复位;在窗口之外重载递减计数器时复位。

③提前唤醒中断(EWI):当递减计数器等于0x40 时触发(如果已使能且看门狗已激活)。

2.3窗口看门狗功能说明

如果窗口看门狗启动(WWDG_CR寄存器的WDGA位置1),7位向下计数器从0X40向0x3F滚动(T6已经清零),会导致一个复位。如果软件重载计数器,当计数器值大于窗口所存储的值时,就会产生复位。

程序

应用程序必须在正常操作期间写WWDG_CR寄存器去组织MCU复位。这个操作必须发生在计数器值小于窗口寄存器值。窗口寄存器值存储在WWDG_CR寄存器,必须在0XFF和0XC0之间。

使能窗口看门狗

复位之后,窗口寄存器经常是禁止的。通过设置WWDG_CR寄存器的WDGA位去使能,不能被禁止除了通过复位。

控制向下计数器

递减计数器处于自由运行状态:即使禁止看门狗,递减计数器仍继续递减计数。当使能看门狗时,必须将T6 位置1,以防止立即复位。

T[5:0] 位包含了看门狗产生复位之前的计时数目;复位前的延时时间在一个最小值和一个最大值之间变化,这是因为写入WWDG_CR 寄存器时,预分频值是未知的。配置寄存器(WWDG_CFR) 包含窗口的上限:为防止发生复位,当递减计数器的值低于窗口寄存器值且大于0x3F 时必须重载。

注意:可使用T6 位产生软件复位(将WDGA 位置1 并将T6 位清零)。

程序

看门狗中断高级特性

如果在产生实际复位之前必须执行特定的安全操作或数据记录,则可使用提前唤醒中断(EWI)。通过设置WWDG_CFR 寄存器中的EWI 位使能EWI 中断。当递减计数器的值为0x40时,将生成EWI 中断。在复位器件之前,可以使用相应的中断服务程序(ISR) 来触发特定操作(例如通信或数据记录)。

在某些应用中,可以使用EWI 中断来管理软件系统检查和/或系统恢复/功能退化,而不会生成WWDG 复位。在这种情况下,相应的中断服务程序(ISR) 可用来重载WWDG 计数器以避免WWDG 复位,然后再触发所需操作。

通过将0 写入WWDG_SR 寄存器中的EWIF 位来清除EWI 中断。

2.4如何设置看门狗超时

程序

例子:APB1的频率是24MHZ,WDGTB[1:0]设置3,T[5:0]设置成63

t = 1/24000*4096*2*2*2*(63+1)=24.85ms。

有关TWWDG的最小值和最大值。

程序

2.5调试模式

当微控制器进入调试模式时(Cortex™-M3内核停止),WWDG计数器会根据DBG模块中的DBG_WWDG_STOP配置位选择继续正常工作或者停止工作。

03区别

应用场景不同

IWDG 最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。

WWDG 最适合那些要求看门狗在精确计时窗口起作用的应用程序。

为什么要窗口看门狗?

对于一般的看门狗,程序可以在它产生复位前的任意时刻刷新看门狗,但这有一个隐患,有可能程序跑乱了又跑回到正常的地方,或跑乱的程序正好执行了刷新看门狗操作,这样的情况下一般的看门狗就检测不出来了。

如果使用窗口看门狗,程序员可以根据程序正常执行的时间设置刷新看门狗的一个时间窗口,保证不会提前刷新看门狗也不会滞后刷新看门狗,这样可以检测出程序没有按照正常的路径运行非正常地跳过了某些程序段的情况。
        责任编辑:彭菁

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分