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.

[参考译文] TMS570LS3137:TMS570LS3137看门狗定时器超时复位

Guru**** 2602655 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/745979/tms570ls3137-tms570ls3137-watchdog-timer-expire-reset

器件型号:TMS570LS3137
主题中讨论的其他器件:HALCOGEN

相关线程中、 应用工程师似乎在说数字窗口看门狗反应控制(RTIWWDRXNCTRL)寄存器指定 DWD 计数器递减到零时的 DWD 反应以及 DWWD 在看门狗在时间窗口之外进行处理时的反应。 我是否正确读取了该内容?

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

    你是对的。 正如我在另一个线程中提到的、在打开看门狗窗口之前、请不要为狗提供服务(向 WDKEY 寄存器写入密钥)。 否则、它将重置器件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    QJ、

    我知道。 我已使用 HALCoGen API 将 WDT 配置为100%的窗口大小:

    dwwdInit (generate_Reset、218、size_100_percent);

    但是、我仍然会观察到由于 WDT 系统而偶尔出现的系统复位。 (如果我禁用 WDT 系统、则不会发生复位。) 当我在这些复位后读取 RTIWDSTATUS 寄存器时、我看到值0x00000032或0x0000003A、这似乎表示窗口违规。 如果我指定了100%窗口大小、为什么会发生这种情况?

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

    正确的顺序为:
    1.配置预载、窗口大小、反应
    2.启用 DWD (RTIDWDCTRL)
    3.为 DWD 提供服务(RTIWDKEY)

    如果您在步骤2之前为狗提供服务、它将触发重置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、我遵循您指定的序列。

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

    您说过"如果我禁用 WDT 系统、则不会发生复位。" 您是否通过向 RTIDWDCTRL 写入错误的密码(5312 ACEDh)来禁用 WDT?

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

    当我说"禁用 WDT 系统"时、我的意思是在复位后不初始化 WDT、并且在程序执行期间不会随时写入 WDKEY 寄存器。 我担心我之前在这方面的发言会分散我们对核心问题的注意力...

    我的困惑点是、在 WDT 生成复位后、我在 RTIWDSTATUS 寄存器中看到的值。 尽管我指定了100%的窗口大小、但寄存器仍指示发生了时间窗口违规(位5)以及结束时间违规(位4)或开始时间违规(位3)的某种组合。 在未启用 DWWD 功能的情况下、这些指示是否符合您的预期?

    很难以当前形式共享我的代码。 我必须创建一个拆分版本的软件

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

    您好、Hugh、

    我知道、在 DWD 计数器被启用之前对狗进行处理不应将器件复位。  

    我使用以下代码进行了许多测试、但未生成复位。  

    I=1;
    /*初始化并启动 DWD */
    dwwdInit (generate_Reset、4095、size_100_percent);
    dwdCounterEnable();
    while (1){
       if (i=1){
          dwdReset();
       }

     

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

    窗口大小为100%意味着看门狗服务窗口始终处于打开状态。 因此、一旦启用、它本质上是一个超时看门狗。 RTI1CLK 域的频率是多少? 如果它是90MHz、那么在看门狗生成复位前、您只允许2.433us (219/90MHz)的时间。

    这是您想要的超时时间吗?

    此致、
    Sunil
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    219*2^13/90Mhz = 19.7ms
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当然、感谢 QJ。 很抱歉让我感到困惑。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    @Sunil: 您描述的100%窗口行为也是我对系统工作的理解。

    @QJ:我同意您的计算。 我正在寻找大约20毫秒的超时周期。

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

    我使用以下代码执行了多次(>10000)测试,但没有出现重置问题:

    I=1;
    dwwdInit (generate_Reset、4095、size_100_percent);
    dwdCounterEnable();

    while (1){
    if (i!= 0){
    dwdReset();//在计数器被启用后喂入狗
    i++;



    1.配置反应、预加载、窗口大小
    2.启用计数器
    3.为狗服务