Detailed notes I2C bus

Creative Commons License Copyright: Attribution, allow others to create paper-based, and must distribute paper (based on the original license agreement with the same license Creative Commons )

table of Contents

1 Introduction

2. Characteristics

3. Specification

3.1 SDA and SCL signals

 3.2 SDA and SCL logic levels

 3.3 Effectiveness Data

3.4 START and STOP conditions

3.5 byte format

3.6 Acknowledge (ACK) and Not Acknowledge (NACK) 

3.7 Clock Synchronization

3.8 Arbitration

3.9 Clock stretching

3.9 slave address and R / W bit

3.10 10-bit address

3.11 reserved addresses

3.12 Call Address 

3.13 software reset

3.14 start byte

3.15 bus clear

4. Super fast-mode I2C bus protocol

Other uses 5. I2C bus communication protocol

5.1 CBUS compatibility

5.2 SMBus - System Management Bus

6. Speed ​​Bus


1 Introduction

The I2C bus is the de facto world standard, now manufactured by over 50 companies of more than 1000 different IC implementation. In addition, various multifunctional for controlling an I2C bus architectures, such as system management bus (the SMBus), the power management bus (the PMBus), Intelligent Platform Management Interface (the IPMI), Display Data Channel (DDC) and the Advanced Telecom Computing Architecture (ATCA) ).

Design in consumer electronics telecommunications and industrial electronics in seemingly unrelated that often there are many similarities such as nearly every system includes:

For these devices similar to system designers and manufacturers benefit maximum circuit efficiency but also the easiest hardware Philips (now NXP) developed a simple bi-directional two-wire bus for controlling the bus between the active is called the IC Inter IC or I2C bus . All devices comply with a combination of I2C bus interface enables direct communication through the I2C bus between devices on a chip.

Philips I2C bus is designed and developed in the early 1980s, allows easy communication between components of the same circuit board, a simple, bi-wire synchronous serial bus. It only requires two wires to transmit information between devices connected to the bus. Philips Semiconductors migrated to NXP in 2006.

A bus master for initiating a data transfer and generates the clock to open transfer device, any slave device being addressed at this time is considered to be from the device. On the bus master and slave, and receiver on the relationship is not constant, but depends on the direction of data transfer at this time. If data to be transmitted from the host device, the host device from the first address, and then sends the data to the slave device, the final termination of the data transfer from the host; If you want to receive data from the host device, from the first device addressed by a master device. The host device receives the data transmitted from the host receives the final termination procedure. under these circumstances. Host responsible for generating the timing clock and terminate data transfers.

Bus website: https://www.i2c-bus.org/

Official protocol document: https://www.i2c-bus.org/specification/

CSDN documents Address: https://download.csdn.net/download/xiewinter/11243770

2. Characteristics

  • It requires only two bus lines: a serial data line (Serial Data Line, the SDA ), a serial clock line (Serial Clock Line, the SCL )
  • Each device connected to the bus can be by a unique address and there is always a simple master / slave relationship addressing software; host can reside as a host or host receiver transmitter
  • It is a true multi-master bus , including collision detection and arbitration to prevent two or more master devices simultaneously start data transfer data corruption.
  • Serial, 8-bit bidirectional data transmission in a normal mode up to 100 kbit / s, the fast up 400 kbit / s mode, the fast + up to 1 Mbit / s mode, or the high speed mode up to 3.4 Mbit / s.
  • Serial, 8, unidirectional data transmission in the ultra-fast mode up to 5 Mbit / s
  • On-chip filter may filter out glitches wave bus data lines to ensure data integrity
  • Number IC may be connected to the same bus is limited only by the maximum bus capacitance. Under certain conditions may allow for greater capacitance. See the official reference manual.

 

3. Specification

The I2C bus is a multi-master bus which means that can be connected to more than one device can control the bus to the bus. Under If two or more hosts try to send messages to a bus has produced 0 in other hosts first generates a host 1 will be lost arbitration. Arbitration clock signal is connected to the line sync clock line SCL host generated.

Generating a clock signal on the I2C bus is always the responsibility of the master device; data transfer on the bus, each master generates its own clock signal. The bus clock signal from the master only be changed when pressed by the slow clock line from the stretching device or by another master when arbitration occurs apparatus. 

