10.2.2. 功能描述
10.2.2.1. 工作流程
WDOG由1个32位计时器进行计数产生信号,流程如 图 10.1。
正常场景
CNT_EN=1,启动计时器开始计数,计时以每个32K时钟周期为单位加一。
CNT>CLR_THD时,允许喂狗进行清零,通过执行OP_CNT_CLR进行清零。
异常场景
CNT>IRQ_THD时,产生中断,保存异常现场;
CNT>RST_THD时,产生复位,复位整个系统。
如果想实现系统强制复位,可以通过设置RST_THD的值为较小值(如32),然后执行OP_CNT_CLR进行复位。
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 所示:
指令操作 |
指令名称 |
写操作数序列 |
备注 |
---|---|---|---|
计时清零 |
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下无效 |