MAX20431 窗口看门狗的使用
1. MAX20431的介
2. 使用背景
把MAX20431当做一个外部看门狗使用。目前有两种看门狗模式,质询/响应或窗口看门狗,我选择窗口看门狗使用。喂狗方式使用向寄存器写值。
MAX20431看门狗使用须知:
1.MAX20431和mcu/soc的关联,我这里MAX20431给soc作为外部看门狗使用,MAX20431上电之后一直工作,当异常没有喂狗,MAX20431也不会断电,MAX20431通过拉低RESET引脚给soc复位。
2.soc需要周期去给MAX20431通过I2C,访问某个寄存器,并向这个寄存器写入值,相当于喂狗。
3. 喂狗方式可以是写寄存器也可以是给MAX20431某个管脚上下拉的电平信号方式,这里选择写寄存器方式。
3. 窗口看门狗的基本知识:
https://blog.csdn.net/yeweiliang_93/article/details/135751296
https://www.analog.com/en/technical-articles/the-basics-of-windowed-watchdogs.html
4. MAX20431关于窗口看门狗的使用说明
简略关键意思:
1.挑战/响应监视器使用一个线性反馈移位寄存器(LFSR)来计算对当前键的响应。单片机可以随时从WDKEY寄存器中读取当前的键。该响应/喂狗时间点 必须在t_WD1时间到期之后和t_WD2时间到期之前写入。打开和关闭窗口的时间可通过I2C进行编程。任何有效的看门狗刷新(指喂狗成功)都将终止已打开的窗口(指代t_WD2打开了,现在终止),并初始化已关闭的窗口(指代t_WD1初始化)。
2.任何关于重置的断言都将重新启动看门狗。退出复置条件后(在保持计时器到期后复置取消断言),更新窗口将立即打开并扩展(指打开窗口的扩展定时器),以便在需要更新看门狗之前启动MCU时间。如果该设备被配置为一个标准的窗口看门狗(WDCDIV。SWW = 1),然后将任何值写入WDKEY都会产生一个有效的看门狗刷新信号,并且所写入的值将被忽略。如果使用了一个标准的加窗看门狗,该设备可以配置为使用SYNC/WDI引脚作为看门狗更新输入(WDI),以使用数字输出信号刷新看门狗。
3.违反违规有三种类型: WD_LFSR、WD_EXP和WD_UV。
如果配置为挑战/响应监视器,则向WDKEY寄存器写入错误的响应会导致LFSR冲突,并且写入的值将被忽略。
在打开窗口期间,以挑战/响应模式写入正确的响应会导致刷新,WDKEY正在更新寄存器。在一个关闭的窗口期间,以挑战/响应模式写入正确的响应会导致WD_UV冲突,并且写入的值将被忽略。
在打开窗口期间不刷新看门狗会导致WD_EXP违规
4.如果检测到看门狗违反,看门狗断言复置并在退出复置条件时重新启动。内部违规计数器仅在开机时进行重置。
5.当WD_EN位被设置为1时,看门狗被启用。WD_LOCK位必须设置为0,以配置或禁用看门狗,以防止意外地重新配置看门狗。
6.当看门狗被配置为一个简单的窗口看门狗时,它可以通过将任何值写入WDKEY寄存器来刷新,即使所写入的值会被忽略。
看门狗控制流程:
1.MAX20431上电开始
2. 清除HOLD TIMER ASSERT RESET
3. 判断HOLD TIMER 是否到期
4.取消断言
5.判断WD_EN和WDDIV是否有效
6.使能看门狗
7.看门狗故障判断
实际使用的流程:
0.一般理论情况使用逻辑图:
通过这个简图,我们可以转换一下理解,也就是t_0到t_WD1视为关窗阶段。t_WD1到t_WD2视为开窗阶段。t_1STWD2视为开窗扩展阶段
1.正常上电或者MAX20431复位,喂狗逻辑:
2.异常情况:在关窗阶段喂狗:
3.异常情况:一直不喂狗:
5.MAX20431看门狗相关寄存器说明
主要对HT位进行设置,可以设置为00,含义是看门狗复位之后,可以保持0x00:9.8ms之后,再把RESET 管脚设置为高电平,也相当于设置为高电平看门狗也开始进行启用,术语就是断言。
都是读取标志位。
RESETB_STAT表示RESETB 管脚状态,实时状态。
WD_OPEN表示可以喂狗了,表示打开了窗口,也是实时状态。
WD_LFSR:表示在质询看门狗模式,向喂狗寄存器写入的值不对,产生的错误导致的置位。
WD_UV:表示在关窗阶段进行喂狗导致的错误置位。也就是在t_wd1到期之前进行了喂狗。
WD_EXP:表示经过了开窗阶段,没有进行喂狗导致的错误置位。也就是在t_wd2到期之前没有进行喂狗。
WD_SWW:质询和简单窗口看门狗模式选择。
WD_DIV:对t_WDCLK的设置,看门狗计数最小时钟单元设置。看门狗时钟分频设置。
WD_OPEN:设置t_WD1时间。也就是t_WD1定时器到期之前是关窗的。
WD_CLO:设置t_WD2时间。也就是t_WD2定时器到期之前是开窗的。
WD_EN:使能/关闭看门狗。
WD_1UD:设置扩展时间。扩展时间出现在MAX20431上电的时候,或者喂狗异常导致mcu/soc复位的时候,MAX20431就会进入扩展时间,在扩展时间内,喂一次狗之后,MAX20431就立即开始关窗阶段,关窗阶段到期后就进入正常开窗阶段,这样正常周期运行。
WD_KEY:喂狗寄存器,简单窗口看门狗就随便设置0xBB或者其他值,就是喂狗。