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