瑞萨RA系列FSP库开发实战指南之IWDT独立看门狗定时器简介和功能框图剖析

描述

第31章

IWDT——独立看门狗定时器

31.1

IWDT简介

IWDT(Independent Watchdog Timer)由一个14位的向下计数器组成,用于从应用程序中的意外错误中恢复。应用程序必须在允许的计数窗口内进行刷新计时器,如果允许计数器下溢或者是在有效刷新周期外刷新的话,IWDT将复位MCU或生成不可屏蔽中断(NMI)。

31.1.1

IWDT特性

IWDT特性:

使用自带时钟源(IWDTCLK)

使用14位下行计数器进行计数

可以设置安全属性TrustZone

31.2

功能框图剖析

功能框图

定时器

31.2.1

IWD时钟源

31.2.1.1

计数器时钟

独立看门狗时钟来自IWDTCLK,IWDTCLK最大的时钟频率是15000Hz,可以使用RA配置编辑器的BSP设置IWDTCLK分频器。从计数器第一次刷新到产生复位或NMI中断的最大时间要比35秒略少一点。

31.2.1.2

独立看门狗超时时间计算

首先,独立看门狗的输入时钟频率为15000hz

时钟分频比等于256

将循环周期设为2048 cycles

那么,可以得到独立看门狗的时钟频率15000Hz / 256=58.59hz

周期时间等于1/58.59hz=17.067ms

最终计算出设置的超时时间=17.067ms x 2048 cycles=34.95秒

cycles:配置的循环周期次数,此数值越大,超时时间越长。

31.2.2

IWD模块电路功能讲解

当“功能选择寄存器0”中的“IWDT启动模式选择位(OFS0.IWDTSTRT)”为“自动启动模式”时,才能使用IWDT,否则IWDT将被禁用。在重置状态下,“功能选择寄存器0(OFS0)”中的各项设置如下:

复位状态解除后,计数器自动从IWDT超时时间选择位(OFS0.IWDTTOPS[1:0])中选择的值开始倒数。在此之后,只要程序继续正常操作并且在刷新允许的时间内刷新计数器,每次刷新计数器并继续下计数时,计数器中的值都会重置。只要这个过程继续,IWDT就不会输出复位信号。然而,如果由于程序崩溃或由于在刷新允许的时间外尝试刷新时发生了刷新错误而导致计数器不足,IWDT将断言重置信号或不可屏蔽中断请求/中断请求(IWDT_NMIUNDF)。

复位信号或不可屏蔽中断请求/中断请求产生后,计数器计数1个周期后重新加载超时时间,在down计数器中设置超时时间的值,开始计数。复位输出或中断请求输出可以用IWDT复位中断请求选择位(OFS0.IWDTRSTIRQS)进行选择。不可屏蔽中断请求或中断请求可以通过IWDT下流/刷新错误中断启用位进行选择(NMIER.IWDTEN)。

下图显示了在以下条件下的操作示例:

自启动模式(OFS0.Iwdtstrt=0)

启用了不可屏蔽中断请求输出(OFS0.Iwdtrstirqs=0)

窗口结束位置为0%(OFS0.IWDTRPES[1:0]=10b—)

窗口起始位置为100%(OFS0.IWDTRPSS[1:0]=10b)

定时器

31.2.3

IWDT与WDT功能对比

独立看门狗(IWDT)与看门狗(WDT)的不同点如下:

时钟源不一样,WDT使用外部时钟电路作为时钟源,而IWDT为了稳定性和安全性自带时钟源。

WDT可以设置寄存器启动和自启动两种模式,然而在大多数MCU上面,IWDT只能够设置成自启动这一种模式。

而独立看门狗(IWDT)与看门狗(WDT)也有很多相似点,主要如下:

都可以选择复位的范围(窗口值)。

都可以设置在睡眠模式下是否启动。

都可以设置NMI中断和复位重启。

31.2.4

怎么使用IWDT

独立看门狗一般用来检测和解决由程序引起的故障,比如一个程序正常运行的时间是50ms,在运行完这个段程序之后紧接着进行喂狗,我们设置独立看门狗的定时溢出时间为60ms,比我们需要监控的程序50ms多一点,如果超过60ms还没有喂狗,那就说明我们监控的程序出故障了,跑飞了,那么就会产生系统复位,让程序重新运行。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分