一站式电子元器件采购平台

华强商城公众号

一站式电子元器件采购平台

元器件移动商城,随时随地采购

华强商城M站

元器件移动商城,随时随地采购

半导体行业观察第一站!

芯八哥公众号

半导体行业观察第一站!

专注电子产业链,坚持深度原创

华强微电子公众号

专注电子产业链,
坚持深度原创

电子元器件原材料采购信息平台

华强电子网公众号

电子元器件原材料采购
信息平台

使用安全微控制器看门狗定时器

来源:analog 发布时间:2023-11-15

摘要: 安全微控制器系列(DS5000FP、DS5001FP、DS5002FP和相关模块)集成了一个内部看门狗定时器,以防止代码执行错误。看门狗定时器采用高精度晶体振荡器,单片机也采用这种振荡器。这消除了对RC振荡器的需求,同时提供更高的精度。

微控制器经常应用于电源瞬变、电磁干扰、静电放电等环境恶劣的环境中。由总线损坏和电磁放电引起的程序损坏会导致微处理器执行错误指令。在这些环境中,看门狗定时器是一个有用的外设,可以帮助捕获和重置已经“失控”的微控制器。

看门狗定时器是一种简单的倒计时定时器,用于在特定的时间间隔后复位微处理器。在一个正常的操作系统中,软件将定期“宠物”或重新启动看门狗定时器。重新启动后,看门狗将开始计时另一个预定的间隔。当软件或设备不正常工作时,软件在超时前不会重新启动看门狗定时器。当看门狗定时器超时时,它将导致微控制器复位。如果系统软件设计正确,没有硬件故障,则复位将使系统重新正常运行。复位条件必须是“安全”状态。例如,让磁条卡读卡器的复位状态启用写磁头是不明智的。

许多系统已经设计使用外部看门狗定时器。安全微控制器家族通过集成内部看门狗定时器消除了对外部组件的需求。通过在微控制器内部移动看门狗定时器,减少了系统中的设备数量,提高了整个系统的可靠性。看门狗定时器可以利用单片机使用的高精度晶体振荡器,而不是大多数独立看门狗定时器使用的不精确RC振荡器。看门狗定时器的操作是独立于微控制器的,除非通过定时访问程序特别解决。失控的微控制器意外禁用看门狗定时器的可能性小于1在7.2 ×10(16)。本应用笔记描述了安全微控制器看门狗定时器的功能和使用。

看门狗定时器的一般使用

看门狗定时器的主要应用是作为系统监视器来检测和重置“失控”的微处理器。当程序执行出错时,它将不能正确执行重新启动看门狗的代码。在这种情况下,看门狗定时器将超时并导致微控制器复位。在设计合理的系统中,复位将纠正错误。

不管看门狗定时器的能力有多强,有一些故障是不能通过重置来纠正的。例如,看门狗定时器不能防止或检测数据内存的损坏。除非数据损坏影响程序流程,或者采取了一些额外的措施,否则数据损坏不会导致看门狗超时。当然,可以这样编写自诊断软件,使重新启动看门狗取决于数据内存的验证。虽然许多应用程序实现了这样的数据验证方案,但它超出了本文的范围。

应该记住看门狗定时器不能立即检测到故障。根据定义,看门狗计时器必须在它重置处理器之前达到其超时间隔的结束。系统设计者应该知道在执行错误指令和看门狗定时器复位之间可能发生的最大时间间隔。

放置重启说明

在安全微控制器系列中,看门狗定时器由主系统时钟驱动。超时间隔固定为122,800个机器周期(1,473,600个外部时钟周期)。当达到超时时,将发生重置。表1显示了与不同晶体频率相关的复位时间间隔。

表1 看门狗超时时间
时钟频率超时时间间隔
16.0000兆赫92毫秒
14.7456兆赫100毫秒
11.0592兆赫133毫秒
7.73280兆赫191毫秒
5.52960兆赫266毫秒
1.84320兆赫800毫秒

一个主要的问题是看门狗定时器复位命令(设置RWT位)在软件中的位置。最理想的方法是在系统软件的主循环中有一个单独的位置,周期性地重新启动看门狗定时器。通过主程序循环所需的时间必须小于超时间隔,否则设备将在正常运行期间自行复位。然而,在某些系统中,程序流不是线性的,不能允许放置单个看门狗定时器复位功能。代码中应该放置多个复位功能,对应最长的软件路径。

