简介:
I2C(Inter-Integrated Circuit),中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,是由飞利浦公司在1980年代初设计的,方便了主板、嵌入式系统或手机与周边设备组件之间的通讯。由于其简单性,它被广泛用于微控制器与传感器阵列,显示器,IoT设备,EEPROM等之间的通信。
1.物理接口
1.SCL(serial clock)时钟线传输CLK信号,一般是I2C主设备向从设备提供时钟的通道;
2.SDA(serial data)数据线,传输通信数据。
2.通信特征
1. 串行、同步、非差分、低速率、电平协议,所有数据以位为单位在SDA线上串行传输;
2. 同步通信就是通信双方工作在同一个时钟下,一般是通信的A方通过一根CLK信号线传输A自己的时钟给B,
B工作在A传输的时钟下,通信线中有CLK是同步通信的显著特征;
3. I2C适合通信双方近距离通信,使用电平信号。
4. I2C总线上的每一个设备都可以作为主设备或者从设备,而且每一个设备都会对应一个唯一的地址
5. I2C总线上的主设备与从设备之间以字节(8位)为单位进行双向的数据传输。
6. 主设备+从设备,谁主谁从是由通信双方来定的,I2C协议并无规定
7. 可以多个设备挂在一条总线上,可以一对一也可以一对多。
3.主要用途
1. Soc和周边外设之间的通信,典型的如EEPROM、电容触摸IC、各种sensor等
4.IIC协议规定:
1. 每一支IIC设备都有一个唯一的七位设备地址
2. 数据帧大小为8位的字节
3. 数据(帧)中的某些数据位用于控制通信的开始、停止、方向(读写)和应答机制
5.通信过程
1. 主设备发一个START信号,通知其它设备开始监听总线以准备接收数据
2. 主设备发送一个7位设备地址加一位的读写操作的数据帧,当所设备接收数据后,比对地址自己是否目标设备,
2.1 如果比对不符,设备进入等待状态,等待STOP信号的来临,
2.2 如果比对相符,设备会发送一个应答信号——ACKNOWLEDGE作回应
3. 当主设备收到应答后便开始传送或接收数据。(数据帧大小为8位,尾随一位的应答信号)
4. 当数据传送完毕,主设备发送一个STOP信号,向其它设备宣告释放总线,其它设备回到初始状态
补充说明:主设备发送数据,从设备应答;相反主设备接数据,主设备应答。
6.时序
1. 起始位是一个时间段,总线Clock线维持高电平,SDA线由高变低
2. 结束位,SCL线维持高电平,同时SDA线发生一个从低到高的上升沿。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/63bcd0191f29ccd59e78385ceec90f04.jpeg#pic_center)