由于最近在学习IIC的设备驱动,所以在此写一篇关于I2C的总线介绍来分享我对IIC的理解。希望大家能学习到一些知识和指出我的错误。
IIC:又称I2C,即Inter-Integrated Circuit(集成电路总线),由飞利浦公司开发的串行总线,用于控制微控制器及其他设备。
IIC特点
1.只有两条总线线路:一条串行数据线(SDA),一条串行时钟线(SCL)。
2.每个连接到总线的设备的器件都可以使用软件根据它的唯一地址来识别。
3.传输数据的设备间是简单的主/从关系(意即数据传输是从主机发起,从机接受,从机不可能主动引起数据传输)
4.它是一个真正的多主机总线,两个或多个主机同时发起数据传输时可以通过冲突检测和仲裁来防止数据被破坏
5.串行的8位双向数据传输
对于上图,我们可以提出疑问,既然IIC总线上连接多个设备,那么怎么区分他们呢?怎么在传输数据的时候选择指定的设备呢?
对于I2C设备的读写,在读写数据之前都得发出一个从机地址的7位地址,这个地址是I2C设备特有的唯一地址。
I2C协议中的读写时序
比如我们要往I2C设备写入数据