在 I2C 接口中,
SCL,时钟线即使总线上没有设备也会传输时钟信号?
我们如何调试 I2C?
I2C 总线主机不知道是否有从设备连接到总线。
它所能做的就是通过将slave的地址发送到总线来启动与某个设备的通信(它可以是读或写操作)。如果主机收到一个 ACK 确认,那么这意味着从机准备好(并呈现在总线上)进行通信。NACK,未确认可能意味着从设备未准备好。如果请求超时,这意味着总线上没有具有特定地址的可用设备。
现在,回到你的问题:
SCL,时钟线即使总线上没有设备也会传输时钟信号?
是的,当主机发起通信时,时钟线将被驱动,即使没有任何从机。使用时钟,因为总线上有数据,从设备地址。
如下图所示,如果总线上没有从设备(具有该地址),则不会出现 ACK 的唯一区别。
现在至于调试,最好的办法是购买逻辑分析仪(在 eBay 或速卖通上有更便宜的版本)来捕捉总线上实际发生的情况。上面的图像是使用一张制作的。