飞思卡尔MC9S12G系列内部看门狗

最近几天在研究飞思卡尔watchdog的问题,发现网上没有很详细的资料,就想把自己知道的东西记录一下,防止自己忘记,也供别人参考。

  1. 什么是watchdog?
    watchdog就是一个计数器,这个计数器有一个限值,开启watchdog功能后,当计数器从0自增到该限值或从该限值自减到0,就认为此计数器超时了(称为计时器溢出),这时就产生一个复位信号,重启系统。
    从watchdog的含义来看,其应该包含两个条件:1)一个自增或自减的计数器;2)为防止计数器溢出,将计数器重置的操作(称为喂狗)。
  2. 飞思卡尔MC9S12G的watchdog
    和MC9S12G watchdog相关的寄存器主要包括CPMUCLKS、CPMUCOP和CPMUARMCOP这三个。
    1)CPMUCLKS寄存器涉及到时钟的选择;这和watchdog的超时时间相关;
    2)CPMUCOP寄存器当然是watchdog相关的寄存器了;
    3)CPMUARMCOP寄存器主要和喂狗操作相关。在图1 这里插入图片描述
    图1 watchDog的时钟源
    如图1所示,不同寄存器取值对应不同的时钟源,不同时钟源的主频不一样,计算watchdog超时时间就不一样,要计算watchdog超时时间,首先根据这个表格确定其时钟源。这些参数取值都在寄存器CPMUCLKS中;
    在这里插入图片描述
    图2 CPMUCOP寄存器
    1)WCOP决定了watchdog的工作模式,0是正常工作模式,1是窗口工作模式;这两种模式的区别是正常工作模式内,在计时器超时之前重置计时器就可以;但在窗口工作模式,必须要某个特定时间段内重置计时器,否则就会导致立即reset。
    2)RSBCK决定了watchdog在调试环境下是否还有效,0表示有效,在调试时仍然运行(这就会导致调试出错,因为watchdog在不停的重启系统),1表示无效,在调试时watchdog不工作;
    3)CR[2:0]记录的是看门狗的时钟分频,其值和所选的时钟频率相关,具体取值见下图:
    在这里插入图片描述
    在这里插入图片描述
    图3 COP的时钟分频
    CPMUARMCOP寄存器主要是和喂狗操作相关,通过先将该寄存器值赋为0x55,再赋值为0xAA,便实现了计数器的重置操作。
  3. 飞思卡尔MC9S12G watchdog超时时间的计算方法
    超时时间的计算公式如下:
    fwdt = fwdtclc/CR[2:0]
    举例:
    实际clcok配置如下:
    在这里插入图片描述
    例一:
    在这里插入图片描述
    PCE=0,COPOSCSEL0 = 1,对应图1,满足条件的两项对应的Clock Source都是OSCCLK,即为晶振时钟,对应clock frequence为16.0MHz;CR[2:0]取值为100,对应值为2^20,则fwdt = 16Mhz/1024/1024 = 16*1000000/1024/1024=15.2587hz;对应的超时时间为T=1/fwdt = 1000ms/15.2587 = 65.536ms;
    例二:
    在这里插入图片描述
    PCE=0,COPOSCSEL1 = 1,对应图1,得到其时钟为ACLK,其频率固定为10KHz,CR[2:0]为010,对应分频值为2^9=512,那么fwdt=10Khz/512=10000hz/512=19.53hz,对应的超时时间为T = 1/fwdt=1000ms/19.53=51.2ms
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值