参考: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 处理系统
输出数据有时会损坏。 其中一个端口似乎始终可靠、但我们看到尖峰会干扰发送到器件的数据


