This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C1294NCPDT:看门狗复位问题

Guru**** 2348910 points
Other Parts Discussed in Thread: TM4C1294NCPDT
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/617054/tm4c1294ncpdt-problem-with-watchdog-resets

器件型号:TM4C1294NCPDT
主题中讨论的其他器件: TM4C123

问题如下:

  • 在我们的引导加载程序中、我们已将看门狗初始化为(SysCtlClockGet ()* 30秒)的时间、以便在应用程序固件无法启动和运行时将系统复位、并为看门狗中断提供服务。
  • 为了测试此行为、我们加载了初始化看门狗的引导加载程序和禁用看门狗服务例程的应用程序固件、以检查看门狗是否正确触发了复位。
  • 当我们打开器件电源(冷复位)时、我们看到它会在60秒后按预期复位系统、因为应用程序固件中不会处理看门狗中断。
  • 但是、在看门狗在上电(冷复位)后首次复位系统后、我们看到它会每15秒(60秒/4)而不是60秒后继续复位(热复位)系统。

 

观察结果:

  • 每次冷复位(外部掉电然后上电)都会在60秒后按预期触发复位、但之后看门狗触发的连续复位则为15秒。
  • 我们发现这是因为 SysCtlClockGet ()返回15000000用于热复位、53693160用于冷复位、因此复位时间为60s 和15s。
  • 在 SysCtlClockFreqSet()之前或之后添加延迟也不起作用。
  • 尝试在 TM4C1294NCPDT 数据表和 Tivaware ROM 信息表中找到答案、但找不到任何可信来源。

 

您能否帮助我们了解为什么我们看到这种行为差异?

热复位情况下再次调用 SysCtlClockFreqSet()之前,是否还有任何操作需要执行,以便在冷复位和热复位时获得与 SysCtlClockGet ()一致的值?

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是一个超长的看门狗周期。

    [引用 user="Olrik Maier"]我们发现这是因为 SysCtlClockGet ()返回15000000进行热复位、53693160进行冷复位、因此复位时间为60s 和15s。[/引用]

    [引用 user="Tivaware 用户手册"]

    注:

    如果 SysCtlClockSet()没有被调用来配置、这将无法返回准确的结果

    器件计时、或者器件直接由晶体(或时钟源)计时

    这不是支持的晶体频率之一。 在后一种情况下、此函数应为

    进行了修改、以直接返回正确的系统时钟速率。

    只能在 TM4C123器件上调用此函数。 对于 TM4C129器件、返回值

    来自 SysCtlClockFreqSet()指示系统时钟频率。

    返回:

    仅适用于 TM4C123器件的处理器时钟速率。

    [/报价]

     

    注意突出显示的部分。

     

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Olrik、

     不能为 TM4C129器件使用 SysCtlClockGet ()。 SysCtlClockGet ()仅适用于 TM4C123器件。 请参阅下面的内容。  您应该改为使用 SysCtlClockFreqSet()返回的值。

    26.2.2.3 SysCtlClockGet
    获取处理器时钟速率。
    原型:
    uint32_t
    SysCtlClockGet (空)
    描述:
    此函数决定处理器时钟的时钟速率、也是时钟速率
    外设模块(PWM 除外、PWM 具有其自己的时钟分频器;其他
    外设可能具有不同的时钟、有关详细信息、请参阅器件数据表)。
    注:
    如果 SysCtlClockSet()没有被调用来配置、这将无法返回准确的结果
    器件计时、或者器件直接由晶体(或时钟源)计时
    这不是支持的晶体频率之一。 在后一种情况下、此函数应为
    进行了修改、以直接返回正确的系统时钟速率。
    只能在 TM4C123器件上调用此函数。 对于 TM4C129器件、返回值
    来自 SysCtlClockFreqSet()指示系统时钟频率。
    返回:
    仅适用于 TM4C123器件的处理器时钟速率。