苏大arm cortex-m4kinetis光盘sd fsl k60分章阅读中文_第1页
苏大arm cortex-m4kinetis光盘sd fsl k60分章阅读中文_第2页
苏大arm cortex-m4kinetis光盘sd fsl k60分章阅读中文_第3页
苏大arm cortex-m4kinetis光盘sd fsl k60分章阅读中文_第4页
苏大arm cortex-m4kinetis光盘sd fsl k60分章阅读中文_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 23 章 看门狗定时器(WDOG)23.1 简介注意:模块的特定实现细节详见配置章节。看门狗定时器(WDOG)在时钟监视系统功能,如果系统错误就复位它。产生错误的原因有:代码跑飞,一个安全关键系统中的系统时钟的停止会引起严重的通过与。在这些情形下,看门狗把系统带到一个安全操作的状态。看门狗的定期通讯来监视系统的操作,通常知道的是服务或者更新看门狗。如果周期的更新没有发生,看门狗复位系统。23.2 特点看门狗定时器的特点包括:独立的时钟源输入(独立于 CPU/总线时钟)。时钟源选择有:LPO 振荡器外部系统时钟没有锁定的序列允许更新只能写一次的 WDOG 控制/配置位所有看门狗控制/配置位在

2、未锁定情形下的 256 总线时钟周期中只能写一次。用户需要在后的 256 总线时钟周期内更新这些位。如果更新这些位失败,复位系统。可编程的基于 WDOG 时钟周期的超时周期。测试 WDOG 定时器的能力,通过指示看门狗测试的标志复位。快速测试快速测试的小的超时值。字节测试定时器一次测试单个的字节。只读WDOG 定时器允许动态测试 WDOG 定时器是否是可以操作的注意:在总线时钟上运行看门狗时,读看门狗定时器计数器可能得不到精确的计数值。窗口刷新选项提供了比期望要快的程序流的鲁棒性检查可编程的窗口窗口外更新导致复位鲁棒的刷新机制在 20 个时钟周期内写 0 xA602 和 0 xB480 到 W

3、DOG 刷新寄存器复位时 WDOG 计数器复位可配置的超时中断提供调试。在 256 个总线时钟周期之后允许复位。23.3功能概述图 23-1 显示了看门狗的操作。N 和 K 的值为:N=256 K=20看门狗是一个失败安全机制,一旦因为 CPU 时钟停止或者代码执行跑飞,可以把系统带到一个可知的开始状态。在最简单的形式下,看门狗持续在时钟源下运行,期望周期性地取得服务,失败的话就复位系统。这确保了的正确执行,不会在一个没有计划的方向上跑飞。要达到的超时值去达到应用的需要。调整服务的周期或者看门狗定时器用户可以选择一个窗口操作模式,该模式期望只有超时周期的特定窗口得到服务。此窗口外的看门狗服务会

4、引起复位。在该模式下的操作,用户可以得到指示代码是否比预期的跑的快。窗口长度用户是可以编程改变的。如果系统由于一个未知的持续的原因,更新/刷新看门狗失败,系统可能陷入一个无止境的复位循环中。分析此种情形的原因,用户可以编程在复位之后看门狗触发一个中断。在中断服务例程中,可以分析系统栈来帮助调试。图 23-1 看门作为了加强看门狗在系统中的独立性,它运行在一个独立的 LPO 振荡器时钟之上。如果需要用户可以通过控制一个寄存器位切换一个可选的时钟源。23.3.1和更新看门狗用户可以一个只写一次的控制和配置寄存器去更新看门狗。看门狗控制寄存器的 ALLOW_UPDATE 位必须置位。事实上的是通过在

5、 20 个总线周期内写 0 xC520 和 0 xD928 到一个指定的寄存器(WDOG_UNLOCK)来完成的。它开启了一个和看门狗配置时间(WCT)长度一样的更新窗口,在 WCT 内你可以更新配置和控制寄存器的位。在序列写之后用户不可以立即在一个总线周期内更新寄存器,而要在一个周期之后。这些寄存器位只有在一次。之后更改如果在更新窗口内,没有配置和控制寄存器更新,看门狗发布复位(或者中断然后复位)给系统。在初始之后的 WCT 时间内试图影响的。在更新操作期间,看门狗定时器不会暂停,在看门狗,是没有继续运行。在更新窗口关闭后,看门狗定时器重新开始,看门狗功能重新配置。更新特点对有初始的、看门狗