3.1 SDA and SCL signals

SDA and SCL lines are bi-directional, pull-up resistors connected to the positive supply voltage (see FIG. 3) or via a current source. When the bus is free, two lines are HIGH . Devices connected to the bus of the output stage must have open collector or open-drain to perform the wired-AND function. Data on the I2C bus in standard mode can be up to 100 kbit / s transfer rate, up to 400 kbit / s in the fast mode, up to 1 Mbit + in the fast mode / s or more in the high-speed mode to 3.4 Mbit / s. Bus interfaces limit the number of capacitors connected to the bus.

The main application for a single, extended if no device on the bus clock, the host of SCL may be a push-pull output driver design.

 3.2 SDA 和 SCL 逻辑电平

由于可以连接到I2C总线的各种不同技术设备(CMOS,NMOS,双极),逻辑“0”(低)和“1”(高)的电平不固定,取决于 相关的VDD电平。 输入参考电平设置为VDD的30%和70%; VIL为0.3VDD,VIH为0.7VDD。 请参见图38,时序图。 一些传统器件输入电平固定为VIL = 1.5 V和VIH = 3.0 V,但所有新器件都需要30%/ 70%的规格。

 3.3 数据的有效性

SDA 线上的数据必须在时钟的高电平周期保持稳定数据线的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变。为传输的每个数据位生成一个时钟脉冲。

3.4 START and STOP 条件

所有的传输都是所有事务都以START(S)开始,并由STOP(P)终止(见图5)。

SCL 线是高电平时,SDA 线从高电平向低电平切换,表示起始条件。

当SCL 是高电平时,SDA 线由低电平向高电平切换,表示停止条件。

 起始和停止条件一般由主机产生总线在起始条件后被认为处于忙的状态在停止条件的某段时间后总线被认为再次处于空闲状态。

如果产生重复起始Sr 条件而不产生停止条件总线会一直处于忙的状态此时的起始条件S和重复起始Sr 条件在功能上是一样的,因此在本文档的剩余部分符号S 将作为一个通用的术语既表示起始条件又表示重复起始条件除非有特别声明的Sr。

如果连接到总线的设备包含必要的接口硬件,则可以轻松检测START和STOP条件。 但是,没有这种接口的微控制器必须在每个时钟周期至少两次采样SDA线来检测是否发生电平转换。

3.5 字节格式

发送到SDA 线上的每个字节必须为8 位。每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。首先传输的是数据的最高位MSB (见图6 )。如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平迫使主机进入等待状态。当从机准备好接收下一个数据字节并释放时钟线SCL 后数据传输继续

3.6 Acknowledge (ACK) and Not Acknowledge (NACK) 

响应发生在每个字节之后。 应答位允许接收器向发送器发信号通知该字节已成功接收,并且可以发送另一个字节。 主机产生所有时钟脉冲,包括应答第9个时钟脉冲。

ACK 信号:在响应的时钟脉冲期间,接收器必须将SDA 线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平(见图4) 。当然必须考虑建立和保持时间。

NACK信号:当在第9个时钟脉冲期间SDA保持高电平时,这被定义为非应答信号。主设备可以生成STOP条件以中止传输,或者生成重复的START条件以开始新的传输。 导致生成NACK的条件有五个:

  • 1.总线上没有带有发送地址的接收器,因此没有设备响应确认。
  • 2.接收器无法接收或发送,因为它正在执行某些实时功能,并且尚未准备好开始与主站通信。
  • 3.在传输过程中,接收器获取它不理解的数据或命令。
  • 4.在传输过程中,接收器无法再接收数据字节。
  • 5.主接收器必须发信号通知从发送器的传输结束。

3.7 时钟同步

两个主设备可以同时开始在空闲总线上进行传输,并且必须有一种方法来决定哪个控制总线并完成其传输。 这是通过时钟同步和仲裁完成的。 在单主系统中,不需要时钟同步和仲裁。

