10. 看门狗定时器 (WDT)

10.1. 概述

看门狗定时器(WDT)主要用于控制程序流程正确,在程序流长时间未按既定流程执行指定程序的情况下产生中断或复位芯片。 SWM221系列所有型号WDT操作均相同。使用前需使能对应WDT模块时钟。

10.2. 特性

  • 产生计数器溢出复位信号,复位信号使能可配

  • 具有16位计数位宽,可配置灵活、宽范围的溢出周期

  • 具有中断功能

10.3. 功能描述

看门狗定时器(WDT)主要用于控制程序流程正确,在程序流程时间未按既定流程执行指定程序的情况下复位芯片。

WDT 模块功能分为普通模式和窗口模式。在普通模式下,任何时候都可以喂狗执行 WDT 复位操作;在窗口模式下,只能在 WDT 中断之后、WDT 复位之前喂狗,如果喂早了(在 WDT 中断之前)那么立即复位。

10.3.1. 模块结构框图

WDT 模块结构如 图 20 所示。

../../_images/WDT%E6%A8%A1%E5%9D%97%E7%BB%93%E6%9E%84%E6%A1%86%E5%9B%BE.svg

图 20 WDT 模块结构框图

10.3.2. 普通模式

工作示意图如 图 21 所示:

../../_images/WDT%E6%99%AE%E9%80%9A%E5%B7%A5%E4%BD%9C%E6%A8%A1%E5%BC%8F.svg

图 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 所示:

../../_images/WDT%E9%85%8D%E7%BD%AE%E4%B8%BARESET%E6%A8%A1%E5%BC%8F%E6%B3%A2%E5%BD%A2.svg

图 22 WDT 配置为 RESET 模式波形图

控制寄存器CR中RSTEN位配置为复位失能时,使能后波形如 图 23 所示,中断产生后,通过IF寄存器进行清除。

../../_images/WDT%E9%85%8D%E7%BD%AE%E4%B8%BA%E4%B8%AD%E6%96%AD%E6%A8%A1%E5%BC%8F%E6%B3%A2%E5%BD%A2.svg

图 23 WDT 配置为中断模式波形图

10.3.3. 窗口模式

在窗口模式下,只能在WDT中断之后、WDT复位之前喂狗,如果在WDT中断之前喂狗,则立即执行WDT复位操作。

在窗口模式下看门狗发生中断及复位与计数值之间的关系示意图如 图 24 所示:

../../_images/%E7%AA%97%E5%8F%A3%E6%A8%A1%E5%BC%8FWDT%E5%8F%91%E7%94%9F%E4%B8%AD%E6%96%AD%E5%8F%8A%E5%A4%8D%E4%BD%8D%E4%B8%8E%E8%AE%A1%E6%95%B0%E5%80%BC%E4%B9%8B%E9%97%B4%E7%9A%84%E5%85%B3%E7%B3%BB.svg

图 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后会重启看门狗计数器。(喂狗操作)