I2C总线特点
1. I2C总线由飞利浦推出的一种串行总线
2. 具备多主机系统(可以外挂很多器件:如STM8,收音机等),具有总线裁决和高低速器件同步功能的高性能串口总线
3. I2C总线只有两根双向信号线:数据线SDA(Serial Data),时钟线SCL(Serial Clock)
4. I2C总线相当于公路主干道,外挂器件相当于交通工具,只要遵守协议就可以跑数据
5. I2C适合板载芯片之间的通讯,不适合远距离通讯
I2C总线协议
I2C总线通过上拉电阻(2.2K)接正电源。当总线空闲时,SDA和SCL都是高电平,连接到总线上任一器件输出低电平,那么总线信号遍低,即各器件与SDA和SCL都是“与”关系。
每一个器件都有一个地址
在多主机系统中,可能同时有几个主机启动总线,I2C总线会启用总线仲裁,决定有谁优先使用总线
I2C总线的数据传送
I2C总线进行数据传输时:
SCL为高电平期间,SDA数据保持稳定不能变化
SCL为低电平期间,SDA数据允许进行数据变化
I2C总线起始和终止信号
起始信号:SCL线高电平,SDA线由高电平->低电平
终止信号:SCL线高电平,SDA线由低电平->高电平
起始和终止都是主机发出,产生起始信号后,总线就处于被占用状态;产生终止信号后,总线就处于空闲状态
总结:SCL高电平,如果SDA电压不变,那么就是在传数据,如果SDA电压有变化,那么要么起始信号要么终止信号
在进行数据传输时,如果主机希望继续占用总线进行新的数据传输,那么可以不产生终止信号,马上再次发出起始信号即可
数据传输格式
主机字节发送和应答
每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。
主机发送完8个字节后,主机的SDA线电平就会拉高,进入空闲状态;同时从机会将SDA线拉底来应答主机,表示数据接收完毕。
总线寻址
I2C采用寻址为1个字节,定义如下:
第 0 位(R/T位)表示数据传输方向:0 表示主机向从机写数据(主机发送数据T),1 表示主机由从机读数据(主机接收数据R)
第 1 ~ 7 位表示从机的地址
相关电平持续时间规则