时钟同步通过线与连接I2C 接口到SCL 线来执行。这就是说SCL 线的高到低切换会使器件开始数它们的低电平周期,而且一旦器件的时钟变低电平,它会使SCL线保持这种状态直到到达时钟的高电平。但是,如果另一个时钟仍处于低电平周期,这个时钟的低到高切换不会改变SCL线的状态。因此,SCL线被有最长低电平周期的器件保持低电平,此时,低电平周期短的器件会进入高电平的等待状态。

 当所有有关的器件数完了它们的低电平周期后,时钟线被释放并变成高电平。之后器件时钟和SCL线的状态没有差别。而且所有器件会开始数它们的高电平周期。首先完成高电平周期的器件会再次将SCL线拉低。

这样,产生的同步SCL时钟的低电平周期由低电平时钟周期最长的器件决定,而高电平周期由高电平时钟周期最短的器件决定。

3.8 仲裁

仲裁与同步一样,只有在系统中使用多个主设备时才需要协议的一部分。主机只能在总线空闲的时侯启动传输。两个或多个主机可能在起始条件的最小持续时间(tHD;STA)内产生一个起始条件,结果在总线上产生一个规定的起始条件。

当SCL 线是高电平时,仲裁在SDA 线发生;这样,在其他主机发送低电平时,发送高电平的主机将断开它的数据输出级,因为总线上的电平与它自己的电平不相同。

仲裁是逐位进行的,在每个位期间,当SCL为高电平时,每个主器件都会检查SDA电平是否与它发送的电平相匹配。 此过程可能需要很多位。 只要传输完全相同,两个主设备实际上可以无错误地完成整个事务。 主设备第一次尝试发送HIGH,但检测到SDA电平为低电平,主机知道它已经丢失仲裁并关闭其SDA输出驱动器。

因为,I2C 总线的地址和数据信息由赢得仲裁的主机决定,在仲裁过程中不会丢失信息。丢失仲裁的主机,可以产生时钟脉冲直到丢失仲裁的该字节末尾。

如果主机也结合了从机功能,而且在寻址阶段丢失仲裁,它很可能就是赢得仲裁的主机在寻址的器件。因此,丢失仲裁的主机必须立即切换到它的从机模式。

由于I2C总线的控制仅取决于竞争主机发送的地址和数据,因此没有中央主机,也没有总线上的任何优先级顺序。

如果在一个主设备发送重复START或STOP条件而另一个主设备仍在发送数据时仲裁过程仍在进行中,则存在未定义的条件。 换句话说,仲裁在不能下面情况之间进行:

•重复起始条件和数据位:主设备1发送重复的START条件,主设备2发送数据位。

•停止条件和数据位:主设备1发送STOP条件,主设备2发送数据位。

•重复起始条件和停止条件:主站1发送重复的START条件,主站2发送STOP条件。 

3.9 Clock stretching

时钟延长通过将SCL线保持为低电平来暂停事务。 在该行再次释放HIGH之前,该事务不能继续。 时钟延长是可选的,事实上,大多数从设备不包括SCL驱动程序,因此它们无法延长时钟。

在字节级,设备可能能够以快速速率接收数据字节,但需要更多时间来存储接收到的字节或准备另一个要传输的字节。 然后,从器件可以在接收和确认一个字节后将SCL线保持为低电平,以强制主器件进入等待状态,直到从器件准备好在一种握手过程中进行下一个字节传输。

在位级,诸如具有或不具有用于I2C总线的有限硬件的微控制器的设备可以通过延长每个时钟LOW周期来减慢总线时钟。 任何主站的速度都适合该设备的内部运行速率。

3.9 从机地址和R/W

数据传输遵循图9中所示的格式。在START条件(S)之后,发送从地址。 该地址长7位,后跟第8位,即数据方向位(R / W) - “0”表示传输(WRITE),“1”表示数据请求(READ)(参见图)10)。数据传输总是由主机产生的STOP条件(P)终止。 但是,如果主设备仍希望在总线上进行通信,则它可以生成重复的START条件(Sr)并在不首先生成STOP条件的情况下寻址另一个从设备。在这种传输中,可以进行不同读/写格式的各种组合。

 可能的数据传输格式是:

  • 主发送器发送到从接收器。 传输方向没有改变(见图11)。 从接收器确认每个字节。
  • 主机在第一个字节后立即读取从机(参见图12)。 在第一次确认时,主发送器变为主接收器,从接收器变为从发送器。 第一次确认仍由从机生成。 主设备生成后续确认。 STOP条件由主机产生,它在STOP条件之前发送一个非应答(A)。
  • 组合格式(见图13)。 在传输改变方向时候,START条件和从地址都重复,但R / W位反转。 如果主接收器发送重复START条件,它会在重复START条件之前发送一个非应答(A)