6、或有一个长时间超时周期的非安全关键部分的应用非常有效。这意味着应用编码者不用去管定期去服务看门狗。在应用的关键部分的开始,看门狗可以在每一次需要的时候重新配置。出现这些给系统。的序列时,看门狗发布复位(使能的话,中断然后复位)写 0 xC520 或 0 xD928 之外的任何值到寄存器ALLOW_UPDATE 置位,在钟周期序列值的两次写之间的间隔超过 20 总线时序列的写之间和在跟在一个成功的之后的WCT 时间的尝试在两次更新操作,会变得无法检测。见 Watchdog Operation with 8-bit acs 作为 8 位访问寄存器的 8 位相关准则。注解:在和更新之间的上下文切换可

7、能导致一个看门狗复位。23.3.2 看门狗配置时间(WCT)为了防止无意的看门狗控制和配置寄存器位的修改,用户只能在后的256 个总线时钟周期内更改它们。该窗口间隔就是看门狗配置时间(WCT)。另外,为了更新这些寄存器位只能在之后修改(即使在复位之后)。用户必须在系统复位后在 WCT 时间内寄存器,失败的话看门狗发布一个复位到系统。为了更精确,你必须在复位后的 WCT 时间内写序列至少第一个字。一旦这完成,你就获得了另外的 20 个时钟周期(在序列字之间的最大间隔)去完成操作。之后,确保你没有忘记配置看门狗,如果在之后的WCT 时间内所有看门狗控制和配置寄存器没有被更新,则看门狗发布一个复位。

8、在该窗口关闭或第一次写之后,这些寄存器位被锁定不会改变。看门狗定时器像通过和更新操作进行的默认配置运行和更新操作可以拓展到最大 2xWCT 时间+20 总线时钟周期的总和。因此必须确保看门狗的超时值大于 2xWCT 时间+20 总线时钟周期的总和。只有在 WCT 窗口关闭之后,只能写一次的寄存器里的更新会产生效果。以下情况的改变会直接产生影响:停止、等待、调试模式使能位备用的模式使能位 IRQ_RST_EN 位更新看门狗的操作在 WCT 内会变得不可检测。23.3.3 更新看门狗看门狗选择了鲁棒的更新机制。一个有效的更新是在 20 个时钟周期内写 0 xA602 和 0 xB480 到看门狗更

9、新寄存器。如果这两个值的写超过了 20 个时钟周期或者除了这两个值之外的值写到了寄存器,一个看门狗复位(使能的话,中断然后复位)发布到系个有效的更新使得看门狗定时器在下一个总线周期上操作变得不可测。见 Watchdog重新开始。在两次更新序列的写之间的试图Operation with 8-bit acs 参考更新寄存器的 8 位。23.3.4 窗口的操作模式在该操作模式下看门狗被更新的超时周期内出现限制。只有当看门狗定时器增加超过了看门狗窗口寄存器定义的一个特定的值时刷新才被认为是合法的。这就是所知道的在总的超时周期内更新看门狗。如果在定时器到达窗口值之前试图更新,看门狗产生一个复位(如果使能

10、的话,中断然后复位)。当然,如果根本没有更新,看门的狗超时,如果使能的话产生一个复位或者产生一个中断然后复位。23.3.5 看门狗操作模式当通过在看门狗状态和控制寄存器的 WDOG_EN 位了看门狗,看门狗定时器复位到 0,计数停止直到你使能它或者通过系统复位再次使能。在该模式,看门狗定时器不能被更新(如果定时器被,没有必要这么做)。然而,在非超时异常上仍然会产生一个复位(如果使能的话,中断然后复位)(见复位和中断产生)。你需要在使能看门狗之前看门狗。系统复位把看门狗带出模式。低功耗操作模式在等待模式下,如果 WDOG 使能(WAIT_EN=1),它可以运行在总线时钟或者低功耗振荡器时钟(CL

11、K_SRC=x)上产生中断(IRQ_RST_EN=1),接着超时复位。在复位之后,WDOG 复位计数器加 1。在总线时钟门控的停止模式下,如果在停止模式(STOP_EN=1)下它使能, WDOG 只能在低功耗振荡器时钟(CLK_SRC=0)下运行。在这种情况下,WDOG第二次运行到超时,然后它的备份电路产生复位。因此,如果你在 100ms 之后编程看门狗,然后进入停止模式,复位将在 200ms 后发生。在这种情况下,无论 IRQ_RST_EN 位如何,都没有中断产生。在 WDOG 复位之后,WDOG 复位计数器将不会再增加。在降功率模式下,看门狗关闭。调试操作模式在调试模式下你可以编程看门狗通

