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.

[参考译文] TMS320F28027:检测看门狗复位

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/988673/tms320f28027-detecting-watchdog-reset

器件型号:TMS320F28027

 您好!

我想检测上一次 MCU 复位是否是由于看门狗造成的。 为此、我会在收到 UART 消息时诱导看门狗复位(启用看门狗、但从不对其进行服务)。 然后、我尝试通过 检查  WDCR 寄存器中的 WDFLAG 位是否= 1来检测复位。 但是、情况绝不是这样、即使我确实要使用看门狗复位 MCU 也是如此。 我是否会错过一些内容? 启用看门狗时、我还向 WDFLAG 写入1以清除之前锁存的状态。  

作为替代方案、是否有任何在复位时未被清零的可写寄存器可用于此目的?

谢谢、

Aditya

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

    请参阅此链接:e2e.ti.com/.../826349

     

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

    您好、Haresh、

    感谢您提供更多信息。 虽然它非常有用、但 它并未完全解决我们所看到的内容。 在本例中、从未设置 WDFLAG。 我将能够在复位时发布 XRS 引脚的示波器图(希望在星期一)以验证时序。  

    我对您的链接感到困惑的一部分是、如果 XRS 引脚在我们的板上保持悬空、是否预计会检测到看门狗复位。 我的理解是有一个内部上拉电阻器、但我不知道它的时序是什么。  

    谢谢、

    Aditya

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用]在我们的案例中、从未设置 WDFLAG。

    XRS 的上升速度可能不够快。 请发布-XRS 的示波器捕获。

     

    [引用]我对您的链接感到困惑的部分是、如果 XRS 引脚在我们的板上保持悬空、是否预计会检测到看门狗复位。 [/报价]

    如果该引脚保持悬空、它应快速上升、因此应检测到 WD 复位。 请发布连接到-XRS 引脚的电路原理图。 您可以通过好友请求将其私下发送给我。

     

    [引述]我的理解是有一个内部上拉电阻器、但我不知道时间是多少。  [/报价]

    内部 PU 是弱 PU。 该值在数据表中给出。

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

    XRS line
    这是看门狗复位的示波器捕获。 似乎 μ~XRS 线在大约53us 内保持低电平、这应该足够快、以便寄存器为看门狗复位。 但是、WDCR (WDFLAG)的第7位始终为0。 如果锁存行为影响我的读数、但没有变化、我还尝试向 WDCR 写入(1<<7)。 我是否遗漏了什么?

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

    只应在延迟后检查 WDFLAG 位;不应在 WD 初始复位后立即检查。 以下内容非常重要、也是我在另一篇文章中讲的内容:"请注意、WDFLAG 仅在 WDRST 失效(变为高电平)后(8192 * 4)个 OSCLK 周期后进行设置。 由于 WDRST 的宽度为512个 OSCLK 周期、因此在 WDRST 开始后(当它变为低电平时)、WDFLAG 标志将被设定~3.7ms" 如果您过早读取、则可能看不到 WDFLAG 集。 仔细检查随附的测试用例。

    e2e.ti.com/.../PIC_5F00_WD.c

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

    我目前正在通过 UART 轮询 WDCR 寄存器。 第一次轮询可能在3.7ms 内、但后续轮询肯定不会。 我是否仍希望此时不设置 WDFLAG?  

    我的代码和您发布的示例之间的主要区别在于、我并不总是启用看门狗(第23行)。 如果我在不启用看门狗的情况下轮询 WDCR、是否会出现问题?

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

    在上述延迟之后才会设置 WDFLAG。 请从闪存运行我的测试用例、您将看到正确的结果。  

    当 WD 被禁用时、轮询 WDCR 寄存器没有问题。 但是、需要启用它才能超时并设置 WDFLAG 位。 我只是将我的代码作为参考点发送。 我必须以特定的方式编写代码、以演示 WDFLAG 位的行为。

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

    在相关的注释中、您能否澄清看门狗复位清除了哪些 RAM、或让我参考此类文档? 这可能是解决此问题的更好方法、因为我们可以编码更多的信息、这些信息与是否发生看门狗复位有关。  

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

    WD 复位本身不会干扰 RAM 内容。

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

    谢谢你。 在这种情况下、我们将在需要重置时使用 RAM 区域来设置标志、并在需要跟踪看门狗复位时更彻底地解决此问题。  

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

    好的。 请注意、某些较新的 C2000器件在 boot0RM 中包含 RAM_INIT 函数、该函数会清除某些 RAM 组。 迁移到更新的 C2000器件时需要记住的一点。