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.

[参考译文] CDCE913:对奇数地址的 I2C 字节访问

Guru**** 2391415 points
Other Parts Discussed in Thread: CDCE913

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

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/858572/cdce913-i2c-byte-access-to-odd-address

器件型号:CDCE913

您好!

我面临着 I2C 字节访问问题。

上图显示了对0x2的字节写入访问。 我可以看到 ACK。 底部的图显示了对0x1的访问、并发出 NACK。 我的操作是否错误?

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

    您好!

    您是否能够检测数据表表表7中显示的从器件地址? 另请查看数据表第8.5节。 I2C 不工作的原因有很多。 首先确保能够扫描并设置正确的从器件地址、然后选择 R/W 寄存器并执行字节写入和字节读取、查看是否可以读回写入的内容。 避免此类完整性检查的只读寄存器。

    此致、
    Hao  

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

    您好 Hao、

    感谢您的评论。 我确认 的内容如下。

    1-1) 将 b'1100101作为从器件地址发送

    1-2)发送了 b'0来写入寄存器。

    1-3) 已确认从 CDCE913中删除

    1-4)发送 b'10000001以写入地址0x1

    1-5)已确认来自 CDCE913的 NACK

    2-1) 将 b'1100101作为从器件地址发送(与1相同)

    2-2)发送了 b'0来写入寄存器(与1相同)

    2-3) 确认从 CDCE913中删除(与1相同)

    2-4)发送 b'10000010以写入地址0x2

    2-5)已确认 CDC 中删除

     

    此致、

    Hidenari 本田

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

    您好、HEIDENARI、

    不确定为什么(1-4)和(2-4) MSB = 1。 如果这是从器件地址的7位+ 1 R/W 位、则不需要启动条件。 相反、您应该为 R0x1的地址写入00000001b、获取一个 ACK、然后写入8位数据。这是一个字节写入周期。  

    此致、
    Hao

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

    您好 Hao、

    因为我想尝试进行字节 R/W 操作、所以我在命令代码的第7位中添加了"1"。 实际上、我尝试了"0"和"1"作为命令代码的 MSB、但结果相同。

    此致、

    Hidenari 本田

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

    我明白了。 序列本身对我来说是正确的。 您是否能够与同一总线上的其他从器件通信?

    此致、
    Hao

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

    您好 Hao、

    否 它 只是一个连接到这些总线的器件。

    此致、

    Hidenari 本田

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

    好的。 但是、您以前是否使用过相同的控制器/平台来成功地对其他 I2C 器件进行编程? 这是因为我不确定你得到的 ACK 是否有效、因为我无法判断它是由从器件下拉还是由主器件实际下拉(只需通过扩展 LSB、因为当最后一位为0时、你始终会得到一个 ACK、 最后一位为1时发出 NACK 信号)。 您的平台中是否有可扫描 I2C 总线的功能? 我能想到的最佳完整性检查是扫描 I2C 总线、而不是直接设置从器件地址。 如果您可以通过扫描找到地址、则表示 I2C 确实正常工作。

    此致、
    Hao

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

    实际上、我为该器件设计了该 I2C 主器件、因此未经过验证。 但在我的仿真中、I2C 主设备在寄存器地址后等待 ack/NACK。

    遗憾的是、没有 扫描功能...

    此致、

    Hidenari 本田

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

    我明白了。 您能否将两者分开以进行调试? 否则会有多个变量、很难知道哪个变量不起作用。 您能否使用您熟悉的从器件、并在尝试使两者协同工作之前先验证主器件?

    此致、
    Hao

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

    您好 Hao、

    我找到了根本原因。 我的设计没有达到保持时间要求。 现在、器件似乎正常工作。

    此致、

    Hidenari 本田