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.

[参考译文] MSP430F5234:MSP430 I2C 总线挂起问题

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1079412/msp430f5234-msp430-i2c-bus-hang-problem

部件号:MSP430F5234
“线程:TPS23881”中讨论的其它部件

你好,团队

当客户 PoE 长时间运行时,MSP430 I2C 将不会响应。 如果图3中所示主板断电后再通电,I2C 总线仍将处于失效状态,即 SCL 和 SDA 都将被阻塞。 MSP430被拉低,故障只能通过重新为 PSE 子卡供电(如图3所示)来恢复。
图1和图2使用逻辑分析仪在故障发生前77秒采集数据。 图2是图1中红色框的放大视图。 有关详细数据,请参阅第4节。

图1 I2C 总线失效77S

图1  I2C 总线失效

图3显示了硬件系统方框图,图4部分显示了方框图。

 图3 系统方框图

3软件设计


微控制器 MSP430运行固件固件固件,BSL 版本:V03,应用固件:00.01.36.00,SRAM 版本:V07。
Linux 操作系统在主板 CPU 上运行,MSP430每3秒通过 I2C1总线查询一次。

逻辑分析器捕获的详细数据如下所示,可使用逻辑2软件打开,软件下载地址 为:https://www.saleae.com/downloads/

e2e.ti.com/.../PSE_2D00_MSP430_2D00_TPS23881.pdfe2e.ti.com/.../WriteFailed.sal

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

    这是哪条 I2C 链路? 主板和 MSP430从服务器之间? 还是在 MSP430和 TPS23881s 之一之间? 也许这只是一个大的 I2C 总线。

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

    您好,

    有关调试 I2C 问题,请参见以下资源:

    MSP430 MCU 上常见 eUSCI 和 USCI 串行通信问题的解决方案

    通常,如果 SCL 线路保持在低位,这表示外围设备无法正常工作;但是,如果 您反复启动并重置 I2C 连接,则该错误将会消除。 您会发现 SCL 和 SDA 连接都处于低电平状态,这通常是外围设备(如果 您是控制器)的更严重错误。  

    您可以检查一些其他事项,为您提供有关当前情况的线索。  

    • 在被停转的公共汽车上使用的(e) USCI 的注册状态是什么?  它看起来是否正确? GPIO 寄存器也是如此,它们是否仍正确设置为 I2C 功能? (除非您在计划中更改 PIN/(e)USCI 的状态,否则这不是真正的问题。  
    • 您可以只重置 MSP430,而不重置整个子卡吗? 如果是,问题是否已解决? (不太可能解决,因为问题表明外设有问题。)
    • 与上面类似,您是否可以一次重置一个外围 TPS 设备以查看它们中是否有任何一个正在挂断总线?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    贾斯,

    感谢您的回复,请您帮助检查客户的 SCH 吗?  e2e.ti.com/.../4530.PSE_2D00_MSP430_2D00_TPS23881.pdf

    我会让客户检查您的建议。

    谢谢你

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="215629" url="~ë/support/microcontroller/MSP-low-Power-microcontroller-group/MSP4E/f/MSP-low-Power-microcontroller-forum/1079412/msp430f5234-MSP430-i2c-bus-hang-problem/3994914#3994914"],那么哪个 I2C 链接就是这样? 主板和 MSP430从服务器之间? 还是在 MSP430和 TPS23881s 之一之间? 也许这只是一个大的 I2C 总线。

    主板和 MSP430之间发生了此问题,如果重新启动子卡,此问题可能 会恢复。

    谢谢你

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

    然后,问题很可能出现在 MSP430 I2C 代码中。

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

    大卫,你好。

    感谢你的回复。

    在客户方面,
    微控制器 MSP430运行固件固件固件,BSL 版本:V03,应用固件:00.01.36.00,SRAM 版本:V07。
    Linux 操作系统在主板 CPU 上运行,MSP430每3秒通过 I2C1总线查询一次。

    请您对此问题发表更多评论吗? 谢谢你

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

    直到现在,我甚至从未听说过固件固件。 但您的问题似乎是 MSP430正在保留总线,因为未读取 XBUF。

    所以你需要弄清楚为什么。 由于您说它在失败前运行了很长时间,因此问题可能是与其他一些代码的交互。 由于您几乎肯定拥有 I2C 中断服务例程,因此如果另一个 ISR 从不返回,它可能无法运行。 或者可能全局中断已禁用,但不再启用。

    可能性太大。 简单的方法是通过 JTAG 连接电路板,以便您可以使用调试器来查看发生故障时它正在执行的操作。

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

    陈您好,

    David 在这里拥有在 MSP430上对 I2C 进行常规调试的正确方法。 尽管如此,我将使此线程脱机,并将您连接到拥有此固件的团队。