PCA9518通讯传输失败疑问
请教一下,我现在案子中使用的PCA9518,I2C1_SCL/I2C1_SDA作为MASTER,其余I2C皆为slave,现在通讯的时候发现U11连接的I2C设备传输中途会失败,通过示波器发现在传输失败的时候U11的I2C数据线与master的数据线信号不一致,但是U11的I2C时钟线与master的时钟线始终保持一致,请问是什么原因导致这种问题(slave的数据线会跟master的数据线信号不一致,但是时钟线时钟保持一致),其中I2C的master的线长大概12inch,slave I2C的线长大概11inch左右
只有U11的数据线不一致吗?不一致的数据线包括SD0~SD4还是只有某几个数据线?U12,U13正常工作吗?
1.U11跟U13都会出现这种现象,U12暂未发现这种现象;
2.因为U11/U13只用到了SDA0~SDA2,示波器发现U11/U13的SDA0~SDA2都会在传输的某一时刻发生信号与master信号不一致,U12目前来看可以正常工作。请问这是什么原因造成的
3.另外请问我的原理图是否有错误
4.请问可以通过什么方式避免这种错误的产生
5.TI是否有别的类似PCA9518这种芯片可以将I2C扩展成4路,可否帮忙推荐下
U10和U12的SCL0和SDA0都接的master的I2C1_SCL和I2C1_SDA。
而U11和U13的SCL0和SDA0接的N2_I2C2_SCL,N2_I2C2_SDA 以及N3_I2C2_SCL,N3_I2C2_SDA都来源于哪里呢?
U11以及U13的的SDA0/SCL0接到了slave设备(slave设备都是FPGA),请问这种连接方式是否可以
请问是什么原因造成的这种通讯异常
这样接我认为是没有问题的,现在怀疑两点:
1.接FPGA的SDA0,SCL0是GPIO配置的,还是FPGA的I2C interface? 那么U12和U14的SDA0,SCL0时序都正常吗?
2. 因为I2C的总线负载不能超过400pF,所以怀疑是否负载过重导致。
1.是GPIO配置的,
2.每段I2C的走线长度是12inch以内
现在知道为什么I2C会出问题了,因为我们的FPGA写的I2C程序,当其中一个FPGA被地址寻到后返回一个low ACK,没有被地址寻到的FPGA(发的地址与FPGA定义的地址不同)会发一个high ACK而不是高阻态,这样两个9518之间就会因ACK的不同引起冲突,导致9518工作异常
现在想确认下,因为看到9518的datasheet中描写了如下一段话,请问,我的master 与slave要是都工作在400kHZ的频率可以吗还是说只能工作在100kHZ
您是指的Figure3的应用吗,这里的意思是 要么所有的I2C device都工作在100KHz,如果当中有工作在100KHz,有工作在400KHz的情况时,比如master工作400KHz,有1,2,6slave需要工作在100KHz,那么此时需要将1,2,6进行隔离,通过EN拉低,电气上的隔离就好。
您的这种情况,我认为都工作在400KHz应该是没问题的,理论上来说,master工作在400KHz,由于PCA9518自身有一定的延迟,那么slave频率要小于400KHz。
您可以实际验证下。看是否由于延迟导致slave工作在400KHz有不正常的情况。