第30章
WDT——看门狗定时器
30.1
WDT简介
一般来说,看门狗也叫看门狗定时器,从本质上面来看,其实它就是一个计数器,在使用的时候,需要给它一个数值,随后看门狗的计数器根据计数方向开始累计,在看门狗的计数器达到预设的数值之前,可以进行重置看门狗计数器的操作,简称“喂狗”。但当没有在计数器发生溢出之前进行及时喂狗的话,看门狗就会产生复位请求或者不可屏蔽中断请求(NMI-Non Maskable Interrupt)。
30.1.1
WDT特性
WDT特性:
使用外设时钟(PCLK)
使用14位下行计数器进行计数
可以设置安全属性TrustZone
30.1.2
WDT模块功能
WDT模块功能:
当WDT在允许的刷新窗口之外下溢或刷新时,可以产生以下两种事件之一:
重置设备
NMI的生成
WDT有两种受支持的的模式,分别为:
在自启动模式下,WDT在复位时开始计数
在寄存器模式下,WDT可以从应用程序中启动
30.2
WDT功能框图剖析
功能框图

30.2.1
WDT时钟源
30.2.1.1
计数器时钟
看门狗时钟来自外部时钟电路PCLKB,PCLKB最大的时钟频率是50MHz,可以使用RA配置编辑器的时钟选项卡或在运行时使用CGC接口设置PCLKB频率。设置PCLKB频率。PCLKB以50MHz运行时的最大超时周期约为2.6秒,下面进行看门狗超时时间的计算。
30.2.1.2
计算看门狗超时时间
首先,假设PLCKB为50MHz
时钟分频比等于PCLKB/8192
将循环周期设为16384 cycles
那么,可以得到看门狗的时钟频=50 MHz / 8192=6.103 kHz
周期时间等于1/6.103 kHz=163.85us
最终,最大超时时间等于163.85 us*16384 cycles=2.68秒
注
cycles:配置的循环周期次数,此数值越大,超时时间越长。
30.2.1.3
窗口值

点击可查看大图
可以设置在哪个区间进行喂狗,但是只能在窗口期内进行喂狗,如果超出总周期还没有进行喂狗操作,或是在非允许刷新周期进行刷新,单片机都会自动复位或者是处理NMI中断。
30.2.2
WDT模块核心电路
30.2.2.1
WDT控制电路
WDT的控制寄存器位WDTCR,主要用于在寄存器启动模式下设置分频比、刷新窗口的开始以及结束位置以及向下计数器下溢的超时时间。在自启动模式下,WDTCR寄存器中的设置将被禁用,而选项功能寄存器0(OFS0)中的设置会被启用,WDTCR寄存器的设置也可以在OFS0寄存器中进行。
30.2.2.2
14位递减计数器
看门狗的计数器是一个递减计数器,共有14位,其值存在于控制寄存器WDTCR中的TOPS[1:0]位。从1024、4096、8192和16384个周期开始,将CKS[3:0]位中指定的分频时钟取为一个周期。在程序中,当此递减计数器向下溢出之前还没有进行喂狗操作,则看门狗产生复位信号或不可屏蔽中断信号。
30.2.3
WDT输出及中断请求
看门狗计数溢出时单片机会有两种处理方式,第一种处理方式是直接复位,第二种处理方式是机器停止运行然后执行一段不可屏蔽的中断服务函数。
直接复位的方式通常运用在当程序运行出错的时候或者程序跑飞的时候,直接将其复位使其重新开始。
执行中断服务函数的方式通常运用在单片机运行出错的时候,如果需要保存一些重要的数据,或者需要改变某些模块状态来避免损失,此时增加一段中断代码是非常有用的。
30.2.3.1
输出到时钟控制电路
当复位中断选择位(WDTRCR.RSTIRQS)在寄存器启动模式下或WDT复位时设置为1时,或当WDT复位选项功能选择寄存器0(OFS0)中的中断请求选择位(OFS0.WDTRSTIRQS)在自启动模式时设置为1 时,当看门狗向下计数器下溢或者发生刷新错误时,输出1个周期计数的复位信号到时钟控制电路。
30.2.3.2
事件信号输出
当复位中断选择位(WDTRCR.RSTIRQS)在寄存器启动模式下或WDT复位时设置为0时,或当WDT复位选项功能选择寄存器0(OFS0)中的中断请求选择位(OFS0.WDTRSTIRQS)在自启动模式时设置为0 时,当看门狗向下计数器下溢或者发生刷新错误时,产生中断(WDT_NMIUNDF)信号,此信号产生的中断用于不可屏蔽中断,也就是事件输出信号。
全部0条评论
快来发表一下你的评论吧 !