目录:
一、简介
IIC(Inter-Integrated Circuit),是IICBus简称,中文集成电路总线,它是一种串行通信总线。正确读法应该是I-方(square)c。
IIC由飞利浦所制定,属于串行、多主从架构的通讯协议,目前由NXP继续维护此规范。
基于IIC的其他标准或应用:
SMBus(System Management Bus)
PMBus(Power Management Bus)
IPMI(Intelligent Platform Management Interface)
ATCA(Advanced Telecom Computing Architecture)
DDC(Display Data Channel)
二、硬件介绍
I2C串行总线有两根信号线,一根SCL(时钟线),一根SDA(数据线)。I2C属于串行同步半双工通信。
为了避免总线信号的混乱,要求各设备连接到总线的输出端时必须时开漏输出(OD)或集电极输出(OC)。设备上的串行数据线SDA接口是双向的,输出电路用于总线上发送数据,输入电路用于接收总线上的数据。
I2C总线通过上拉电阻接电源正极。当总线空闲时,两根线均为高电平。接到总线上的任一器件输出的低电平,都将使总线的信号变低,各器件的SDA和SCL都是线与的关系。
三、特点
1、由于接口直接在组件上,因此IIC总线占用空间比较小,减少了电路板的空间和芯片管脚数量,降低了互联成本。
2、支持不同速率的通信速度,标准速度(最高速度100KHz),最快(最高400KHz)
3、具有多机功能,任何能够发送和接收的设备都能成为主总线,但同一时间只能有一个主线。
4、I2C主设备功能:主要产生时钟信号(起始信号和停止信号)
5、I2C从设备功能:可编程的I2C地址检测,停止位检测。
四、通信过程
1、起始信号和停止信号
起始信号:SCL = 1 ,SDA 由高变低(1-0)
停止信号:SCL = 1 , SDA由低变高(0-1)
起始信号和停止信号由主机发送,在起始信号产生之后,总线就处于被占用状态,在停止信号产生之后,总线会被释放,处于空闲状态。
2、数据传输
1、(7bit地址位)
1)主设备发送,从设备接收
S | 起始信号 |
SLAVE ADDRESS | 从设备地址 |
R/W | 读(1)/写(0) |
A | 应答信号(0),非A(无效应答“1”) |
DATA | 8bit数据位 |
P | 停止信号 |
通信过程:主设备发送起始信号,发送从设备地址和写模式,相应地址的从设备应答,发送数据,从设备接收后应答,主设备发送停止信号,结束通信。
2)从设备发送,主设备接收
通信过程:主设备发送起始信号,发送从设备地址和读模式,相应的从设备应答,从设备开始发送设备,主设备接收后发送应答,发送非应答信号,结束接收。
3)先发送后接收/先接收后发送
通信过程:主设备发送起始信号,发送从设备地址和读(写)模式,相应的从设备应答,主设备发送(从设备发送)数据,从设备应答(主设备应答),之后发送Sr(repeaed START condition),发送从设备地址和读(写)模式,相应的从设备应答,主设备发送(从设备发送)数据,从设备应答(主设备应答),结束后主设备发送结束信号,完成通信。
2、特殊从地址(保留地址)
3、(10bit地址位)
1)主设备发送,从设备接收
10bit地址位用到了保留地址中的(10-bit slave addressing),通信过程如下图:
说明:第一个从地址的XX表示10bit地址位的最高位,R/W必须为写模式,第二个从地址(从地址的低8位),之后进行主设备写入,从设备读取。
2)从设备发送,主设备接收
说明:主设备发送,模式为写模式,分别两次将10bit从地址发送完成,之后Sr(repeated Start)再次发送(11110XX),模式为读(1),此时才会开始从设备发送,主设备接收。