主题中讨论的其他器件: TCA9548A
有时、在读取操作期间、TCA6424A 会在时钟为高电平时将数据线置为低电平(违反 I2C 规范)、并无限期地将其保持为低电平。 它需要复位或下电上电才能恢复。 有什么想法会导致这种情况?
一旦在一个时钟高电平状态期间数据被拉低、主器件停止发送时钟。 我不知道这是符合 I2C 规范还是由于主器件实现。
Craig
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.
有时、在读取操作期间、TCA6424A 会在时钟为高电平时将数据线置为低电平(违反 I2C 规范)、并无限期地将其保持为低电平。 它需要复位或下电上电才能恢复。 有什么想法会导致这种情况?
一旦在一个时钟高电平状态期间数据被拉低、主器件停止发送时钟。 我不知道这是符合 I2C 规范还是由于主器件实现。
Craig
您好、Bobby、
这是该总线上唯一的器件。 我们在主器件和该器件之间使用 TCA9548A I2C 开关、该通道是唯一启用的通道。
主设备是 PIC18LF66K40T。 此主器件控制硬件中的9个读取和写入时钟、不受 FW 控制。
第一张图片显示了用于写入地址的两字节写入命令、以及用于读取地址的两字节写入命令。 当从器件在一个时钟高电平期间将数据线路驱动为低电平时、最后一个字节被终止。 在这种情况下、我不知道主器件为什么停止发送时钟。
下一张图片是另一个放大为终止读取字节的实例。 这一次、在时钟为高电平时、从器件将数据线路驱动为低电平之前、再为几个位计时。
感谢你的帮助。
Craig
嗨、Craig、
您可以肯定的是、当这种情况发生时、您可以探测其他 SDA 通道并查看这些通道中是否有任何通道也被锁存为低电平吗? 我想确保其他通道确实已禁用。
我还想查看当您在锁存 SDA 线路时复位 TCA9548A 开关时会发生什么情况。 具有主器件 SDA 的主通道是否保持锁存低电平、或者 TCA6424A 器件的 SDA 是否保持低电平? 这将有助于确认 TCA6424A 是锁存低电平的器件、并且这不是编码问题。
我还想尝试将时钟信号脉冲脉冲9~18次、以查看 SDA 线路是否解锁。
在波形方面、我看不到有什么东西会从我身上跳出来。 看起来上拉电阻器的大小是正确的。 SDA 和 SCL 之间存在一些非常微小的耦合、但看起来并不会影响信号完整性。
看起来奇怪的是、主器件在锁存期间停止发送时钟脉冲、因此我想知道这与代码相关。 通常、主器件仅在 ACK 阶段或从器件接收数据时查找从器件的输入、并在所有情况下继续发送时钟脉冲...
如果您提供了供我们查看的原理图(上拉电阻器、使用的电压、如果我们尚未排除通道被禁用的可能性、还包括开关和连接到开关的器件)、这可能也很有用。
谢谢、
-Bobby