10. 看门狗定时器 (WDT)
10.1. 概述
看门狗定时器(WDT)主要用于控制程序流程正确,在程序流长时间未按既定流程执行指定程序的情况下产生中断或复位芯片。 SWM221系列所有型号WDT操作均相同。使用前需使能对应WDT模块时钟。
10.2. 特性
产生计数器溢出复位信号,复位信号使能可配
具有16位计数位宽,可配置灵活、宽范围的溢出周期
具有中断功能
10.3. 功能描述
看门狗定时器(WDT)主要用于控制程序流程正确,在程序流程时间未按既定流程执行指定程序的情况下复位芯片。
WDT 模块功能分为普通模式和窗口模式。在普通模式下,任何时候都可以喂狗执行 WDT 复位操作;在窗口模式下,只能在 WDT 中断之后、WDT 复位之前喂狗,如果喂早了(在 WDT 中断之前)那么立即复位。
10.3.1. 模块结构框图
WDT 模块结构如 图 20 所示。
图 20 WDT 模块结构框图
10.3.2. 普通模式
工作示意图如 图 21 所示:
图 21 普通模式工作示意图
配置方式如下:
配置复位值寄存器RSTVAL,设置复位值,WDT为递增计数
配置控制寄存器CR中RSTEN位,设置以系统时钟为单位递增时产生中断或产生复位
将控制寄存器CR中EN位置1,使能WDT模块
程序执行过程中通过向FEED寄存器写入0x55喂狗,重启计数,两次喂狗至少间隔5个及以上WDT时钟周期
若当VALUE寄存器加至INTVAL或RETVAL,依然未执行喂狗操作,则根据CR寄存器设置,产生中断或复位信号
注意
在使用看门狗定时器(WDT)时需要注意:WDT启用与FEED WDT之间至少间隔5个及以上WDT时钟周期
控制寄存器CR中RSTEN位配置为复位使能时,使能后波形如 图 22 所示:
图 22 WDT 配置为 RESET 模式波形图
控制寄存器CR中RSTEN位配置为复位失能时,使能后波形如 图 23 所示,中断产生后,通过IF寄存器进行清除。
图 23 WDT 配置为中断模式波形图
10.3.3. 窗口模式
在窗口模式下,只能在WDT中断之后、WDT复位之前喂狗,如果在WDT中断之前喂狗,则立即执行WDT复位操作。
在窗口模式下看门狗发生中断及复位与计数值之间的关系示意图如 图 24 所示:
图 24 窗口模式 WDT 发生中断及复位与计数值之间的关系示意图
配置方式如下:
配置复位值寄存器RSTVAL,设置复位值,WDT为递增计数
配置控制寄存器CR中WINEN位,使能窗口功能
配置控制寄存器CR中RSTEN位,设置以系统时钟为单位递增时产生中断或产生复位
将控制寄存器CR中EN位置1,使能WDT模块
WDT中断之后、WDT复位之前通过向FEED寄存器写入0x55喂狗,重启计数
如果在WDT中断之前喂狗,则执行WDT复位操作
10.3.4. 中断配置与清除
可通过配置 WDT 控制寄存器 CR 设置以系统时钟为单位递增时产生中断,并使能中断。启动 WDT,当 VALUE 寄存器加至 INTVAL,依然未执行喂狗操作时,中断标志寄存器 IF 位置 1。如需清除此标志,需在标志位中写 1 清零(R/W1C),否则中断在开启状态下会一直进入。
10.4. 寄存器映射
名称 |
偏移 |
复位值 |
---|---|---|
WDT BASE:0x40046800 |
||
RSTVAL |
0x00 |
0x0000FFFF |
INTVAL |
0x04 |
0x0000FFFF |
CR |
0x08 |
0x00000000 |
IF |
0x0C |
0x00000000 |
FEED |
0x10 |
0x00000000 |
10.5. 寄存器描述
10.5.1. RSTVAL寄存器
偏移: 0x00 |
复位值: 0x0000FFFF |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
RSTVAL |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
RSTVAL |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:16 |
RO |
保留位 |
|
15:0 |
RSTVAL |
R/W |
WDT计数器的复位计数初始值。 当WDT计数值计数到该寄存器设置值时,产生复位。 该寄存器必须在WDT_EN无效时配置,WDT启动后设置RSTVAL寄存器无效。 |
10.5.2. INTVAL寄存器
偏移: 0x04 |
复位值: 0x0000FFFF |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
INTVAL |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
INTVAL |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:16 |
RO |
保留位 |
|
15:0 |
INTVAL |
R/W |
WDT计数器的中断计数初始值。 当WDT计数值计数到该寄存器设置值时,产生中断。 该寄存器必须在WDT_EN无效时配置,WDT启动后设置INTVAL寄存器无效。 注1:设置的中断初始值必须小于复位初始值,否则直接发生看门狗复位,不会产生中断。 注2:当WINEN为1时,在未发生中断时喂狗,则直接发生开门狗复位。当WINEN为0时,发生看门狗复位跟喂狗没有关系。 |
10.5.3. CR控制寄存器
偏移: 0x08 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
WDTPRCSEL |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
REVERSED |
WINEN |
INTEN |
RSTEN |
WDTEN |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:12 |
REVERSED |
RO |
|
11:8 |
WDTPRCSEL |
R/W |
看门狗计数时钟预分频寄存器 0000:2 0001:4 0010:8 0011:16 0100:32 0101:64 0110:128 0111:256 1000:512 1001:1024 1010:2048 1011:4096 1100:8192 1101:16384 1110:32768 1111:65536 |
7:4 |
REVERSED |
RO |
|
3 |
WINEN |
R/W |
WDT窗口功能使能 1:使能窗口功能 0:禁止窗口功能 |
2 |
INTEN |
R/W |
WDT中断输出使能位 1:使能中断 0:禁止中断 |
1 |
RSTEN |
R/W |
WDT复位输出使能位 1:使能复位 0:禁止复位00:使用内部系统时钟上升沿 |
0 |
WDTEN |
R/W |
WDT启动位 1:启动WDT计数 0:停止计数 |
10.5.4. IF寄存器
偏移: 0x0C |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
WDTIS |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:1 |
RO |
||
0 |
WDTIS |
R,W1C |
WDT中断位,高有效 硬件置位,软件写1清除 |
10.5.5. FEED寄存器
偏移: 0x10 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
WDTCR |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:8 |
RO |
保留位 |
|
7:0 |
WDTCR |
WO |
看门狗重启计数器寄存器 当向该寄存器写入8’h55后会重启看门狗计数器。(喂狗操作) |