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.

[参考译文] TCA9534A:I2C 信号错误

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1491566/tca9534a-i2c-signal-error

器件型号:TCA9534A

工具与软件:

大家好、团队成员:

我们使用 GPIO 来模拟 I2C 以控制 TCA9534A。

当我发送 I2C 命令时I2C get unit 0 dev 14 reg 0x0、例如、它可以在上电后执行前四条命令。
但是、我从第五条命令开始收到错误消息。
是否有解决此问题的方法? 或者最可能的问题是什么? 感谢您的帮助和向您学习。

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

    请显示一个示波器迹线、此迹线表示一个未成功的 μ I²C 事务。

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

    Tommy、您好!

    我们可以看到问题的范围捕获吗?  

    我们是否确定没有读取 TCA9534A 寄存器映射之外的寄存器?  

    命令表显示0x00 - 0x03寄存器。 如果您正在读取映射、则寄存器0x04处的第五次读取不存在、TCA9534A 将否定确认总线。  

    此致、

    Tyler

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

    您好、Tyler:

    附件01显示了发送 i2c get 命令(地址为0x1)的结果

       图01

    附件02显示了使用0x4发送 i2c get 命令的结果。

      图02

    发送附件02中的命令后、它返回错误。

    此问题可能有什么可能? 谢谢。

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

    0x04不是有效的寄存器编号。  TCA9534A 的行为正常。

    (并且必须对 SDA 使用开漏驱动程序。)

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

    Tommy、您好!

    在第二个示波器捕获中、您尝试与该器件的寄存器映射中不存在的寄存器地址0x04进行通信。 请查看我之前回复中的注册表。 尝试从0x04读取/写入的数据应否定确认。  

    您正在使用哪种类型的 I2C 驱动器? 这看起来不像开漏、因为信号在上升沿出现过冲。 I2C 需要开漏驱动器。  

    此致、

    Tyler

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

    您好、Tyler 和 Clemens:

    好的、明白了。  

    我认为客户指令字节错误、对吧?

    如下所示:

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

    您好、Tyler:

    1.中的第一个 ACK 不在 CLK 的上升沿、这是否符合规范?

    2.此功能> 加电时所有通道均被配置为输入、  

      开始之前、数据表是否包含需要配置内容的相关信息?  

    3.注册2是否需要设置?  只是 GPIO 输出反相吗? 或仅保留默认设置。

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

    在 SCL 的上升沿对 SDA 线进行采样。 在其他时间发生什么也无关紧要;在主从切换期间、可能会出现此类尖峰。

    2.数据表中指定了默认配置值。 如果您需要其他值、则必须编写它们。

    3.如果你需要反相,你必须配置它。

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

    Tommy、您好!

    我同意克莱门斯所说的话。 请查看他的评论。  

    (1)一个 ACK = LOW。 或 NACK = HIGH。 在 SCL 的上升沿、SDA = LOW、所以这是一个成功的 ACK 位。 由于 I2C 在 SCL 的上升沿进行采样、因此之后执行的操作不那么重要。 正如 Clemens 所说、主器件和从器件(控制器和目标)必须切换 SDA 总线。 有时、在切换之间存在延迟、SDA 上的 PU 电阻器开始将总线拉至高电平、这就是 SDA 在再次被拉至低电平之前上升一段时间的原因。  

    (2)这是器件上电时 I/O 扩展器的默认值。  

    (3)极性反转寄存器对配置为输入的引脚的输入数据状态进行反转、或对配置为输出的引脚的逻辑进行反转。  

    此致、

    Tyler