10.2.2. 功能描述

10.2.2.1. 工作流程

WDOG由1个32位计时器进行计数产生信号,流程如 图 10.1

正常场景

  1. CNT_EN=1,启动计时器开始计数,计时以每个32K时钟周期为单位加一。

  2. CNT>CLR_THD时,允许喂狗进行清零,通过执行OP_CNT_CLR进行清零。

异常场景

  1. CNT>IRQ_THD时,产生中断,保存异常现场;

  2. CNT>RST_THD时,产生复位,复位整个系统。

如果想实现系统强制复位,可以通过设置RST_THD的值为较小值(如32),然后执行OP_CNT_CLR进行复位。

../../../_images/wdog_function_flow.png

图 10.1 WDOG工作流程

10.2.2.2. 寄存器写保护功能

当工作在异常状态下,由于处理器的行为未知,为了最大化防止WDOG功能被关闭, 针对寄存器做了写失效保护,在写失效下,只有OP寄存器和IRQ_STA寄存器可被访问, 即只有OP指令和清中断可以执行。

写失效有3种模式说明如下:

  • 写允许(REG_WR_DIS=0),可正常写寄存器,在WDOG初始化的时候使用,CNT_EN后建议切换为写失效模式

  • 写保护(REG_WR_DIS=1/2),在需要动态配置WDOG方案中使用, 配置前需先执行OP_WR_EN,配置完寄存器再配置REG_WR_DIS=1/2,可以保护异常下不被误写

  • 写失效(REG_WR_DIS=3),在无需动态配置WDOG方案中使用, 配置完成后设置CNT_EN=1 && REG_WR_DIS=3,运行期间配置不再被改写。

如有多场景需求且无需进行动态配置参数,可在初始化时完成多个场景配置后,设置REG_WR_DIS=3,应用过程只需要进行场景切换, 场景切换详细描述见 节 10.2.2.3

10.2.2.3. 场景切换

WDOG是基于CLR_THD、IRQ_THD和RST_THD进行工作,这三个参数各有4个寄存器可以作为不同场景的配置信息,而在内部均使用影子寄存器, 只有在每次执行OP_CNT_CLR后才会将最新所需的场景参数配置到影子寄存器。

在不同场景或应用(如低功耗场景),会有不同配置,提供最多4种配置备份, 执行OP_CFG_SW和OP_CNT_CLR即可进行配置切换。

在只有单一场景的方案,为了最大化防止异常下进行场景切换,可以把4个场景配置为相同配置。

10.2.2.4. 操作指令

OP寄存器是写失效下唯一可以进行写操作的寄存器, 通过连续两个写操作数与序列匹配,启动对应的指令。

现有支持指令 表 10.3 所示:

表 10.3 OP指令定义

指令操作

指令名称

写操作数序列

备注

计时清零

OP_CNT_CLR

0xA1C55555 -> 0xA1CAAAAA

需要满足CNT>CLR_THD,操作才生效

切换到配置0

OP_SW_CFG0

0xA1C5A5A0 -> 0xA1CA5A50

切换到配置1

OP_SW_CFG1

0xA1C5A5A1 -> 0xA1CA5A51

切换到配置2

OP_SW_CFG2

0xA1C5A5A2 -> 0xA1CA5A52

切换到配置3

OP_SW_CFG3

0xA1C5A5A3 -> 0xA1CA5A53

写使能

OP_WR_EN

0xA1C99999 -> 0xA1C66666

在REG_WR_DIS=3下无效