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.

[参考译文] PCA9538:在 I2C 读取/写入期间、值被读取和写入的方式很奇怪。

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/937008/pca9538-during-i2c-read-write-values-are-being-read-and-written-strangely

器件型号:PCA9538

使用 PCA9538、我构建了如下电路、但我有一些问题。
在数据表中、寄存器1的默认值为0xFF、
寄存器3的默认值为0xFF。
但是、当使用 I2C 进行读取时、寄存器1读取为0x01、寄存器3读取为0x03。

2.寄存器1的默认值读作0x01、但除非再次写入新值、否则输出不会输出。

如果0x02如下面所示写入寄存器1、实际输出显示为0x02、但当 I2C 读取时、其他值被读取。 其他值、如0x03、是相同的。

至于寄存器3的值、如果实际的引脚为 NC、对应的引脚值是否未写入? 例如、写入0x05时、读取0x01。

 

 


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

    您好、Park、

    "一. 在数据表中、寄存器1的默认值为0xFF、
    寄存器3的默认值为0xFF。
    但是、当使用 I2C 进行读取时、寄存器1读取为0x01、寄存器3读取为0x03。"

    如果您将 RESET 切换为低电平、然后释放(恢复高电平)并再次读取这些寄存器、您是否仍然分别读取0x01和0x03?

    "二. 寄存器1的默认值读为0x01、但除非再次写入新值、否则输出不会输出。"

    (关于您的示波器快照)读取时、您不会执行重新启动条件(写入0x01h、然后重新启动)、您是否可以尝试读取的停止然后启动条件?

    " 3. 如果按照如下所示将0x02写入寄存器1、则实际输出显示为0x02、但当 I2C 读取时、将读取其他值。 其他值、如0x03、是相同的。"

    下面我逐位查看了事务。 我注意到在最后一个传输中、读取应该是0x02h、这是一件奇怪的事情。 我用白色圈出了"音量偏移"。 看起来我们的器件(PCA9538)释放 SDA 线路、但由于低电平不同、其他器件会将线路拉低... 总线上是否有任何其他 I2C 从器件?

    为了进行实验、您能否将我们的器件设置为复位状态(将引脚拉至 GND)、然后尝试写入我们的器件并查看您是否收到 ACK? 我们应该期待一个 NACK、但如果我们看到 ACK、则我们知道会发生地址冲突。

    第二点、我们可以尝试、而不是在您读取时执行重新启动条件、您是否可以尝试读取的"停止"然后"启动"条件?

    谢谢、

    -Bobby

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

    谢谢、

    为了进行实验、您能否将我们的器件设置为复位状态(将引脚拉至 GND)、然后尝试写入我们的器件并查看您是否收到 ACK? 我们应该期待一个 NACK、但如果我们看到 ACK、则我们知道会发生地址冲突。

    -> 在使用上述方法进行的测试中、存在 ACK 和地址冲突。 更改地址后、确认一切正常。

    再次感谢。