1、基本概念
I2C的全称是Inter-Integrated Circuit,译为集成电路总线,是一种同步、双向、半双工的两线式串行接口总线。连接到I2C总线上的设备既可以用作主设备,也可以用作从设备。主设备通常是一个微控制器或微处理器,用来控制通信的启动和停止、时钟信号(SCL)的产生,以及数据传输;从设备则是等待来自主设备的命令并响应命令接收。
I2C总线是共享的总线系统,因此可以将多个I2C设备连接到该系统上,不同的I2C设备有不同的器件地址,主设备通过I2C设备的器件地址访问指定的I2C从设备,连接方式如下图:
图片1.png
I2C采用的开漏输出,SDA跟SCL两根线都需要加上拉电阻,当总线空闲时候两根线是高电平。I2C的优点在于其简单性、灵活性、易于集成、通信速度快、占用引脚少、连接简单等。然而,由于其半双工的工作方式,以及在同一总线上连接的设备数量有限,I2C在某些应用中可能不是最佳选择,也具有传输距离短、信号干扰大等缺点。

2、工作原理
I2C是一种双线总线,分别是时钟线SCL和数据线SDA。在正常工作中,总线协议有起始条件与停止条件。
起始条件:SCL为高电平,SDA由高电平变为低电平。
停止条件:SCL为高电平,SDA由低电平变为高电平。
起始跟停止条件由主机控制。当主机发出起始条件后,I2C总线会被认为忙碌状态。当主机发出停止条件后,I2C总线会被认为空闲状态。当主机发送一个重新起始条件替代停止位I2C总线也会被认为处于忙碌状态。
图片2.png
主机发出起始条件后,开始读取数据,但这里要注意的是数据的有效性。
数据有效性:SCL时钟线在高电平期间,SDA必须是稳定的。SCL时钟线在低电平时候SDA数据线才允许高电平或者低电平变化。每传送一个数据位产生一个时钟。
图片3.png
在数据传输时,SDA线上面的每个字节数据长度必须是8位。每次传输的字节不受限制,每个字节后面跟随着一个应答位,数据以高有效位传输。如果从机不能够接收数据或者传输一个完整的数据字节,直到他完成某些其他功能。例如一个内部中断,它可以保持SCL为低电平状态,迫使主服务器进入等待状态。当从机准备好接收数据后它会释放SCL时钟线数据继续传输。

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Powered by Discuz! X3.5  © 2001-2013 Comsenz Inc.