I2C总线介绍
I2C总线(Inter IC BUS)是由Philips公司开发的一种通用数据总线
两根通信线:SCL(Serial Clock)、SDA(Serial Data)
同步(共用一根时钟线:SCL)、半双工(共用一根通讯线),带数据应答(发送成功后回应)
通用的I2C总线,可以使各种设备的通信标准统一,对于厂家来说,使用成熟的方案可以缩短芯片设计周期、提高稳定性,对于应用者来说,使用通用的通信协议可以避免学习各种各样的自定义协议,降低了学习和应用的难度
I2C电路规范
所有I2C设备的SCL连在一起,SDA连在一起
设备的SCL和SDA均要配置成开漏输出模式
SCL和SDA各添加一个上拉电阻,阻值一般为4.7KΩ左右
开漏输出和上拉电阻的共同作用实现了“线与”的功能,此设计主要是为了解决多机通信互相干扰的问题。
I2C时序结构
I2C数据帧(单发送)
注意看:!!!!
SDA是两条的原因是SD的初始值和信号传输无关,传输信号是根据高低变化的
SCL高电平时从机读取其点频信号(为时钟)
SAL(IN)和SAL(OUT)是输入输出的状态,前面的
表示无论高低电频。
图片用S(开始通信/主机)和R(从机)来表示。
S(起始条件):初始SCL是高电频,进入传输后接收到信号,改为低电频,默认条件,SDA从高电平切换到低电频(为了方便接上)。
都低OD输出的,空闲的时候都是H。
1、开始信号:
发送字节时:
SDA的时序是不确定的根据时序的内容变化(两条线表示变化)
SCL的接收和上面类似:
t代表中间间隔的时间差距(未写出来,肉眼可见的差值),后面的SCL高电平代表接收到了数据,SCL将高电频降低(我要开始接收信号了),一样的。
R:(BYTE)[从机响应 ( 接收 ) ]
主机接收完字节后,从机释放总线,主机接过总线,发送应答;而主机发送完字节后,先释放总线,从机接过总线,通过总线向主机发送应答
SA:(1/0)
发送应答:在接收完一个字节之后,主机在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答
RA:(1/0)
接收应答:在发送完一个字节之后,主机在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA)
P(终止条件)
•终止条件:SCL高电平期间,SDA从低电平切换到高电平