I2C
总线 | I2C
总线介绍I2C(
Inter - Intergrated Circuit
)总线(也称IIC或I2C)是由PHILIPS
公司开发的两线式串行总线,用于连接微控制器及其外围设备,是微电子通行控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口少、控制方式简单,器件封装形式少、通信速率高等优点。
(1)两条总线线路:一条串行数据线(SDA),一条串行时钟线(SCL:控制时序);
(2)每个连接到总线的器件都可以通过唯一的地址联系主机,同时主机可以作为主机发送器或者主机发送器或主机接收器;
(3)是一个真正的多主机总线,如果两个或更多的主机同时初始化,数据传输可以通过冲突检测和仲裁防止数据被破坏;
(4)串行的8位双向数据传输位速率在标准模式下可达
100kbit/s
,快速模式下可达400kbit/s
,高速模式下可达3.4Mbit/s
。
(5)连接到相同总线的
I2C
数量只受到总线的最大电容400pF
限制。
发送器:发送数据到总线的器件。
接收器:从总线接收数据的器件。
主机:初始化发送产生的时钟信号和终止发送的器件。
多主机:同时有多于一个主机尝试控制总线但不破坏传输。
仲裁:是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使传输不被破坏的过程。
同步:两个或多个器件同步时钟信号的过程。
由于连接到
I2C
总线的器件有不同种类的工艺(CMOS
、NMOS
、双极性),逻辑0
(低)和逻辑1
(高)的电平是不固定的,它是电源VCC
的相关电平决定,每传输一个数据位就产生一个时钟脉冲,数据的有效形如下所示:
SDA线上的数据必须在时钟的高电平周期保持稳定。数据线的高或低电平状态
IIC
位传输数据的有效性在SCL线的时钟信号是低电平时才能改变。起始和停止条件如下图所示:
起始条件:
SCL
线是高电平时,SDA
线从高电平向低电平切换。
停止条件:
SCL
线是高电平时,SDA
线从低电平向高电平切换。
起始和停止条件一般都是由主机产生,总线在起始条件后被认为是处于忙碌状态,在停止条件的某段时间后总线被认为处于空闲状态。
发送到
SDA
线上的每个字节必须为8位,每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。首先传输的是数据的最高位(MSB
),如果从机要完成一些其他的功能后(如一个内部中断服务程序)才能接受或者发送下一个完整的数据字节,可以使时钟线SCL
保持低电平,迫使主机进入等待状态,当主机准备好接收下一个数据字节并释放时钟SCL
后,数据继续传输。
数据传输必须带响应位,相关的响应时钟脉冲由主机产生。在响应的时钟脉冲期间发送器释放
SDA
线(高)。在响应的时钟脉冲期间,接收器必须将SDA
线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。通常被寻址的接收器在接收到每个字节后,会产生一个响应。当从机不能响应从机地址时(如它正在执行一些实时函数不能接收或发送),从机必须使数据线保持高电平,主机然后产生一个停止条件终止传输或者产生重复起始条件开始新的传输。
如果从机接收器响应了从机地址,但是在传输了一段时间后不能接收更多字节,主机必须再一次终止传输。这个情况用从机在第一个字节后没有产生响应来表示。从机使数据线保持高电平,主机产生一个停止或重复起始条件。
如果传输中有主机接收器,它必须在从机不产生时钟的最后一个字节不产生响应,向从机发送器通知数据结束。
从机接收器必须释放数据线,允许主机产生一个停止或重复起始条件。
第一个字节的头七位组成了从机地址,最低位(
LSB
)是第8位,它决定了普通的和带重复开始条件的7位地址格式方向。第一个字节的最低位是“0”,表示主机会写信息到被选中的从机;“1”表示主机会向从机读信息。当发送一个地址后,系统中的每个器件都在起始条件后将头7位与它的自己的地址进行比较,如果一样,器件会判定它被主机寻址,至于是从机接收器还是从机发送器,都有R/W
位决定。
10位寻址与7位寻址兼容,而且可以结合使用。
10位寻址采用了保留的
1111XXX
作为起始条件,或重复起始条件的后第一个字节的头7位。10位寻址不会影响已有的7位寻址,有7位和10位地址的器件都可以连接IIC
总线的10位地址格式到相同的IIC
总线。它们都能用于标准模式和高速模式系统。
10位从机地址由起始条件或重复起始条件后的头两个字节组成。
第一个字节的头7位是
11110XX
的组合,其中最后两位XX是10位地址的两个最高位(MSB
)。第一个字节的第8位是R/W
,决定传输的方向。第一个字节的最低位是“0”,表示主机将写信息到选中的从机,“1”表示主机将向从机读信息。如果R/W位是“0”,则第二字节是10位从机地址剩下的8位;如果R/W
位是“1”,则下一个字节是从机发给主机的数据。
快速模式器件可以在
400kbit/s
下接收和发送。
快速模式可以向下兼容,可以和标准模式器件在
0~100kbit/s
的IIC
总线系统通讯。
高速模式(
Hs
模式)可以在高达3.4Mbit/s
的位速率下传输信息。
向下兼容快速模式和标准模式器件。
高速模式传输除了不执行仲裁和时钟同步外,与快速模式系统有相同的串行总线协议和数据格式。