I2C SCL 线,STM32F4 上的时钟问题

I2C SCL line, clock issue on STM32F4

在I2C接口中,

SCL,时钟线即使总线上没有设备也会传输时钟信号?

如何调试I2C?

I2C总线主机不知道总线上是否有从设备连接。

它所能做的就是通过将slave的地址发送到总线来发起与某个设备的通信(可以是读也可以是写操作)。如果主机收到 ACK,确认,则意味着从机已准备好(并出现在总线上)进行通信。 NACK,不确认可能意味着从设备没有准备好。如果请求超时,这意味着总线上没有具有特定地址的可用设备。

现在,回到你的问题:

SCL, clock line will transmit clock signals even if there are no devices on the bus?

是的,当主机启动通信时,时钟线将被驱动,即使没有任何从机。使用时钟,因为总线上有数据,从设备地址。

看起来像下图,唯一的区别是如果总线上没有从设备(具有该地址),则不会有 ACK。

现在关于调试,最好的办法是购买 logic analyzer(eBay 或 aliexpress 上有更便宜的版本)来捕捉总线上实际发生的情况。上图是用one制作的。