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.

[参考译文] EK-TM4C129EXL:《使用具有 SMBus 协议的 I2C 外设》

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1212239/ek-tm4c129exl-using-i2c-peripheral-with-the-smbus-protocol

器件型号:EK-TM4C129EXL

您好!

我正在使用TM4C129ENCPDT Arm 芯片的平台上。 对于开发、我使用EK-TM4C129EXL 并参考以下TivaWare API。 

我已经将 I2C0通道配置为充当从器件。 但是、我需要配置此通道以在 SMBus I2C 协议下工作、此文档中提到这是可行的。 但我不太清楚如何通过软件 API 实现这一点。  

这是写消息的图像。

我需要外设来根据 SMBus 设计规范对其地址进行确认。  

有办法做到这一点吗?

同样、我需要在 I2C1上设置 SMBus 通道。 是否可以配置软件 API 调用或寄存器、以便主器件要求相应的从器件对其自身地址进行确认?

谢谢!

Zachary

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

    您好!

     为什么您说从器件没有确认其地址? 从您的示波器上看、我觉得 I2C 会返回 ACK。 只是您的逻辑分析仪不会显示"Write (0x12)+ ACK"。 如果从器件没有以 ACK 应答、则主器件将无法继续进行下面的三次写入、如示波器上所示。 您的以下地址周期显示地址为0x12 + W + ACK。  

    有关 SMBus 和 I2C 之间的兼容性、请参阅此应用手册。  

    https://www.ti.com/lit/pdf/sloa132#:~:text=I2C%20has%20no%20similar%20specifications,(VIHMIN%20%2B%200.15V)

    [quote userid="550037" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1212239/ek-tm4c129exl-using-i2c-peripheral-with-the-smbus-protocol 类似地、我需要在 I2C1上设置 SMBus 通道。 是否有可以配置的软件 API 调用或寄存器、以便让主器件期望相应的从器件对其自身地址进行确认?

    我建议您参考 TivaWare 库中的以下两个示例。  

    C:\ti\TivaWare_C_Series-2.2.0.295\examples\peripherals\i2c\slave_receive_int.c 和  

    C:\ti\TivaWare_C_Series-2.2.0.295\examples\peripherals\i2c\master_sloopback.c.  

    这两个示例使用 I2C0。 要使用 I2C1、您只需搜索 I2C0替换为 I2C1。 您还将需要更改 I2C1的引脚复用。 这些示例非常简单。  

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

    您完全是对的。 我在 UI 上得到了隧道愿景,并被误解了。 还感谢您提供 I2C 和 SMBus 兼容性文档。 非常有帮助!