I2C(Inter-Integrated Circuit)是一种串行通信协议,通过2根信号线进行数据传输,分别是时钟线(SCL)和数据线(SDA)。因为是串行通信,所以只要每个设备有一个唯一的地址,就可以在同一条数据线上进行通信了,这就是I2C可以接很多设备的原因之一。
I2C还支持多主机架构,一个主机可以控制多个从机设备。为了保证多个主机之间通信的顺序,I2C中有一个总线独占的机制,一旦一个主机开始通信,其它主机都不能插入。这样就保证了各个主机之间的通信不会混乱,从而可以实现多个主机控制多个从机的情况。
I2C的另一个优点是支持数据筛选,可以通过写入自己的地址来指定只与特定设备通信,从而避免了多个设备同时响应的情况。当主机向网络中的一个设备发送数据时,设备会从自己的地址开始比对通信上来的地址。如果与自己的地址相匹配,设备就接受接下来的数据,否则它会忽视接下来的数据信息。
I2C是基于开放标准的,任何厂商都可以开发符合标准的设备。因此,市场上有数以千计的I2C设备可供选择。这意味着无论你需要连接什么样的设备,都可以找到相应的I2C设备来实现。