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.

[参考译文] TLIN1431-Q1:-

Guru**** 2449530 points


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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1500208/tlin1431-q1--

器件型号:TLIN1431-Q1

工具/软件:

在配置窗口看门狗时、我遇到如下问题:

案例1:当我使用 IAR 工作台和 Seggar J-Link 调试器刷写软件时、软件似乎运行正常。 请参阅下面的屏幕截图。

案例2:如果我使用12V 电源执行断电->上电、MCU 发送有效的 SPI 命令、但 MISO 线路始终保持高电平。 在~170ms 后、MCU 复位并重复相同的序列。 请参阅下面的屏幕截图、

下面是我的代码:

您能否查看代码并提供提示、说明为什么此问题可能会解决?

提前感谢您!

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

    嗨、Halappa、

    我建议添加打印语句或调试输出、以帮助验证执行期间(即、跟踪是否达到看门狗服务案例)正在输入哪些状态。 请参阅以下提示、谢谢。

    • 不能确保根据服务时序正确设置看门狗超时、与应用的环路频率保持一致。
    • 在发送命令(例如、时钟极性、相位等)之前、不能确保 SPI 设置正确。
    • 如果上电后可能无法正确初始化的任何依赖项、则不能确保器件在下电上电后执行正确的初始化序列。
    • 如果可行、使用仅初始化看门狗和 SPI 的极简代码版本进行验证和测试、以帮助找出问题所在

    根据您的代码:

    • 看门狗服务处理: 确保此行满足看门狗超时要求(即、 如果未 经常达到此状态、看门狗可能会导致意外复位)的频率。

    用例 SBC_SERVICE_WATCHDOG:

      SBC_WRITE (REGS_MD_INPUT_TRIG、0xFF);

      休息;

    • 状态转换管理: 验证 SbcTl1431_STATE 如何转换为 SBC_SERVICE_WATCHDOG。 如果存在阻止转换的逻辑问题、则可能无法及时维护看门狗。
    • 闭合窗口处理: 由于此处的 closedWindowStayIdle 始终设置为0、因此此代码似乎可以保证每次进入 SBC_CLOSED_WINDOW_IDLE 时都转换到 SBC_SERVICE_WATCHDOG。 确认这是否是有意的、或者如果 closedWindowStayIdle 应有条件地分配到其他地方。

    如果是 SBC_CLOSED_WINDOW_IDLE:

      closedWindowStayIdle = 0U;

      if (closedWindowStayIdle == 0){

        SbcTl1431_STATE = SBC_SERVICE_WATCHDOG;

      }

    此致、

    Michael。

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

    感谢 Michael 的快速响应。

    关于看门狗维护、我使用了数据表中提供的配置、

    这在我上面的查询中提到的案例1中进行了验证(其中重置不会成功)。 我看到看门狗每49.45ms 频率进行串行化处理。

    但是、我不确定是否首次发生看门狗触发、根据我的代码、它发生在 MCU 启动后的~15ms、65ms、115ms、165ms、215ms… 以此类推。 因此、在~15ms 时首次触发是有效的、或者我需要考虑一些要求?

    在此期间、我将再次检查以下建议点、

    • 在发送命令(例如、时钟极性、相位等)之前、不能确保 SPI 设置正确。
    • 如果上电后可能无法正确初始化的任何依赖项、则不能确保器件在下电上电后执行正确的初始化序列。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Halappa、

    是的、如果您使用该窗口、看门狗期望在有效窗口内提供服务、并且过早触发可能被视为导致复位的违例。

    我建议在维护首次计时之前等待25ms。例如、您可以通过在 MCU 复位后添加安全延迟来将第一个窗口延迟至大约30ms 或更新。谢谢。

    DelayMs (30);//等待看门狗窗口打开

      SBC_WRITE (REGS_MD_INPUT_TRIG、0xFF);//为看门狗提供服务

    此致、

    Michael。

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

    您好、Michael、

    我目前正在做电路板启动活动,正如你建议 我已经最小化我的代码如下,

    1、我使用  SBC_WRITE_CMD (REG_WD_CONFIG_1、0x00u)禁用了窗口看门狗;

    2、  每10ms 对 GPIO PIN PA0进行一次切换。

    只要调试器 USB 连接到我的 PC、这似乎可以正常工作。

    但是、如果我从 PC 上拔下调试器的 USB 电缆、则软件不会运行。  

    那一刻,如果我放回调试器 USB ,再次它的工作正常。

    那么、您认为它仍然存在 WDT 问题还是可能存在其他问题?

    您能否提供一些提示、在哪里进一步查看?  

    此致、

    Halappa

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

    嗨、Halappa、

    这表明调试器为电路板加电或使电路板稳定、电路板可能无法收到稳定的电源或缺少电压轨、建议测量所有关键 电源轨、确认在移除调试器时稳压器未被禁用或在负载下晃动、同时进一步确保在移除调试器时电路板具有独立电源。

    不正确的初始化也可能导致您的观察结果、这将建议您确保在切换之前正确初始化所有其他外设(尤其是 GPIO 和时钟)、并确保 MCU 上电时的引导状态被拉至正确的逻辑电平、谢谢。

    此致、

    Michael。