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.

[参考译文] TCA9539:TCA9539 - 2个问题(具有非重复起始的 I2C 读取;SDA 线上的尖峰)

Guru**** 2468710 points
Other Parts Discussed in Thread: TCA9539

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/648782/tca9539-tca9539---2-questions-i2c-read-w-non-repeated-start-spikes-on-sda-line

器件型号:TCA9539

参考:TCA9539数据表(SCPS202C 2009年10月- 2016年5月修订)

假设:假设一个 I/O 扩展器用于输出、另一个用于输入。

问题1)  是否需要读取的重复起始?

首先、这款器件位于第24页(第8.6.3.1.2节)、它与扩展器的读数相关-数据表显示了重复启动、因为我们不支持这一点的驱动程序。 第21页(第8.2.2节)中的措辞还显示"发送命令字节后、继续通过读取访问寻址的寄存器对、直到发送新的命令字节。 ”所以我读错了,但这似乎表明我可以通过两个步骤来添加扩展器-第一步是事务:

步骤1)  开始   ACK ACK 停止    

步骤2) 开始  ACK NAK 停止。

但我不知道这是否可行、尽管如上所述、数据表似乎指示发送命令字节(要从中读取的寄存器地址)时、继续通过读取来访问寄存器、直到发送新的命令字节为止。 因此,我不知道我是否真的需要重复启动,或者我是否很好地将它分解成2个步骤,如图所示。

只是为了清楚这是我所谈论的-它看起来是在工作的,但以这种方式做事情是否有任何问题

很明显、最好是将所有的事务都包含在一个事务中、这样另一个主器件就不能在中间传输过程中接管总线、但是除此之外、2步读取是否存在任何问题?

问题2)  SDA 线上出现尖峰的原因可能是什么、因为在 I2C 事务期间、我们看到尖峰会影响数据完整性、 我们尝试降低电阻器值、认为问题可能是电容负载造成的、但事实证明并非如此、尽管我们现在使用4.7K 上拉电阻器。 我附上了几张图片-如果有任何建议、我将不胜感激、因为这些建议可能会导致这种情况。

通信媒体通过软件连接到 Xilinx 处理系统

输出数据有时会损坏。 其中一个端口似乎始终可靠、但我们看到尖峰会干扰发送到器件的数据

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

    "问题1)  是否需要读取的重复起始?"

    -正如您指出的那样、首选它、因为另一个主器件可以在空闲状态期间接管。 但从通信图片的角度来看、它可以正常工作、因此不需要重新启动。

    "很明显、最好是将所有的事务处理全部处理、这样另一个主器件就不能在中间传输过程中接管总线、但除此之外、两步读取是否存在任何问题?"

    -虽然我应该指出为了具有自动递增功能而被读取/写入的寄存器、但不应该有任何问题。 例如、如果您继续读取另一个字节、则该数据字节将来自寄存器输入端口1。(继续读取将仅在输入端口1和输入端口0之间循环)

    "问题2)"

    这些尖峰看起来与 SCL 信号完全一致、这表明 SCL 信号耦合到 SDA 线上。 如果两个通信器件之间的 SDA 线路上有一个 DNP 电阻器、那么添加一个小电阻器(大电阻器会导致 VIL 读数出现问题)可能会有所帮助。

    -Bobby