I2C协议是一种二线的串行总线协议。最新的I2C规范,数据传输率可达3.4Mbps,且提供10位寻址。常见的设备都可以与I2C总线接口,包括EPROM、FLASH存储器、看门狗计数器和单片机等。
I2C总线由两条导线构成,数据导线称为串行数据线(SDA),时钟导线称为串行时钟线(SCL)。连接到总线上的设备称为执行设备,分两类:主执行设备和从执行设备。它们都可以是数据的发送器和接收器,但是数据的接收和发动作的发起者只能是主执行设备。正常情况下,I2C总线上的所有从执行设备被设置为高阻状态,而主执行设备保存高电平,表示空闲状态。
I2C总线上的数据传输用一个起始条件来启动。如下图所示,SDA信号发生由高到低的转换,同时SCL信号保持高,表示起始条件。I2C总线上的数据传输用一个终止条件来结束。如下图所示,SDA信号发生由低到高的转换,同时SCL信号保持高,表示终止条件。实际数据在起始和终止条件之间传输。
典型的I2C字节写入周期的操作过程是:主执行设备用一个起始条件启动传输,接着发送设备地址,该地址是要写入数据字节的设备的地址,以高位在前、低位在后的方式发送。1和0的发送如下图所示,图中主执行设备将数据位的值放在SDA信号线上,同时SCL信号线为低,