IIC协议简介
特点:串行,同步,半双工。
IIC(Inter-Integrated Circuit, 互联集成电路)协议是由Philips公司开发的一种简单的,双向二线制同步串行总线。使用两根线进行数据交互(SDA和SCL),一根线用于传输数据(SDA),一根线用于同步时钟(SCL),其中SDA数据线是双向串行总线。
优点:
缺点:
IIC协议-物理层
IIC协议的物理层特点主要有:
- IIC协议支持多设备进行通信。在IIC协议中,通讯设备分为主机和从机,并且支持“多主多从”通信。上图中,FPGA芯片是主机,其他 EEPROM(带电可擦除可编程只读存储器),SENSOR(传感器)和 RTC(实时时钟)为从机。
- IIC协议有两根通讯总线—— SDA 和 SCL。SDA是双向串行数据总线,SCL是单向串行时钟总线。数据线传输数据,时钟线传输时钟。两根总线空闲时均为高电平。
- IIC协议中,每个连接到总线的设备都具有一个唯一的设备地址。主机通过唯一的设备地址选择控制从机设备。
- 在“多主多从”模式中,IIC协议使用仲裁方式决定哪个设备占用总线。
- IIC协议有三种传输速度模式:标准模式——100kb/s,快速模式——400kb/s,高速模式——3.4Mb/s。
仲裁机制的原理
IIC协议-协议层
IIC协议的时序主要有:空闲①,开始时序②,数据传输③,停止时序④。
每个时序下总线状态如下所述:
①:空闲时,SCL和SDA都由上拉电阻拉高,保持高电平。
②:开始时,SCL保持高电平不变,然后 master 拉低SDA,使 SDA 产生一个下降沿。
③:数据传输,SCL进行规律的时钟跳变,其中SCL为高电平时,SDA的数据有效,此时SDA传输的数据要保持稳定,不能改变;SCL为低电平时,SDA数据无效,此时进行传输数据更新。总共传输8个字节,在传输8个字节之后,接收方需要发送一个ack 信号,发送ack信号时,SDA由接收方控制,ack为0时,ack有效,ack为1时,ack无效,同样ack的传输也是SCL高电平有效。
④:停止时,SCL保持高电平,将SDA从低电平拉高到高电平,使SDA产生一个上升沿。
其他(IIC协议与SCCB协议)
SCCB协议与IIC协议十分相似,SCCB(serial camera control bus)协议是一种用与控制摄像头的协议,常见于摄像头参数配置。SCCB协议物理层由两个总线SCL和SDA构成(和IIC一致),主要的读写时序也是一样的。
两者的区别:
- SCCB协议中的ack位是don't care的(除读数据需传输NACK),而IIC协议不是。
- SCCB协议只能进行3-Phase Write,2-Phase Write, 2-Phase Read 操作(每次只能写/读1个字节),而IIC协议可以连续写/读多个字节数据。
可以理解为SCCB协议就是IIC协议的简化版。
3-Phase Write
2-Phase Write
2-Phase Read