12、过在看门狗控制寄存器的DBG_EN位)。它会引起在该模式下的持续时间里看门狗定时器暂停。寄存器读写被允许,意味着这样的操作允许:更新、点恢复操作。等。在退出模式之后,定时器从暂停系统进入到到调试模式不能避免系统在之后的WCT 内强制配置看门狗状态机制也暂停)。这些动作失败(除非系统总线时钟,在这种情况下仍然会引起复位(如果使能的话,中断然后复位)到系统。所有导致系统复位的异常(见复位和中断产生)在该模式下仍然是合法的。所以,如果一个异常条件发生、系统总线开启,一个复位将会发生(如果使能的话,中断然后复位)。复位之后在WCT 内进入调试模式的处理是不同的。WDOG 定时器保持为 0,没有必要在

13、WCT 内和配置定时器。在该状态下你不能尝试更新或者或者 WDOG,可能会导致未知行为发生。退出该模式时,WDOG 定时器重新开始,WDOG 在 WCT 内必须23.4 测试看门狗和配置。对于 IEC60730 或者其他安全标准,监视安全功能的事物必须被测试,且测试需要有一定的容错能力。为了测试看门狗,它的主定时器和它的相关比较和复位逻辑必须被测试。为此,看门狗需要实现的测试为快速测试和字节测试。当有一个控制位让看门狗进入到测试模式(功能性)时,有一个主要的测试控制位一旦被设,直到复位,将地测试模式。对于运行一个特别的测试,首选是功能测试。之后,设置一个特定的测试模式位,让看门狗进入功能测试模

14、式。设置该位自动地将看门狗定时器切换连接到一个快速的时钟源。时钟源的切换是为了获得更快的超时时间,因而也是一个快速测试。在一个成功的测试里,定时器在到达编程的超时值时而超时,然后产生一个系统复位。注意:由于看门狗测试产生复位之后,你必须严格按照和配置看门狗的。步骤进试模式下,刷新、操作和中断在不会自动快速测试在该测试中,看门狗定时器的超时值被编程为一个非常小的值从去获得快速超时。看门狗快速测试和正常功能模式的唯一区别是快速测试的测试模式位被置位。它允许看门狗复位机制的快速测试。字节测试字节测试实现更彻底的看门狗定时器测试。在该测试中,定时器被分解为独立运行的字节阶段,测试超时值寄存器的相应字节

15、数。图 23-2 解释了分割概念:每一个阶段是一个 8 位同步计数器,之后是产生溢出信号的组合逻辑。该溢出信号使能 N+1 阶段。在该测试模式下,当一个独立的字节 N 被测试,字节 N-1 强制载入 0 xFF,这两个字节允许脱离时钟源。这样做,从阶段 N-1 来的溢出信号立即产生,使能计数阶段 N。第 N 阶段运行,和超时值寄存器的第 N 个字节比较。这样,字节N 也和它和之前的阶段连接一起测试。在字节 N 测试阶段,其他阶段,N-2、N-3.图 23-2 看门狗定时器字节分割和 N+1、N+2 阶段测试不被使能。这些入值 0 xFF。这两种测试机制实现了对计数器功能、比较和复位逻辑的全面测

16、试。注意:在这些测试期间不要使能看门狗中断。如果需要,你必须确保有效的超时时间大于 WCT 时间。详见复位和中断产生章节。23.5 备份复位发生器的阶段(除了计数器的最高阶段)载备份复位生成最终的复位信号到系统。它有一个备份机制,在总线总线停止时加以保护并主状态机器产生复位异常/中断。看门狗定时器的超时是独立作为复位到系统的。中间没有系统复位的两次连续的定时器超时会导致备份复位独立产生超时信号作为复位给系统。23.6 复位和中断生成看门狗会产生一个中断的情况有(参考文档中某些地方的异常):看门狗超时。在系统复位的 WCT 时间内对看门狗的失败。在之后的 WCT 窗口时间内没有更新控制和配置寄存

17、器。在 WCT窗口时间内下列至少有一个寄存器必须被写入,以避免复位:WDOG_ST_CTRL_H, WDOG_ST_CTRL_L WDOG_TO_VAL_H, WDOG_TO_VAL_L WDOG_WIN_H, WDOG_WIN_L WDOG_PRESCALER序列或者更新序列以外的值分别地被写到或者更新寄存器。在序列的两次值的写之间存在超过 20 总线周期的间隔。在更新序列的两次值的写之间存在超过 20 总线周期的间隔。看门狗也能产生中断。如果 IRQ_RST_EN 被置位,上面提到的WDOG_ST_CTRL_L_被置位,就会产生中断。WCT 时间之后会产生看门狗复位来保证看门狗是容错的。中

18、断通过写 1 到_被清除。在中断和复位之间的 WCT 时间的间隔意味着 WDOG 超时值必须大于 WCT。否则,由于超时中断产生,在那个 WCT 间隔将产生第二次超时。这将会触发备份复位产生器产生复位到系统,过早地结束中断服务例程的执行。像看门狗复位计数的工作不会完成。23.7 内存和寄存器定义该部分包括内存和寄存器描述。WDOG 内存23.7.1 看门狗状态和控制寄存器(WDOG_STCTRLH)表 14-20 WDOG_STCTRLH 位域描述位域描述15预留只读,为 014DISTESOG允许 WDOG 的功能测试模式被地。一旦被设,只能通过复位被清除。一旦被设,它不能被。看门狗功能测试

19、模式不能被看门狗功能测试模式直到复位13-12BYTESEL1:0该两位域选择看门狗处于字节测试模式的测试字节。 00字节 0 选中01字节 1 选中绝对地址(十六进制)寄存器名宽 度(位)权限复位值章节/页4005_2000看门狗状态和控制寄 存器 (WDOG_STCTRLH)16R/W01D3h23.7.1/5304005_2002看门狗状态和控制寄 存器低位 (WDOG_STCTRLL)16R/W0001h23.7.2/5324005_2004看门狗超时值寄存器(WDOG_TOVALH)16R/W004Ch23.7.3/5324005_2006看门狗超时值寄存器低位(WDOG_TOVAL

20、L)16R/W4B4Ch23.7.4/5334005_2008看门狗窗口寄存器(WDOG_WINH)16R/W0000h23.7.5/5334005_200A看门狗窗口寄存器低位(WDOG_WINL)16R/W0010h23.7.6/5344005_200C看门狗刷新寄存器(WDOG_REFRESH)16R/WB480h23.7.7/5344005_200E看门狗寄存器(WDOG_UNLOCK)16R/WD928h23.7.8/5344005_2010看门狗定时器输出寄 存器 (WDOG_TMROUTH)16R/W0000h23.7.9/5354005_2012看门狗定时器输出寄 存器低位 (

21、WDOG_TMROUTL)16R/W0000h23.7.10/5354005_2014看门狗复位计数器(T)16R/W0000h23.7.11/5364005_2016看门狗预分频寄存器(WDOG_PRESC)16R/W0400h23.7.12/53623.7.2 看门狗状态和和控制寄存器低位(WDOG_STCTRLL)WDOG_STCTRLL 位描述位描述15中断标志。当一个异常发生时置位。IRQRSTEN=1 是此标志置位的前提=1导致中断之后的 WCT 时间之后跟一个复位。中断可以通过向该位写 1 清除。系统字节 2 选中字节 3 选中11TESTSEL选择看门狗定时器的测试类型。只有在

22、 TESOG 置位时才有效。快速测试。计时器运行在正常操作。你可以加载一个小的超时值执行一个快速测试。字节测试。定时器处于字节测试模式,定时器的独立字节使能操作,和可编程的超时值的相应字节比较超时比较。通过 BYTESEL1:0选择测试字节。10TESOG看门狗处于功能测试模式。在该模式下,看门狗定时器和相关的比较、复位生成逻辑用于正确操作测试。定时器的时钟为看门狗功能测试由主看门狗时钟切换到快速输入时钟。TESTSEL 位选择测试类型。9预留只读,为 08STNDBYEN在备用模式使能或WDOG在备用模式WDOG在备用模式WDOG 使能7WAITEN在等待模式使能或WDOG在等待模式WDOG

23、在等待模式WDOG 使能6STOPEN在停止模式使能或WDOG在停止模式WDOG在停止模式WDOG 使能5DBGEN在调试模式使能或WDOG在调试模式WDOG在调试模式WDOG 使能4ALLOWUPDATE使能通过序列在初始配置窗口(WCT)关闭之后更新看门狗只写一次的寄存器。 0 不允许更新只写一次的 WDOG 寄存器1 WDOG 只写一次寄存器可以更新3WINEN使能窗口模式窗口模式窗口模式使能2IRQRSTEN用于使能调试特征。该位的改变可以被立即更新,而不是在 WCT 之后更新。WDOG 超时只产生复位WDOG 超时首先产生中断。在WCT 时间之后,产生复位1CLKSRC为 WDOG

24、计时器和其他计时操作选择时钟源。的时钟源作为WDOG 时钟(LPO 振荡器)WDOG 时钟源来自于替换的时钟源0WDOGEN使能或 WDOG 的操作。在 状态,看门狗计时器保持复位状态,但是其他异常情况可以触发一个复位/中断。不管 WDOG 使能或者 ,该位值的改变必须保持超过一个 WDOG_CLK 周期。WDOGWDOG 使能23.7.3(WDOG_TOVALH)看门狗超时值寄存器WDOG_TOVALH 位描述23.7.4看门狗超时值寄存器低位(WDOG_TOVALL)看门狗超时值必须最小设置为四个看门狗时钟周期。这是考虑到看门狗时钟域新设置起作用的延时。WDOG_TOVALL 位描述23.

25、7.5 看门狗窗口寄存器(WDOG_WINH)窗口寄存器的值必须小于超时寄存器值。WDOG_WINH 位描述位描述15-0WINHIGH定义看门狗窗口操作模式的 32 位窗口值的高 16 位。 是看门狗时钟周期。在该模式下,看门狗只在定时器值大于等于窗口长度的值才能被更新。窗口外的更新会复位系统或者如果 IRQRSTEN 被设,它会中断然后复位系统。位描述15-0TOAVLHIGH定义看门狗定时器 32时值的低 16 位。是看门狗时钟周期。位描述15-0TOAVLHIGH定义看门狗定时器 32时值的高 16 位。是看门狗时钟周期。复位也可清除。14-0预留保留位。注意:不要修改此位域的值。23

26、.7.6看门狗窗口寄存器低位(WDOG_WINL)窗口寄存器的值必须小于超时寄存器值。WDOG_WINL 位描述23.7.7看门狗刷新寄存器(WDOG_REFRESH)WDOG_REFRESH 位描述23.7.8寄存器(WDOG_UNLOCK)看门狗WDOG_UNLOCK 位描述位描述15-0WDOGUNLOCK你可以写一个 序列值到该寄存器来让只能写一次的寄存器再一次可写。 序列是在 20 个总线周期内写 0 xC520、0 xD928。一个有效的 序列长度与可以更新寄存器的 WCT 时间一样。写除了上面提到的之外的值或者序列用时超过 20 总线周期,系统复位;如果 IRQRESTEN 被置

27、位,则先中断然后系统复位。 序列只在 ALLOWUPDATE 置位时有效。位描述15-0WDOGREFRESH看门狗刷新寄存器。在 20 个总线周期内写 0 xA602、0 xB480 到此寄存器会刷新 WDOG,并且会防止再次复位系统。写除了上文提到的序列之外的值或者如果写序列花费比 20 个总线周期长,系统复位或者如果 IRQRSTEN 置位,产生中断然后系统复位。位描述15-0WINLOW定义看门狗窗口操作模式的 32 位窗口值的低 16 位。 是预分频的看门狗时钟周期。在该模式下,看门狗只在定时器值大于等于窗口长度的值才能被更新。窗口外的更新会复位系统或者如果 IRQRSTEN 被设,

28、它会中断然后复位系统。23.7.9 看门狗定时器输出寄存器(WDOG_TMROUTH)23.7.10 看门狗定时器输出寄存器低位(WDOG_TMROUTL)在停止模式下,WDOG_TIMER_OUT 将保持停止状态前看门狗定时器的值。在离开停止模式后,WDOG_TIMER_OUT 开始下一次看门狗定时前将会出现最长可达 1 个 WDOG_CLK 周期+3 个总线时钟周期的延迟。WDOG_TMROUTL 位描述23.7.11看门狗重置计数寄存器(T)T 位描述23.7.12看门狗预分频器寄存器(WDOG_PRESC)WDOG_PRESC 位描述位描述15-0T计数看门狗复位次数。该寄存器只在 P

29、OR 时复位。写 1 到该位会清除该位,用来可以清除寄存器的内容。位描述15-0TIMEROUTLOW显示看门狗计时器的低 16 位值。位描述15-0TIMEROUTHIGH显示看门狗计时器的高 16 位值。23.8 看门狗的 8 位操作这一节将看门狗的 8 位23.8.1 一般原则当对看门狗的 16 位寄存器进行 8 位数据的存取时,即要注意事项。寄存器的两个字节时,必须在你的代码中相邻进行 8 位的。23.8.2 基于 8 位存取的刷新和操作向刷新和寄存器写入的刷新/更新序列将导致系统复位。以8 位方式存取这些寄存器,写入一个正确的值至少需要2 个总线时钟周期,这意味着有一个时钟周期寄存器

30、中的值是的。因此,系统会复位,即使目的是写正确的值到刷新/有些不同。尽管刷新/寄存器。所以这里需要注意,8 位存取的异常情况稍微序列的正确值的匹配是同初始定义值比较,值的匹配却是在 8 位的基础上而不是 16 位。这意味着如果刷新/寄存器的高字节包含序列高字节以外的值,则会被认为是异常,将导致一次复位或中断然后复位。对低字节而言也是这样。下面举刷新操作为例,试图写入序列 0 xA602、0 xB480 到刷新寄存器。表 23-14 8 位刷新如表 23-14 所述,刷新寄存器保持初始复位值。此后,两次的 8 位存取方式将刷新序列的第一个值写入到了寄存器。中间的一次写操作 Write1,没有引起

31、不匹配异常。通过接下来的两次的 8 位方式将序列的第二个值写入寄存器实现了一次成功的刷新序列。注意到第二个值的匹配只在完全的 16 位值正确写入时进行,即在 Write4。因此第一个值写入后的 20位描述15-11预留只读,值为 010-8PRESCVAL看门狗时钟源的 3 位预分频位。0 值指示 WDOG 输入时钟没有预分频。看门狗时钟除以(PRESCVAL+1)来提供预分频的 WDOG CLK。7-0预留只读,值为 0个时钟周期内写第二个值的检查通过测量 write2 和 write4 之间的间隔实现。必须重申,刷新或序列第一个值和第二个值匹配成功的条件并未改变,这里只是放松了检测错误值的标准,即基于 8 位的作都仍需要满足刷新看门狗一节中给出的原则。方式。任何 16 位操23.9 看门作的限制此部分将

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论