WWDG

简介

Nuclei窗口看门狗(WWDG)用于检测软件故障的发生,通常由外部干扰或不可预见的逻辑条件引起,这些条件导致应用程序放弃其正常序列。看门狗电路在编程时间段到期时生成MCU复位,除非程序在T[21:6]位变为清零之前刷新递减计数器的内容。如果在递减计数器达到窗口寄存器值之前刷新22位递减计数器值(在控制寄存器中),也会生成MCU复位。这意味着计数器必须在有限的窗口内刷新。

WWDG的块图如图4.1所示。

主要特性

WWDG的主要特性如下:

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

  • 条件复位:

    • 复位(如果看门狗激活)当递减计数器值变为小于0x40时

    • 复位(如果看门狗激活)如果在窗口外重新加载递减计数器

  • 早期唤醒中断(EWI):当递减计数器等于0x40时触发(如果启用且看门狗激活)

  • 在JTAG调试模式下计数器冻结

功能描述

如果看门狗被激活(在WWDG_CR寄存器中设置WDGA位),当22位递减计数器(T[21:0]位)从0x40滚动到0x3F(T[21:6]变为清零)时,它启动复位。如果软件在计数器大于存储在窗口寄存器中的值时重新加载计数器,则生成复位。

应用程序必须在正常操作期间定期写入WWDG_CR寄存器以防止MCU复位。此操作必须仅在计数器值低于窗口寄存器值时发生。

当WWDG运行时,WWDG_CFR寄存器不能更改。如果应用程序想要更改WWDG_CFR寄存器值,此过程应在WWDG模块被icb_rstn复位后进行,这可能由子系统的复位控制单元或WWDG复位产生。存储在WWDG_CFR寄存器中的值必须大于0x40。

启用看门狗

看门狗在复位后总是禁用的。通过在WWDG_CR寄存器中设置WDGA位来启用它,然后除了复位之外不能再次禁用它。

控制递减计数器

当看门狗功能启用时,必须设置T[21:0]位以防止立即产生复位。T[21:0]位包含表示看门狗产生复位前时间延迟的增量数。时间延迟会发生变化由于在写入WWDG_CR时预分频器的状态未知,因此其值介于最小值和最大值之间寄存器(参见图WWDG时序图(第9页))。配置寄存器(WWDG_CFR)包含上限值窗口机制:为防止重置,当递减计数器的值低于窗口寄存器时,必须重新加载递减计数器数值且大于0x3F。图WWDG时序图(第9页)描述了窗口看门狗过程。

高级看门狗中断功能

早期唤醒中断(EWI)可用于在生成实际复位之前必须执行特定安全操作或数据记录。通过在WWDG_CFR寄存器中设置EWI位来启用EWI中断。当递减计数器达到值0x40时,生成EWI中断,相应的中断服务程序(ISR)可用于在复位设备之前触发特定操作(如通信或数据记录)。

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

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

如何编程看门狗超时

您可以使用图6.1 WWDG时序图中的公式来计算WWDG超时。

Warning

写入WWDG_CR寄存器时,始终确保T[21:6]不是0x0以避免产生立即复位。

计算超时值的公式为:

twwdg = twwdg_clk * 4096 * 2^WDGTB[2:0] * (T[21:0]+1)

其中:

  • twwdg: WWDG超时

  • twwdg_clk: WWDG的时钟,以ms为单位测量

  • 4096: 对应于内部分频器的值

例如,假设ICB_CLK频率等于24 MHz,WDGTB[2:0]设置为3,T[21:0]设置为63:

tWWDG = (1/24000) * 4096 * 2^3 * (63 + 1) = 87.38ms

调试模式

当子系统进入调试模式时,WWDG计数器根据接口状态(dbg_wwdg_stop)继续正常工作或停止。

中断

表 7.1: WWDG中断请求

中断事件

使能控制位

EWIF

EWI

寄存器

WWDG寄存器

WWDG中寄存器和相应的偏移地址如下表所示:

表 8.1: WWDG中寄存器的偏移地址

偏移地址

寄存器名称

功能描述

0x0

WWDG_CR

控制寄存器

0x4

WWDG_CFR

配置寄存器

0x8

WWDG_SR

状态寄存器

0xC

WWDG_VER

IP_VERSION

WWDG_CR

地址偏移:0x0

表 8.2: WWDG_CR格式

字段

位

访问

复位值

描述

T

21:0

RW

0x7f

  • 22 位计数器

  • 写入:初始计数器值

  • 读取:返回运行计数器值或初始计数器

  • 注意:如果 WWDG 设计处于安全配置中,对于某些安全应用,读取响应计数器是初始值

保留

30:22

/

0x0

/

WDGA

31

RW

0x0

  • 激活位

  • 此位由软件设置,仅在复位后由硬件清除。当 WDGA=1 时,看门狗可以生成复位

  • 1’b0:看门狗禁用

  • 1’b1:看门狗启用

WWDG_CFR

地址偏移:0x4

表 8.3: WWDG_CFR格式

字段

位

访问

复位值

描述

W

21:0

RW

0x7f

22 位窗口值,W 字段包含要与递减计数器比较的窗口值

保留

27:22

/

0x0

/

WDGTB

30:28

RW

0x0

  • 预分频器的时间基数可按如下方式修改

  • 3’b000:CK 计数器时钟 (PCLK1 div 4096) div 1

  • 3’b001:CK 计数器时钟 (PCLK1 div 4096) div 2

  • 3’b010:CK 计数器时钟 (PCLK1 div 4096) div 4

  • 3’b011:CK 计数器时钟 (PCLK1 div 4096) div 8

  • 3’b100:CK 计数器时钟 (PCLK1 div 4096) div 16

  • 3’b101:CK 计数器时钟 (PCLK1 div 4096) div 32

  • 3’b110:CK 计数器时钟 (PCLK1 div 4096) div 64

  • 3’b111:CK 计数器时钟 (PCLK1 div 4096) div 128

EWI

31

RW

0x0

  • WWDG 复位中断启用。当 EWI 字段设置时,当计数器达到值 0x40 时发生中断

  • 1’b0:禁用

  • 1’b1:启用

Note

当WWDG运行时,不应调整WWDG_CFR寄存器。

WWDG_SR

地址偏移:0x8

表 8.4: WWDG_SR格式

字段

位

访问

复位值

描述

EWIF

0

W0C

0x0

  • 早期唤醒中断标志

  • 当计数器达到值 0x40 时由硬件设置。必须通过软件写入 0 来清除。写入 1 无效。如果中断未启用,此位也会设置

T_UPD

1

RO

0x0

  • 看门狗计数器值更新标志

  • 此位由硬件设置以指示看门狗计数的更新正在进行。如果更新过程完成,此位将由硬件清除

  • 1’b0:更新过程完成

  • 1’b1:更新过程正在进行

保留

31:2

/

0x0

/

WWDG_VERSION

地址偏移:0xC

表 8.5: WWDG_VER格式

字段

位

访问

复位值

描述

VERSION_NUM

31:0

RO

0x0001_0301

WWDG 的 IP 版本