功能描述
WDOG 工作流程
- 计时器使能 (CNT_EN = 1) 并开始计时。计时以每个 32K
时钟周期为单位加一。
使能计时器后,建议用户切换为写保护模式,具体配置可查看寄存器写保护功能。
- 计时器达到清零阈值 (CNT > CLR_THD)。
- 如系统运行正常,即可通过 CPU 执行 OP_CNT_CLR 对计时器进行清零。此时不会产生中断或者复位。
关于 OP_CNT_CLR 的操作说明,可查看 功能描述。
- 如系统出现异常,无法通过 CPU 对计时器进行清零,则计时器继续计时:注: 为了最大化防止以下中断或复位情况中 WDOG 功能被关闭,可设置寄存器写保护功能。
- 计时器先达到中断阈值 (CNT > IRQ_THD):计时器产生 CLR TIMEOUT_IRQ 中断,保存异常现场,该中断可被清除。
- 计时器达到复位阈值 (CNT > RST_THD):计时器产生复位,复位整个系统。
如需系统强制复位,设置 RST_THD 的值为较小值(例如 32),并执行 OP_CNT_CLR 进行复位。
- 如系统运行正常,即可通过 CPU 执行 OP_CNT_CLR 对计时器进行清零。此时不会产生中断或者复位。
寄存器写保护功能
WDOG 具有寄存器写保护功能,针对异常状态下处理器的未知行为,以防止 WDOG 功能被关闭。寄存器写保护功能使能后,只有 OP 寄存器和 IRQ_STA 寄存器可被访问,只能执行 OP 指令和清中断操作。关于 OP 指令的详细说明,可查看 功能描述。
- 写允许 (REG_WR_DIS = 0):正常写寄存器,在 WDOG 初始化时使用。
设置 CNT_EN = 1 后建议切换为写失效模式。
- 写保护 (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,应用过程只需要进行场景切换。 场景切换详细描述见场景切换。
场景切换
WDOG 是基于 CLR_THD、IRQ_THD 和 RST_THD 三个参数为一组配置工作的,每个参数各有四个参数寄存器,用 n 进行区分,n = 0 ~ 3,详情可查看对应的寄存器描述。通过设置参数寄存器,可组成不同的场景配置。WDOG 可支持保存最多四种组合场景,切换场景的 OP 指令分别为 OP_SW_CFG0、OP_SW_CFG1、OP_SW_CFG2 和 OP_SW_CFG3。
- 执行 OP_SW_CFGn (n=0~3) 切换到配置好的第 n
个场景。
若只需要一种场景,为了最大化防止异常情况下误切换了场景,可以把四个场景配置为相同参数。
- 执行 OP_CNT_CLR 将计数器清零。
新的一轮计数将按照新的场景参数运行。
操作指令
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 下无效。 |