用USB到SMBus的桥接芯片CP2112 做TCA9539的主设备,在写从设备地址时,TCA9539不应答。
TCA9539 VCC接3.3V ,INT和reset都不使用,10K上拉到3.3V,A0A1接地,写E8无响应。
折腾了很久,实在找不到为什么?
还请帮忙解答,谢谢!
Kailyn Chen:
SDA和SCL上拉电阻是10K吗? 建议上拉1K电阻。
从机地址没有问题,主控是I2C接口还是SMbus,还是GPIO模拟的I2C ?
user5290105:
回复 Kailyn Chen:
是1k上拉
主机这边就是I2C接口 ,TCA9539与另一个I2C设备一起共用I2C总线,另外的设备可以正常读到地址
9539跟另外的设备也不存在地址冲突问题
Kailyn Chen:
回复 user5290105:
地址不冲突,说明不是地址的问题。
那么是不是两个从机设备的I2C走线很长?导致寄生电容很大,I2C总线的负载电容不超过400pF。
所以如果方便的话,看能否断开另一个I2C 设备,单独和9539进行通讯看是否正常?
user5290105:
回复 Kailyn Chen:
断开另一个设备TCA9539也不工作
我测了I2C的波形,100K频率,是满足时序要求的
之前有看到过别人说TCA9539 R/W为1时设备是没有应答的,我也试了确实还是不行
Kailyn Chen:
回复 user5290105:
您好,在您的第一个帖子中,提到了用的是USB到SMBus的桥接芯片做主控,SMbus的最高频率只能到100K,所以您这里提到100K时序就没问题了。 高于100KHz频率是不是就收不到ACK了?所以问题是不是出在这里。
另外,方向控制位R/W 位当写数据的时候是0, 读数据是1.
那您目前是R/W 为0 时,时序正常?
user5290105:
回复 Kailyn Chen:
确实是SMBus总线,芯片写的SMBus协议频率最高支持255khz ,你说的高于100kHz就收不到ACK了是指TCA5939默认工作模式是fast mode的400kHz吗?这个要怎么验证 ,那主控支持不了400k就没法工作了么?
另外我的R/W位不管0还是1时候都收不到ACK应答
Kailyn Chen:
回复 user5290105:
您指的主芯片写的是SMBus最高支持255KHz吗?据我所知, SMbus协议的clock频率最大100Khz。
TCA9539 的接口是I2C协议标准,能支持I2C的fast mode,最高400Khz的频率。 那么当频率小于等于100Khz的时候,是和SMBus兼容的。也就是说TCA9539也是支持I2C标准模式的,即0~100Khz的频率范围。TCA9539 不是默认400Khz的哈。它的 clock 频率大小是由主控来决定的。
那么既然使用的是SMbus接口,SMbus需要注意的一点就是,当总线reset时候,主控给的clock信号有没有持续拉低,35ms的时间,这个也是Smbus和I2C的主要区别,如果clock持续拉低35ms,就会发生timeout导致无法正常通信。
您能将您的时序图附上看下吗
user5290105:
回复 Kailyn Chen:
我的问题解决了,确实是主控这边SMBus频率的问题,我把频率设到60khz,就可以找到设备TCA9539了
非常感谢您的支持!
user5290105:
回复 user5290105:
您好!发现之前的结论只是偶然识别到了 ,多几次后就发现依然是大概率识别不到TCA9529
求助可还有什么别的思路