工作原理
由软件读写看门狗中的LOADVALUE寄存器,打开看门狗并设置计数时间,定时器计数计满,由软件清零(INT clear),以表明系统状态正常。这时,定时器计数重新开始。否则,看门狗认为 系统异常或有其它特定事件发生,触发系统复位信号,或提供中断,系统正常后通过配置看门狗,重新开始计数器计数。
这样只要软件正常运行吗,就不会出现看门狗的复位情况。当死机或者软件运行出错时,由看门狗对系统进行复位或触发中断。
在这里使用的看门狗,主要有两个功能:
- 通用的产生中断的定时器,可配置中断产生时间
- 当中断没有被清除,计数器又一次(产生中断信号后)减到0时,产生复位信号
原文翻译
apb watchdog本身是基于一个递减的计数器,计数器的初始值是从WDOGLOAD寄存器读取的。在一些条件满足时,当计数器的值递减到0,输出接口的WDOGINT会拉高。只有当WDOGCLKEN为高时,才允许wdog在输入时钟WDOGCLK的上升沿将计数器的值减1.
当wdog发现interrupt信号已经拉高后,若是内置的计数器又一次递减到0,会拉高WDOGRES信号,随后计数器会停下。在下一个时钟上升沿,计数器会从WDOGLOAD加载初始值,重新开始新一轮的递减计数。如果这种情况下(WDOGINT拉高,WDOGRES拉高)计数器又一次递减到0,则会又一次拉高WDOGRES信号(?)
测试点记录
- WDOGRES信号拉高后,计数器是否停止计数?(模块功能理解,设置测试情境看波形,测试2,6给出情境)
- 如果WDOGINT,WDOGRES都拉高之后,计数器第三次递减到0(前两次递减分别造成了WDOGINT的拉高和WDOGRES的拉高),WDOGINT和WDOGRES会怎样表现,WDOGRES的reassert是什么意思?(测试8)
流图
图中只记录了WDOGINT和WDOGRES被拉高的两次计数器递减到0的过程,需要注意的是这两个信号能够被拉高的前提是对应的enable位被设置
测试点记录
- 没有设置enable位情况下,这两个信号即时满足计数器递减至0等其他条件,也不能被拉高
寄存器列表
测试点记录
读取WDOGPERIPHID01234567和WDOGPCELLID0123确定读出数据合理(测试1给出)
功能寄存器作用
- WDOGLOAD:用来保存计数器初始值,当该寄存器被写入时,计数器会立刻从该寄存器加载新的初始值,可写入的最小值为1
- WDOGVALUE: 用来保存计数器当前数值,可能是0到初始