打印
[其他ST产品]

窗口看门狗(WWDG)详解

[复制链接]
1030|40
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
窗口看门狗(WWDG)概述

       窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6位变成0前被刷新,否则看门狗电路在达到预置的时间周期时,会产生一个MCU复位。

        在递减计数器达到窗口寄存器数值之前,如果7位的递减计数器数值(在控制寄存器中)被刷新, 那么也将产生一个MCU复位。这表明递减计数器需要在一个有限的时间窗口中被刷新。

使用特权

评论回复
沙发
根特皇宫w|  楼主 | 2022-11-30 18:41 | 只看该作者
WWDG主要特性

        ● 可编程的自由运行递减计数器

        ● 条件复位         ─ 当递减计数器的值小于0x40,(若看门狗被启动)则产生复位。

                                   ─ 当递减计数器在窗口外被重新装载,(若看门狗被启动)则产生复位。

        ● 如果启动了看门狗并且允许中断,当递减计数器等于0x40时产生早期唤醒中断(EWI),它可以被用于重装载计数器以避免WWDG复位。

使用特权

评论回复
板凳
根特皇宫w|  楼主 | 2022-11-30 18:42 | 只看该作者
WWDG功能描述

        如果看门狗被启动(WWDG_CR寄存器中的WDGA位被置’1’), 并且当7位(T[6:0])递减计数器从0x40翻转到0x3F(T6位清零)时,则产生一个复位。

使用特权

评论回复
地板
根特皇宫w|  楼主 | 2022-11-30 18:43 | 只看该作者
如果软件在计数器值大于窗口寄存器中的数值时重新装载计数器,将产生一个复位。

使用特权

评论回复
5
根特皇宫w|  楼主 | 2022-11-30 18:43 | 只看该作者

使用特权

评论回复
6
根特皇宫w|  楼主 | 2022-11-30 18:44 | 只看该作者
    应用程序在正常运行过程中必须定期地写入WWDG_CR寄存器以防止MCU发生复位。只有当计数器值小于窗口寄存器的值时,才能进行写操作。

使用特权

评论回复
7
根特皇宫w|  楼主 | 2022-11-30 18:44 | 只看该作者
储存在WWDG_CR寄存器中的数值必须在0xFF和0xC0之间:

        ● 启动看门狗

        在系统复位后,看门狗总是处于关闭状态,设置WWDG_CR寄存器的WDGA位能够开启看门狗,随后它不能再被关闭,除非发生复位。

使用特权

评论回复
8
根特皇宫w|  楼主 | 2022-11-30 18:46 | 只看该作者
控制递减计数器

        递减计数器处于自由运行状态,即使看门狗被禁止,递减计数器仍继续递减计数。当看门狗被启用时,T6位必须被设置,以防止立即产生一个复位。

        T[5:0]位包含了看门狗产生复位之前的计时数目;复位前的延时时间在一个最小值和一个最大值之间变化,这是因为写入WWDG_CR寄存器时,预分频值是未知的。

        配置寄存器(WWDG_CFR) 中包含窗口的上限值:要避免产生复位,递减计数器必须在其值小于窗口寄存器的数值并且大于0x3F时被重新装载。

        另一个重装载计数器的方法是利用早期唤醒中断(EWI)。设置WWDG_CFR寄存器中的WEI位开启该中断。当递减计数器到达0x40时,则产生此中断,相应的中断服务程序(ISR)可以用来加载计数器以防止WWDG复位。在WWDG_SR寄存器中写’0’可以清除该中断。

使用特权

评论回复
9
根特皇宫w|  楼主 | 2022-11-30 18:46 | 只看该作者
    注: 可以用T6位产生一个软件复位(设置WDGA位为’1’,T6位为’0’)。

使用特权

评论回复
10
根特皇宫w|  楼主 | 2022-11-30 18:47 | 只看该作者

     T[6:0]就是 WWDG_CR 的低七位,W[6:0]即是 WWDG->CFR 的低七位。T[6:0] 就是窗口看门狗的计数器,而 W[6:0]则是窗口看门狗的上窗口,下窗口值是固定的(0X40)。 当窗口看门狗的计数器在上窗口值之外被刷新,或者低于下窗口值都会产生复位。

使用特权

评论回复
11
根特皇宫w|  楼主 | 2022-11-30 18:47 | 只看该作者
   上窗口值(W[6:0])是由用户自己设定的,根据实际要求来设计窗口值,但是一定要确保 窗口值大于 0X40,否则窗口就不存在了。 窗口看门狗的超时公式如下:

使用特权

评论回复
12
根特皇宫w|  楼主 | 2022-11-30 18:48 | 只看该作者
其中:

                Twwdg:WWDG 超时时间(单位为 ms)

                Fpclk1:APB1 的时钟频率(单位为 Khz)

                WDGTB:WWDG 的预分频系数

                T[5:0]:窗口看门狗的计数器低 6 位

使用特权

评论回复
13
根特皇宫w|  楼主 | 2022-11-30 18:48 | 只看该作者
根据上面的公式,假设 Fpclk1=36Mhz,那么可以得到最小-最大超时时间如下表

使用特权

评论回复
14
根特皇宫w|  楼主 | 2022-11-30 18:49 | 只看该作者
调试模式

        当微控制器进入调试模式时(Cortex-M3核心停止),根据调试模块中的DBG_WWDG_STOP 配置位的状态,WWDG的计数器能够继续工作或停止。

使用特权

评论回复
15
根特皇宫w|  楼主 | 2022-11-30 18:50 | 只看该作者
窗口看门狗(WWDG)寄存器

控制寄存器(WWDG_CR)


使用特权

评论回复
16
根特皇宫w|  楼主 | 2022-11-30 18:52 | 只看该作者
WWDG_CR 只有低八位有效,T[6:0]用来存储看门狗的计数器值, 随时更新的,每个窗口看门狗计数周期(4096×2^ WDGTB)减 1。当该计数器的值从 0X40 变 为 0X3F 的时候,将产生看门狗复位。

使用特权

评论回复
17
根特皇宫w|  楼主 | 2022-11-30 18:52 | 只看该作者
WDGA 位则是看门狗的激活位,该位由软件置 1,以启动看门狗,并且一定要注意的是该 位一旦设置,就只能在硬件复位后才能清零了。

使用特权

评论回复
18
根特皇宫w|  楼主 | 2022-11-30 18:53 | 只看该作者
配置寄存器(WWDG_CFR)

        该位中的 EWI位是提前唤醒中断位,也就是在快要产生复位的前一段时间(T[6:0]=0X40)来提醒我们,需要进行喂狗了,否则将复位!

使用特权

评论回复
19
根特皇宫w|  楼主 | 2022-11-30 18:54 | 只看该作者
因此,我们一般用该位来设置中断,当窗口看门狗的计数器值减到 0X40 的时候,如果该位设置,并开启了中断,则会产生中断,我们可以在中断里面向 WWDG_CR 重新写入计数器的值,来达到喂狗的目的。注意这里在进入中断后,必须在不大于 1 个窗口看门狗计数周期的时间(在 PCLK1 频率为 36M 且 WDGTB 为 0 的条件下, 该时间为 113us)内重新写 WWDG_CR,否则,看门狗将产生复位!

使用特权

评论回复
20
根特皇宫w|  楼主 | 2022-11-30 18:55 | 只看该作者
状态寄存器(WWDG_SR)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

115

帖子

0

粉丝