IIC总线有两根信号线,一根是双向的数据线SDA,一根是时钟总线SCL。硬件上,所有接到IIC总线设备上的串行数据线SDA都接到总线的SDA上,各设备的时钟线SCL都连接到总线的SCL线上。各设备连接到总线的输出端都必须是漏极开路输出或集电极开路输出。各设备的SDA之间是与关系,SCL之间也是与关系。
IIC总线上允许连接多个微处理器以及多种外围设备,如存储器、显示屏等。任一时刻,总线只能由某一台主机控制,各微处理器应该在总线空闲时发送启动数据 。IIC总线允许连接不同传送速率的设备,多台设备之间时钟信号的同步过程称之为同步化。
IIC总线传输过程中,
开始的条件:当SCL保持高电平时,SDA由高变低;
停止的条件:当SCL保持高电平时,SDA由低变高;
传送:SCL保持低电平,SDA线的高低电平的变化。
传送的限制:输出到SDA线上的每一个字节必须是8位的,每次传输的字节不受限制,但每个字节必须有一个应答信号ACK。
与应答信号ACK对应的时钟脉冲由主控制器产生,发送器在应答期间必须下拉SDA线。当寻址的被控器件不能应答时,数据保持为高并使主控器产生停止条件而终止传输。在传输的过程中,在用到主控接收器的情况下,主控接收器必须发出一数据结束信号给被控发送器,从而使被控发送器释放数据线,以允许主控器产生停止条件。
IIC总线在开始条件后的首字节决定哪个被控器被主机选择,即开始信号之后的是地址信号