注意:

  1. 复合格式可以用于例如控制一个串行存储器。在第一个数据字节期间,要写内部存储器的位置,在重复起始条件和从机地址后,数据可被传输。
  2. 自动增加或减少之前访问的存储器位置等所有决定都由器件的设计者决定
  3. 每个字节都跟着一个响应位,在序列中用A 或A 模块表示
  4. 兼容I2C 总线的器件在接收到起始或重复起始条件时必须复位它们的总线逻辑,甚至在这些起始条件没有根据正确的格式放置,它们也都期望发送从机地址。
  5. 起始条件后面立即跟着一个停止条件报文为空是一个不合法的格式
  6. 连接到总线的每个设备都可以通过唯一的地址寻址。 通常存在简单的主/从关系,但是可以具有多个可以同时接收和响应的相同从属,例如在组广播中。

3.10 10位地址

10位寻址扩展了可能的地址数量。 具有7位和10位地址的器件可以连接到同一个I2C总线,7位和10位寻址都可以用于所有总线速度模式。 目前,10位寻址没有被广泛使用。

10位从地址由START条件(S)或重复START条件(Sr)之后的前两个字节构成。

第一个字节的前七位是组合1111 0XX,其中最后两位(XX)是10位地址的两个最高有效位(MSB); 第一个字节的第八位是决定消息方向的R / W位。

尽管保留地址位1111XXX有八种可能的组合,但只有四种组合1111 0XX用于10位寻址。 其余四种组合1111 1XX保留用于未来的I2C总线增强。

之前针对7位寻址描述的读/写格式的所有组合都可以通过10位寻址实现。 这里有两个详细说明:

  • 主机发送器传输10位从地址发送到从接收器。
  • 主接收器使用10位从地址读取从发送器。

 

3.11 保留地址

3.12 广播呼叫地址 

广播呼叫地址是用来寻址连接到I2C 总线上的每个器件。但是,如果器件在广播呼叫结构中不需要任何数据,它可以通过不发出响应来忽略这个地址。如果器件要求从广播呼叫地址得到数据,它会响应这个地址并作为从机接收器运转。第二个和接下来的字节会被能处理这些数据的每个从机接收器响应。广播呼叫地址的含意通常在第二个字节说明(图16)

 这里要考虑两种情况

• 当最低位B 是0

• 当最低位B 是1

当位B 是0 时,第二个字节的定义如下

  • 0000 0110 (06h): 通过硬件写入和复位从机地址的可编程部分。接收到这个两字节序列时所有打算响应这个广播呼叫地址的器件将复位并接受它们地址的可编程部分。要采取预防措施确保器件不会在加上电源电压后将SDA 或SCL 线拉低因为这些低电平会阻塞总线。
  • 0000 0100 (04h): 通过硬件写从机地址的可编程部分。所有通过硬件定义地址可编程部分和响应广播呼叫地址的器件会在接收这两个字节序列时锁存可编程的部分。器件不会复位。
  • 0000 0000 (00h): 这个代码不允许在第二个字节使用

3.13 软件复位

在广播呼叫(0000 0000)之后,发送0000 0110(06h)作为第二个字节会导致软件复位。 此功能是可选的,并非所有设备都响应此命令。 在接收到这个2字节序列时,所有设计用于响应广播呼叫地址的设备都会复位并接收其地址的可编程部分。 必须采取预防措施以确保器件在施加电源电压后不会下拉SDA或SCL线路,因为这些低电平会阻塞总线。

3.14 起始字节

微控制器可以通过两种方式连接到I2C总线。 具有片上硬件I2C总线接口的微控制器可以编程为仅被来自总线的请求中断。 当设备没有这样的接口时,它必须通过软件持续监控总线。 显然,微控制器监控或轮询总线的次数越多,执行其预期功能所花费的时间就越少。

因此,快速硬件设备和依赖软件轮询的相对较慢的微控制器之间存在速度差异。

