linux驱动开发之i2c时序简析

先看i2c基本协议帧:
linux驱动开发之i2c时序简析
结合时序图理解:
linux驱动开发之i2c时序简析
SCL时钟频率是固定的
sda默认为高电平,从高电平变化到低电平,表示开始;接着发送7bit从设备地址,接着区分读写位,sda高电平时候读数据,sda低电平时候写数据, 第9个周期(不包括起始周期)是ACK,接下来8个周期发送8bit数据,接着又一个ACK(强行拉高。然后拉低点平),接下来8个周期发送8bit数据,接着又一个ACK(强行拉高。然后拉低电平)……..当SCL为高电平,sda从低电平变化成高电平,表示停止位。
规则:SCL为高电平的时候,sda数据才有效,即只看SCL为高电平时候,如果sda稳定为某一个值,则sda数据有效。