I2C,SCL 线低时 SDA 线高,就在地址 + R/W 字节之后
I2C, SDA line high during SCL line low, just after address + R/W byte
我想知道我在 I2C 测试期间看到的一个现象。
我观察到,当我从主机向从机写入地址 0 时,在发送第一个字节(地址 + R/W 位)后,SDA 线在两个 SCL 滴答之间变为高电平。它不会改变任何行为,但我想知道为什么会这样。
注意:在图像上,地址是 0,我正在写 3 个字节 0x00。这就是为什么除了我的现象外,SDA 线上的一切都很低。
有人有什么建议吗?
在主机到从机的I2C通信中,每个传输字节由主机发送的8个数据位和从机发送的1个应答位组成。所以在第 8 位之后,主机释放 SDA 线,以便从机可以控制它。
如果master释放SDA和slave取得控制之间有一定的延迟,none双方控制线并被强制上拉电阻拉高。这就是您的示波器上可见的内容。
这很好,因为 SCL 线很低。 SDA 仅在 SCL 为高电平时采样。
我只能推测为什么它只发生在第一个字节。可能从机需要一些时间来比较接收到的地址并决定它是否是被寻址的从机并且必须响应。对于后面的字节,不再需要它,因为从设备预先知道它是活动 I2C 通信的一部分。
我想知道我在 I2C 测试期间看到的一个现象。
我观察到,当我从主机向从机写入地址 0 时,在发送第一个字节(地址 + R/W 位)后,SDA 线在两个 SCL 滴答之间变为高电平。它不会改变任何行为,但我想知道为什么会这样。
注意:在图像上,地址是 0,我正在写 3 个字节 0x00。这就是为什么除了我的现象外,SDA 线上的一切都很低。
有人有什么建议吗?
在主机到从机的I2C通信中,每个传输字节由主机发送的8个数据位和从机发送的1个应答位组成。所以在第 8 位之后,主机释放 SDA 线,以便从机可以控制它。
如果master释放SDA和slave取得控制之间有一定的延迟,none双方控制线并被强制上拉电阻拉高。这就是您的示波器上可见的内容。
这很好,因为 SCL 线很低。 SDA 仅在 SCL 为高电平时采样。
我只能推测为什么它只发生在第一个字节。可能从机需要一些时间来比较接收到的地址并决定它是否是被寻址的从机并且必须响应。对于后面的字节,不再需要它,因为从设备预先知道它是活动 I2C 通信的一部分。