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.

[参考译文] MSP430FR59941:SCL 一直处于低电平

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1111815/msp430fr59941-scl-stuck-low

器件型号:MSP430FR59941

我们有一个使用 MSP430芯片的定制平台、该芯片通过 I2C 与另一个控制器连接。 在 MSP430和控制器之间经过一段高电平活动后、我们会遇到 SCL 一直处于低电平的情况。 发生这种情况时、平台的其余部分没有响应。 不清楚问题是在控制器侧还是在 MSP430侧。 当我们进入此状态时、我们尝试了以下操作:

1) 1) SCL 挂起后、连接 JTAG 并执行软复位和硬复位
2) 2) SCL 挂起后、连接 JTAG 并重新启动 MSP430固件
3) 3)使用 JTAG 调试器在 I2C 逻辑中包含关键代码位置的断点。 该测试在 SCL 低电平故障的每个阶段添加了断点:之前、期间和之后。  在每个阶段、对 MSP430状态进行了调查并验证为良好。

在尝试这些步骤后、SCL 仍然保持低电平。 我们可以找到的唯一解决方法是关闭整个平台。   

您可以提供有关导致此状态发生的原因(或我们如何进一步调查)的任何信息、以及有关我们如何摆脱此状态的任何见解(因为复位似乎没有解决此问题)。

如果有任何帮助、我们将不胜感激!

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

    您好!

    您能否从物理上将 MSP430从另一个控制器上分离以确定哪个控制器正在挂起总线? 换句话说、当总线挂起时、从总线上移除 MSP430并检查总线的状态。

    谢谢、

    Evan

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

    您好 Evan、

    这些器件都焊接到 PCB 上、但我们应该能够找到分离它的方法。 
    将 MSP430与 I2C 总线断开的正确方法是什么?
    上拉电阻器是否会成为问题?
    我们是否应该确保从每一侧移除所有上拉电阻器?
    我们是否应该在另一侧添加一个额外的上拉电阻器?
    如果问题是 MSP430、是否有任何可能的解决方案? 

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

    Tony、

    无论上拉电阻在何处都没关系。 如果上拉电阻器连接到 MSP430、而您断开控制器、并且总线仍然挂起、那么 MSP430就是问题。 如果上拉电阻器连接到控制器、而您断开 MSP430的连接、并且总线仍然挂起、则应归咎于控制器。  

    或者、您也可以使用精确的万用表来通过探测 MSP430的上拉和 SCL 引脚的输出来确定电流从上拉的哪个位置流出。 您将看到几毫伏(可能)是由于迹线电阻造成的。 如果电流似乎流向 MSP430、则表明 MSP430正在挂起总线。  

    MSP430是 该电路中的"控制器"还是"外设"? 很抱歉、对于过载的术语、我尝试使用兼容并蓄的术语。

    此致、

    Evan

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

    您好 Evan、

    MSP430配置为多控制器模式。 当 MSP430用作控制器时、会发生 SCL 问题。 我们观察到目的字节地址在 I2C 上获取 ACKed、TX IFG 被触发、并且 MSP430将下一个字节载入 TX 寄存器。 MSP430使用一个定时器、在~3s 超时后、MSP430使用 UCSWRST 复位 eUSCI。 我们观察 SDA 变为高电平、SCL 保持低电平。 接下来、我们使用 JTAG 复位 MSP430、SCL 仍然保持低电平。

    在您的示例中、我相信您可能会假设 MSP430是外设。 在我们的故障案例中、MSP430是控制器。

    谢谢、
    Tony

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

    如果 MSP430的复位(或仅使用 UCSWRST 的串行端口)失败、那么将 I2C 时钟保持在低电平的另一端是线的另一端。

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

    Tony、

    我的实验只是尝试确定哪个器件正在挂起总线、以便我们知道调试的位置。 一旦我们知道这一点、我们就可以继续。

    此致、

    Evan

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

    明白。 谢谢 Evan。 我们将在明天运行该实验。 感谢你的帮助

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

    我们已执行您建议的测试并确认  正在挂起的不是 MSP430。  

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

    Tony、

    感谢您的更新。 我现在要关闭这个线程。 如果您需要其他支持、您可以在此处回复、它将自动重新打开并通知我。

    此致、

    Evan

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

    Tony、

    感谢您的更新。 我现在将关闭该主题、如果您需要其他支持、您可以回复此主题、它将自动重新打开并通知我。

    此致、

    Evan

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

    您没有提到 I2C 从设备是什么、但我遇到了一些处理异常事件的问题、这些事件通常会使时钟永远拉长。

    I2C 规范[UM10204第3.1.16节]建议使用带外从机复位机制来处理这种情况。  

    如果可能(请查看从器件数据表)、请考虑使用 GPIO 为其供电、并在 MCU 启动时对其进行下电上电(或在总线挂起时)。 GPIO 可以非常可靠地提供2mA 电流、并且许多从器件可以轻松地以稍低的电流运行。