I2C只需要用两条物理线进行传输,分别命名为SDA和SCL,用于传输serial data和 serical clock,I2C工作时分为主从工作模式,而在同总线上可以存在多个主机。每一个连接到总线的器件都可以通过唯一的地址与总线连接,主机控制主机为发送器模式或接收机模式。多个主机控制时可以通过冲突检测和仲裁防止数据被破坏。I2C总线有几种不同的速率模式。
数据发送过程:
发送从起始到结束为一次完整的发送过程,起始后先发送地址信息,R/W表示写入或读出数据,如果一次过程中,需要切换读写操作时,需要重新发送start。SDA线上每个字节必须为8位,每次传输可以发送的字节数量不做限制,而每个字节后必须跟一个响应位。从机在处理其他事件而不能接收数据时,可以通过控制SCL保持低电平来等待数据接收,等到准备好继续传输时,释放SCL。在总线上的每个模块具有唯一的地址,当然亦可以设计广播地址,通知所有其他模块。
启动和停止:
当I2C不工作时,SDA和SCL一样都处于高位,而SCL保持高位,SDA由高到低表示开始传输,而SCL保持高位,SDA由低到高时表示停止传输。
数据产生:
SDA上传送的数据必须在时钟高电平时保持稳定,而数据的改变只有在SCL为低时进行,而SCL由主机控制产生。