目录
一、I2C 总线概念
1、构成:I2C总线是由时钟线(SCL)和数据线(SDA)组成的串行总线,用于主控器件(CPU)和外围设备(IC)之间的连接。
2、特点:简单(布线及管脚少)、有效(传输速率100Kb/s、400Kb/s、3.4Mb/s)。
3、两根线都接上拉电阻,默认高电平(1),数据传输方式MSB(高位到低位)。
二、I2C 总线工作原理
1、信号类型
类型 | 说明 |
开始信号(Start) | SCL为高电平时,SDA由高到低跳变,即为开始 |
结束信号(End) | SCL为高电平时,SDA由低到高跳变,即为结束 |
数据传输信号 | 信号(S)后,SCL高电平期间,数据线稳定SDA数据有效,即数据可以进行读操作;当SCL低电平期间,SDA数据才允许有改变,每一个数据需要一个时钟脉冲。 |
应答信号 | 当接收数据IC接收到一个字节(8bit)数据后,向发送数据的IC发出低电平信号(ACK),表示收到数据;若为高电平则表示NACK |
2、总线读写
总线必须由主控器件控制,SCL串行时钟需主控器件提供,决定开始和停止条件。SDA数据线上的数据状态在SCL时钟为低电平时才能改变,SCL时钟线为高电平时,SDA数据线的改变用来表示I2C信号的开始与结束。
片选信号(首字节=从机地址+方向控制)
1)写:7位地址+0(低电平代表写)
2)读:7位地址+1(高电平代表读)
3、I2C总线位数
位数 | 说明(从设备个数) |
7位 | 127(2^7) |
10位 | (2^10)11110 + 10位 + 1位方向控制 |
4、总线仲裁
是指根据SDA数据线决定,也就是说哪个主设备先将SDA数据线拉低,谁就拥有优先权,其他设备就会得知SDA的实际电平与自身所发出的数据高低不匹配就会让出总线归属权。(多主机模式存在仲裁)I2C多主总线接口含有冲突检测机制,当两个设备试图同时改变SDA和SCL的电平时&#x