系统通常需要知道看门狗定时器是否复位。当这种情况发生时,WTR位(PCON.4)将被设置,如果发生系统故障,软件可以在复位序列的早期对此进行测试。如果是这样,系统可能决定进入“安全”模式,并提醒用户出现错误情况。

看门狗复位示例

下面是一个简短的程序,说明了看门狗定时器的初始化和基本功能。它说明了定时访问特性,它可以防止看门狗控制位的意外修改。定时访问操作是必须按顺序一起执行的一系列步骤;否则,访问失败。示例程序显示了用于重新启动看门狗并使其复位的定时访问。关于定时访问操作的更多细节可以在安全微控制器用户指南中找到。受定时访问过程保护的看门狗定时器位是使能看门狗定时器复位(EWT;PCON.2)和重启看门狗定时器(RWT;IP.7)位。

;WD_RST。ASM程序;;这个程序演示了看门狗定时器的使用。运行时,程序在端口1上计数,表示设备为;看门狗定时器运行并定时复位。后计数;到16,停止复位看门狗定时器,模拟系统故障;;程序首先检查是否设置了WTR位。如果是,则;由看门狗定时器引起复位,程序将执行;FAULT子程序。端口1设置为F0h表示此情况。如果未设置WTR位,则复位是由其他源引起的;************************************RWT EQU 0BFh;复位看门狗定时器bitTA EQU 0C7h;定时访问RegisterPCON EQU 87h;电源控制RegisterACC EQU 0E0h;AccumulatorP1 EQU 090h;端口1 ORG 00h;复位矢量SJMP START;************************************ ORG 080h;本例中程序在80h启动。如果是看门狗超时导致复位,则jbcc .4, FAULT;(WTR位= 1)执行故障子例程 .;**********************************; 正常加电复位。启动初始化序列。看门狗定时器初始化序列MOV TA, #0AAh,首先重启看门狗定时器MOV TA, #055h;使用定时SETB RWT;访问。MOV TA, #0AAh;下一步使能看门狗定时器复位MOV TA, #055h;函数使用定时ORL PCON, #04h;访问 .;**********************************; 主程序循环。这模拟了一个正在运行的程序;正确,然后出错。程序数到16之后;在端口1上,它将跳过看门狗定时器复位功能。这一切;将模拟故障并允许看门狗定时器复位。**********************************MAIN: MOV R1, #0FFh;创建延迟环路。这模拟了loop1: MOV R2, #0FFh;一个真正在“做某事”的设备。loop 2: JB P1.4, SKIP_WD_RST;MOV TA, #0AAh;看门狗定时器复位。在用户应用中它是MOV TA, #055h;应放置在SETB RWT的战略位置;它将定期执行。SKIP_WD_RST: JNZ R2, LOOP2 JNZ R1, LOOP1 INC P1;递增计数器。SJMP主要;回到主程序循环 .;************************************; 看门狗超时错误。该子程序通常具有特殊的;在系统发生故障时要执行的例程。在这个例子中,;禁用看门狗复位,将端口1设置为F0h表示故障;在实际的应用程序中,这个例程可以清除故障和;************************************ fault: MOV P1, #0F0h; MOV TA, #0AAh;Disable watchdog timer复位MOV TA, #55h;使用定时ANL PCON, #0FBh;访问。停止进一步操作。

总结

使用看门狗作为监视器的任何设计都必须考虑许多因素。一旦确定了超时时间,就必须分析系统软件,以确定在哪里定位看门狗重启指令。对于一个有效的设计,看门狗重启的次数应该保持在最低限度,并且应该考虑不正确执行重启的可能性。如前所述,一些系统软件过于复杂或依赖于数据,无法确保看门狗重启覆盖所有软件流路径。这可能意味着需要一种自诊断软件方法。如果存在预期的故障机制,如周期性EMI突发或电源故障,看门狗超时应该考虑这个时间段。



声明:本文观点仅代表作者本人,不代表华强商城的观点和立场。如有侵权或者其他问题,请联系本站修改或删除。

社群二维码

关注“华强商城“微信公众号

调查问卷

请问您是:

您希望看到什么内容: