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)继续正常工作或停止。
中断
中断事件 |
使能控制位 |
|---|---|
EWIF |
EWI |
寄存器
WWDG寄存器
WWDG中寄存器和相应的偏移地址如下表所示:
偏移地址 |
寄存器名称 |
功能描述 |
|---|---|---|
0x0 |
WWDG_CR |
控制寄存器 |
0x4 |
WWDG_CFR |
配置寄存器 |
0x8 |
WWDG_SR |
状态寄存器 |
0xC |
WWDG_VER |
IP_VERSION |
WWDG_CR
地址偏移:0x0
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
T |
21:0 |
RW |
0x7f |
|
保留 |
30:22 |
/ |
0x0 |
/ |
WDGA |
31 |
RW |
0x0 |
|
WWDG_CFR
地址偏移:0x4
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
W |
21:0 |
RW |
0x7f |
22 位窗口值,W 字段包含要与递减计数器比较的窗口值 |
保留 |
27:22 |
/ |
0x0 |
/ |
WDGTB |
30:28 |
RW |
0x0 |
|
EWI |
31 |
RW |
0x0 |
|
Note
当WWDG运行时,不应调整WWDG_CFR寄存器。
WWDG_SR
地址偏移:0x8
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
EWIF |
0 |
W0C |
0x0 |
|
T_UPD |
1 |
RO |
0x0 |
|
保留 |
31:2 |
/ |
0x0 |
/ |
WWDG_VERSION
地址偏移:0xC
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
VERSION_NUM |
31:0 |
RO |
0x0001_0301 |
WWDG 的 IP 版本 |