在这种情况下,数据传输之前可以有一个比正常情况长得多的启动程序(参见图19)。 启动程序包括:

• A START condition (S)

• A START byte (0000 0001)

• An acknowledge clock pulse (ACK)

• A repeated START condition (Sr).

 

在要求总线访问的主机发送起始条件S 后,发送起始字节(00000001), 因此另一个微控制器可以采样以低采样速率采样SDA 线,直到在启动字节检测到7 个0 。在SDA 线检测到这个低电平后,微控制器切换到一个更高的采样速率寻找用于同步的重复起始条件Sr。

接收到重复起始条件Sr 后硬件接收器会复位,从而忽略了起始字节。

3.15 总线清除

在极少数情况下,时钟(SCL)被置为低电平,如果您的I2C器件具有硬件复位输入,则优先过程是使用HW复位信号复位总线。 如果I2C器件没有硬件复位输入,则重启器件电源以激活强制内部上电复位(POR)电路。

如果数据线(SDA)保持低电平,主机应发送9个时钟脉冲。 保持总线为低电平的器件应该在这九个时钟内的某个时间释放它。 如果没有,则使用硬件复位或循环电源清除总线。

4. 超快速模式I2C总线协议

5. I2C总线通信协议的其他用途

I2C总线用作多个系统架构的通信协议。 除基本I2C规范外,这些体系结构还添加了命令集和特定于应用程序的扩展。 通常,由于协议和物理接口相同,因此可以在这些架构中的任何一个中使用简单的I2C总线设备,例如I / O扩展器。

5.1 CBUS 兼容性

CBUS接收器可以连接到标准模式I2C总线。 但是,必须连接称为DLEN的第三条总线,并省略应答位。 通常,I2C传输是8位字节的序列; 兼容CBUS设备具有不同的格式。

在混合总线结构中,I2C总线设备不得响应CBUS消息。 因此,保留了没有I2C总线兼容设备响应的特殊CBUS地址(0000 001X)。 在传输CBUS地址之后,可以激活DLEN线路并发送CBUS格式传输。 在STOP条件之后,所有设备都准备好接受数据。

主发送器可以在发送CBUS地址后发送CBUS格式。 传输以STOP条件结束,由所有设备识别。

备注:如果CBUS配置已知,并且未预见到与CBUS兼容设备的扩展,则允许设计人员根据所用设备的特定要求调整保持时间。

5.2 SMBus  - 系统管理总线

SMBus使用I2C硬件和I2C硬件寻址,但增加了用于构建特殊系统的二级软件。 特别是,其规范包括可以进行动态地址分配的地址解析协议。

硬件和软件的动态重新配置允许总线设备“热插拔”并立即使用,无需重新启动系统。 设备会自动识别并分配唯一的地址。 这种优势导致即插即用的用户界面。 在这两种协议中,系统主机和系统中可以具有主设备或从设备的名称和功能的所有其他设备之间存在非常有用的区别。

SMBus现在在大多数PC中用作系统管理总线。 它由英特尔和其他公司于1995年开发,它修改了一些I2C电气和软件特性,以便与便携式设备快速降低的电源预算更好地兼容。 SMBus还具有“高功率”版本2.0,包括4 mA吸收电流,除非上拉电阻的大小符合I2C总线电平,否则不能由I2C芯片驱动。

未完待续。。。

6. 总线速度

最初,I2C总线限制为100 kbit / s操作。 随着时间的推移,规范已经增加了几个,因此现在有五种运行速度类别。 标准模式,快速模式(Fm),快速模式加(Fm +)和高速模式(Hs模式)设备向下兼容 - 任何设备都可以在降低总线速度。

超快速模式设备与以前的版本不兼容,因为总线是单向的。

双向总线:

 - Standard Mode (Sm), bit rates up to 100 kbit / s

 - Fast mode (Fm), bit rates up to 400 kbit / s

 - Fast mode plus (Fm +), bit rates up to 1 Mbit / s

 - high speed mode (Hs mode), the bit rate of up to 3.4 Mbit / s.

Unidirectional bus:

 - ultra-fast mode (UFm), bit rates up to 5 Mbit / s

 

To be continued. . .

 

 

 

 

 

Guess you like

Origin blog.csdn.net/XieWinter/article/details/91903678