IIC总线(Inter-Integrated Circuit,集成电路总线),又作I2C,是由飞利浦半导体公司在20世纪80年代设计出来的两线式串行总线,用于连接微控制器和其他的外设设备。I2C总线是微电子通信控制领域广泛使用的一种总线标准。它是同步通信的一种特殊形式,具有接口少、控制方式简单、器件封装形式小及通信速率较高等优点。
IIC总线有两根双向信号线——串行数据线(SDA)和串行时钟线(SCL)。所有的IIC总线上的器件的数据线都会连接到SDA,时钟线都会连接到SCL。如下图所示,IIC是一个多主设备总线,总线可以有一个或者多个主机,总线运行由主机控制。每一个器件都有一个唯一的识别地址,而且都可以用来作为一个发送器或接收器。主机是初始化总线的数据传输并产生时钟信号的器件。此时任何被寻址的设备都被称为从机。如果两个或者更多主机同时尝试初始化数据传输,总线可以通过冲突检测或者仲裁防止数据被破坏。
IIC总线上的SDA和SCL是双向的。为了避免总线信号的混乱,要求设备连接到总线的输出时必须是漏极或者集电极开路。总线空闲时,上拉电阻使SDA和SCL线均为高电平任一设备输出低电平将是的相应的总线信号变低,也就是说各设备SDA和SCL都是“与”的关系,这也使得IIC总线上不同速率的器件能够进行同步。
IIC总线对设备接口电路的制造工艺和电平都没有特殊的要求(NMOS、CMOS都可以兼容)。在IIC总线上数据的传输速率可以高达100Kbps,高速的方式时在400Kbps以上。另外,总线上允许连接的设备总电容量不能超过400pF。
IIC主机对从机的操作时,需要指定从机的地址,一般是7位或者10位。数据传输是有主机发起后,第一个字节7位组成了从机的地址,第8位就是读写控制位(W/R位),它决定了传输的方向。该位为“0”表示主机向选中主机向从机写数据。“1”表示主机从从机中读取数据。当发送一个地址后,系统的每一个器件都在起始条件后将头7位与自己的地址作比较,如果一样,器件会判定它被主机寻址,具体是读操作还是写操作是有读写控制位W/R决定。