IIC特性
- IIC是双线双向的同步串行总线。
- 连接到总线上的器件都有唯一的地址,任何器件既可以作为主机也可以作为从机,但是同一时刻只允许有一个主机
- I2C标准是一个具有冲突检测机制和仲裁机制的真正意义上的多主机总线,它能在多个主机同事请求控制总线时利用仲裁机制避免数据冲突并保护数据
IIC协议描述
- IIC总线使用连接设备的SCL(串行时钟总线)和SDA(串行数据总线)来传送信息。主机在SCL线上输出串行时钟信号,数据在SDA线上进行传输,每传输一个字节(最高MSB开始传输),后面跟随一个应答位。一个SCL时钟脉冲传输一个数据位。
- 通常标准I2C传输协议包括:起始信号或重复起始信号;从机地址及读写位,传输数据,停止信号
起始信号:
空闲状态,SCL为高,SDA拉低真是起始信号
停止信号:
SCL为高,SDA由低到高,则为停止信号
重复起始信号:
两个起始信号之间没有停止信号时,则产生了重复起始信号。
从机地址及读写位
当起始信号产生后,主机立即传输数据的第一个字节:7位从机地址+读写位,读写位控制从机的数据传输方向(0:写 1:读)。
被主机寻址的从机会通过第9个scl时钟周期将SDA置位低电平作为应答
传输数据
数据传输过程中,一个SCL时钟脉冲传输一个数据位,且SDA线只有在SCL为低时才可以改变
IIC总线上的仲裁
- SCL的仲裁
- SDA的仲裁