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.

[参考译文] MSP430F5438A:如何通过 MSP430F5438A 的一组 I2C 线路来操作多个 I2C 器件?

Guru**** 2540720 points
Other Parts Discussed in Thread: MSP430F5438A

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/689579/msp430f5438a-how-to-operate-the-multiple-i2c-devices-via-one-set-i2c-lines-of-msp430f5438a

器件型号:MSP430F5438A

您好!

我设计了一个具有 MSP430F5438A 的电路板、将4个 I2C 器件连接到 P9.1和 P9.2上的 UCB2的一组 I2C 线路。 现在、我用正常的 I2C 启动和操作代码验证了第1个器件的运行、但在第2个器件上失败、我使用第2个器件的从地址重新启动 I2C、问题始终是在执行 START 操作时没有 ACK 响应。  

有人能告诉我根本原因吗? 我正在检查 SCL 和 SDA 的硬件信号质量、我对如何操作第2 /第3个 I2C 器件的软件编码有疑问、我是否需要完全重新启动 I2C? 还是只需更改 UCB1I2CSA 寄存器的从器件地址? 如果是、当只更改从器件地址时、所需的寄存器操作是什么?

BTW、我的编译工具是 IAR。

提前非常感谢!

此致!

Hougqm

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

    您好!

    从器件地址是否正确? 在主器件对从器件寻址之后、它应该提供一个 ACK。 您是否有上拉电阻器? 4个 I2C 器件是否要求您通过将某些引脚拉为高电平或低电平来配置地址?

    也请花些时间阅读这些有用的资源。 基于此类问题、我们花了大量时间将提示和技巧组合在一起。

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

    希望这对您有所帮助!

    此致、

    James

    MSP 客户应用

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

    您好 James、

    感谢您对我的问题的回答、并提供了许多参考资料、很抱歉我没有仔细阅读句子到句子之间、我发现这些内容涉及如何操作 I2C 基本理论和正常操作方法、我熟悉 I2C 协议和硬件设计、 这一次我成功读取/写入了一个 I2C 器件、但不确定如何设计操作第二到第四个器件的代码、当我开始读取/写入新的地址组件时、是否需要使用相应的从器件地址重新启动所有 I2C 相关寄存器? 还是只需要更改从器件地址寄存器?

    我真的不想花很多时间仔细阅读所有材料以找到我的问题的答案、尽管我已经完成了但失败了、您能帮助指出哪个章节的文档可以回答我的问题吗?

    非常感谢!

    此致!

    Hougqm

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在与同一总线上的多个 I2C 器件通信时、代码应执行以下操作:
    *在任何通信开始时发送特定于器件的数据包,该通信以起始位、器件地址开始,甚至可能包括 R/W 位。
    当与任何设备的通信完成时(即您必须在末尾提供停止位)、必须将线路置于空闲状态。

    几乎这就是任何人可以告诉您的内容、因为开始位和停止位之间发生的情况取决于 I2C 外设的命令/数据。
    如果我在这里、我将首先确保我的固件能够在每个 I2C 器件本身位于总线上时成功地与它们通信、然后再将它们全部连接在一起。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Mike:

    非常感谢您的解释、我完全同意您的建议、即首先验证每个 I2C 器件、然后考虑将所有器件集成在一起、现在我尝试将单独的 I2C 总线分配给3个器件、因为 SPI 器件使用了第4组。 根据我之前对其他 MCU 的经验、我将所有 I2C 器件连接到1组 I2C 总线线路、这是我第一次使用此芯片、因此解决了这个问题。

    我可能会在调试后再次向您咨询、提前感谢。

    此致!

    Hougqm