I2C协议详解 (Based Philips I2C spec)

前言

Version 1.0 - 1992

此版本的 1992 I2C 总线规范包括以下修改:

  • 省略了软件对从地址的编程。 这个功能的实现比较复杂,没有使用过。
  • 省略了“低速模式”。 事实上,这种模式是整个 I2C 总线规范的一个子集,不需要明确指定。
  • 增加了快速模式。 这允许将比特率提高四倍,最高可达 400 kbit/s。 快速模式设备向下兼容,即它们可用于 0 至 100 kbit/s I2C 总线系统。
  • 增加了 10 位寻址。 这允许 1024 个额外的从地址。
  • 指定用于快速模式设备的斜率控制和输入滤波以改善 EMC 行为。
    注意:100 kbit/s I2C 总线系统和 100 kbit/s 设备均未更改。

Version 2.0 - 1998

I2C 总线已成为事实上的世界标准,现已在 1000 多种不同的 IC 中实施,并已授权给 50 多家公司。然而,当今的许多应用需要更高的总线速度和更低的电源电压。 I2C 总线规范的此更新版本满足这些要求并包括以下修改:

  • 添加了高速模式(Hs-mode)。这允许将比特率提高到 3.4 Mbit/s。 Hs 模式设备可以与一个 I2C 总线系统上的快速和标准模式设备混合使用,比特率从 0 到 3.4 Mbit/s。
  • 电源电压为 2 V 及以下的器件的低输出电平和迟滞已经过调整以满足所需的噪声容限并与更高电源电压的器件保持兼容。
  • 省略了快速模式器件输出级的 6 mA 时 0.6 V 要求。
  • 新设备的固定输入电平被总线电压相关电平所取代。
  • 添加了双向电平转换器的应用信息。

Version 2.1 - 2000

I2C 总线规范的 2.1 版包括以下小的修改:

  • 在 Hs 模式下重复 START 条件后,可以延长时钟信号 SCLH(参见第 13.2 节和图 22、25 和 32)。
  • 放宽了 Hs 模式中的一些时序参数(见表 6 和 7)。

I2C 总线使设计人员和制造商受益

在消费电子、电信和工业电子领域,看似无关的设计之间往往存在许多相似之处。例如,几乎每个系统都包括:

  • 一些智能控制,通常是单片机
  • 通用电路,如 LCD 驱动器、远程 I/O 端口、RAM、EPROM 或数据转换器
  • 面向应用的电路,例如用于无线电和视频系统的数字调谐和信号处理电路,或用于音频拨号电话的 DTMF 发生器。

为了利用这些相似性为系统设计人员和设备制造商带来好处,同时最大限度地提高硬件效率和电路简单性,飞利浦开发了一种简单的双向 2 线总线,用于高效的 IC 间控制。该总线称为 Inter IC 或 I2C 总线。目前,飞利浦的 IC 系列包括 150 多种 CMOS 和双极 I2C 总线兼容类型,用于执行前面提到的所有三个类别的功能。所有 I2C 总线兼容设备都包含一个片上接口,允许它们通过 I2C 总线直接相互通信。这种设计理念解决了设计数字控制电路时遇到的许多接口问题。

以下是 I2C 总线的一些特性:

  • 只需要两条公交线路;一条串行数据线 (SDA) 和一条串行时钟线 (SCL)
  • 连接到总线的每个设备都可以通过唯一的地址进行软件寻址,并且始终存在简单的主/从关系;主站可以作为主发送器或主接收器运行
  • 真正的多主机总线,包括冲突检测和仲裁,以防止两个或多个主机同时启动数据传输时数据损坏
  • 串行、面向 8 位的双向数据传输在标准模式下最高可达 100 kbit/s,在快速模式下最高可达 400 kbit/s,或在快速模式下最高可达 3.4 Mbit/s。高速模式
  • 片上滤波抑制总线数据线上的尖峰信号以保持数据完整性
  • 可连接到同一总线的IC 数量仅受最大总线电容400 pF 的限制。
    图 1 显示了 I2C 总线应用的两个示例

设计师的好处

I2C 总线兼容 IC 允许系统设计直接从功能框图快速进展到原型。此外,由于它们直接“夹”到 I2C 总线上,而无需任何额外的外部接口,因此它们允许简单地通过将 IC 夹到总线上或从总线上“夹取”或“松开”IC 来修改或升级原型系统。
以下是对设计人员特别有吸引力的 I2C 总线兼容 IC 的一些特性:

  • 框图上的功能块与实际IC对应;设计从框图到最终原理图快速进行。
  • 无需设计总线接口,因为I2C 总线接口已经集成在片上。
  • 集成寻址和数据传输协议允许系统完全由软件定义
  • 相同的 IC 类型通常可以用于许多不同的应用
  • 随着设计人员迅速熟悉以 I2C 总线兼容 IC 为代表的常用功能块,设计时间减少
  • 可以在系统中添加或移除 IC,而不会影响总线上的任何其他电路
  • 故障诊断和调试简单;故障可立即追踪
  • 通过组装可重用的软件模块库,可以减少软件开发时间。
    除了这些优势之外,I2C 总线兼容系列中的 CMOS IC 还为设计人员提供了特别适合便携式设备和电池供电系统的特殊功能。
    他们都有:
  • 极低的电流消耗
  • 高抗噪性
  • 宽电源电压范围
  • 宽工作温度范围。

图 1 I2C 总线应用的两个例子
图 1 I2C 总线应用的两个例子
(a) 高性能高集成电视机
(b) DECT 无绳电话基站。

制造商的好处

I2C 总线兼容 IC 不仅可以帮助设计人员,还可以为设备制造商带来广泛的好处,因为:

  • 简单的 2 线串行 I2C 总线最大限度地减少了互连,因此 IC 的引脚更少,PCB 走线也没有那么多;结果 - 更小、更便宜的 PCB
  • 完全集成的 I2C 总线协议消除了对地址解码器和其他“胶合逻辑”(胶合逻辑是数字电路的特殊形式,它作为中间接口,允许不同类型的逻辑芯片或电路一起工作)的需要
  • I2C 总线的多主功能允许通过外部连接到装配线对最终用户设备进行快速测试和校准
  • 采用 SO(小型)、VSO(超小型)和 DIL 封装的 I2C 总线兼容 IC 的可用性进一步降低了空间需求。
    这些只是其中的一些好处。此外,I2C 总线兼容 IC 允许简单构建设备变体并轻松升级以保持设计最新,从而提高了系统设计的灵活性。通过这种方式,可以围绕基本模型开发整个设备系列。只需将适当的 IC 夹在总线上,就可以对新设备或增强功能模型(即扩展内存、远程控制等)进行升级。如果需要更大的 ROM,只需从我们全面的产品系列中选择具有更大 ROM 的微控制器即可。随着新 IC 取代旧 IC,可以轻松地为设备添加新功能或通过简单地从总线上拆下过时的 IC 并剪辑其后继 IC 来提高其性能。

I2C 总线规范简介

对于面向 8 位的数字控制应用,例如需要微控制器的应用,可以建立某些设计标准:

  • 一个完整的系统通常由至少一个微控制器和其他外围设备如存储器和I/O扩展器组成
  • 连接系统内各种设备的成本必须最小化
  • 执行控制功能的系统不需要高速数据传输
  • 整体效率取决于所选择的设备和互连总线结构的性质。

为了生产满足这些标准的系统,需要串行总线结构。尽管串行总线不具备并行总线的吞吐量能力,但它们确实需要更少的布线和更少的 IC 连接引脚。然而,总线不仅仅是一条互连线,它包含了系统内通信的所有格式和程序。

在串行总线上相互通信的设备必须具有某种形式的协议,以避免混淆、数据丢失和信息阻塞的所有可能性。快速设备必须能够与慢速设备通信。系统不得依赖与其相连的设备,否则将无法进行修改或改进。还必须设计一个程序来决定哪个设备将在何时控制总线。并且,如果具有不同时钟速度的不同设备连接到总线,则必须定义总线时钟源。所有这些标准都包含在 I2C 总线的规范中。

I2C 总线概念

I2C 总线支持任何 IC 制造工艺(NMOS、CMOS、双极)。串行数据 (SDA) 和串行时钟 (SCL) 这两条线在连接到总线的设备之间传输信息。每个设备都由一个唯一的地址识别(无论是微控制器、LCD 驱动程序、存储器还是键盘接口),并且可以作为发送器或接收器运行,具体取决于设备的功能。显然,LCD 驱动器只是一个接收器,而存储器既可以接收数据,也可以发送数据。除了发送器和接收器之外,设备在执行数据传输时也可以被视为主机或从机(见表 1)。主机是在总线上启动数据传输并生成时钟信号以允许传输的设备。那时,任何寻址的设备都被视为从设备。

i2c总线术语定义
I2C 总线是多主总线。 这意味着可以连接多个能够控制总线的设备。 由于主机通常是微控制器,让我们考虑连接到 I2C 总线的两个微控制器之间的数据传输情况(见图 2)。

这突出了 I2C 总线上的主从关系和接收器-发送器关系。 需要注意的是,这些关系不是永久的,而仅取决于当时数据传输的方向。 数据传输过程如下:

  1. 假设微控制器 A 要向微控制器 B 发送信息:
  • 微控制器A(主),地址微控制器B(从)
  • 微控制器A(主-发送器),向微控制器B(从-接收器)发送数据
  • 微控制器A终止传输
  1. 如果微控制器 A 要接收来自微控制器 B 的信息:
  • 微控制器 A(主)寻址微控制器 B(从)
  • 微控制器 A(主接收器)从微控制器 B(从发送器)接收数据
  • 微控制器A终止传输。

即使在这种情况下,主机(微控制器 A)也会生成时序并终止传输。

将多个微控制器连接到 I2C 总线的可能性意味着多个主设备可以同时尝试启动数据传输。
为了避免此类事件可能导致的混乱,已经制定了仲裁程序。此过程依赖于所有 I2C 接口到 I2C 总线的线与连接。

如果两个或更多主机试图将信息放到总线上,第一个产生“1”而另一个产生“0”将失去仲裁。仲裁期间的时钟信号是由主机使用线与连接到 SCL 线生成的时钟的同步组合(有关仲裁的更多详细信息,请参阅第 8 节)。
使用两个微控制器的i2c总线配置的示例。
图2. 使用两个微控制器的i2c总线配置的示例。

在 I2C 总线上生成时钟信号始终是主设备的责任; 在总线上传输数据时,每个主设备都会生成自己的时钟信号。 来自主机的总线时钟信号只有在被慢速从设备拉长时钟线时才能改变,或者在仲裁发生时被另一个主机延长。

通用特性

SDA 和 SCL 都是双向线路,通过电流源或上拉电阻连接到正电源电压(见图 3)。 当总线空闲时,两条线路都是高电平。 连接到总线的设备的输出级必须具有漏极开路或集电极开路才能执行线与功能。 I2C 总线上的数据可以在标准模式下以高达 100 kbit/s、在快速模式下高达 400 kbit/s 或高速模式下高达 3.4 Mbit/s 的速率传输。 连接到总线的接口数量完全取决于 400 pF 的总线电容限制。 有关高速模式主设备的信息,请参见第 13 节。

位传输

由于可以连接到 I2C 总线的不同技术设备(CMOS、NMOS、双极)的多样性,逻辑“0”(低)和“1”(高)的电平不是固定的,取决于 相关的 VDD 电平(有关电气规范,请参见第 15 节)。 每传输一个数据位都会产生一个时钟脉冲。

数据有效性

在时钟的高电平期间,SDA 线上的数据必须是稳定的。 数据线的HIGH或LOW状态只有在SCL线上的时钟信号为LOW时才能改变(见图4)。
在这里插入图片描述

图 3 标准模式和快速模式设备与 I2C 总线的连接
在这里插入图片描述
图 4 I2C 总线上的位传输

开始和停止条件

在 I2C 总线的过程中,会出现定义为 START (S) 和 STOP(P) 条件的独特情况(见图 5)。

SCL 为高时 SDA 线上从高到低的转换就是这样一种独特的情况。 这种情况表明存在 START 条件。

SCL 为高电平时 SDA 线上的低电平到高电平转换定义了停止条件。

START 和 STOP 条件始终由主机生成。 在 START 条件之后,总线被认为是忙碌的。 在 STOP 条件之后的某个时间,总线被认为再次空闲。 这种总线空闲情况在第 15 节中详细说明。

如果生成重复的 START (Sr) 而不是 STOP 条件,则总线保持忙碌。 在这方面,START (S) 和重复 START (Sr) 条件在功能上是相同的(见图 10)。 因此,对于本文档的其余部分,S 符号将用作通用术语来表示 START 和重复的 START 条件,除非 Sr 特别相关。

如果连接到总线的设备包含必要的接口硬件,则它们很容易检测 START 和 STOP 条件。 然而,没有这种接口的微控制器必须在每个时钟周期至少采样两次 SDA 线以检测转换。

在这里插入图片描述
图 5 START 和 STOP 条件

传输数据

字节格式

SDA 线上的每个字节都必须是 8 位长,而每次传输要传输的字节数是不受限制的,但每个字节后都必须跟一个确认位。数据首先以最高有效位 (MSB) 传输(见图 6)。如果从机在执行其他一些功能(例如处理内部中断)之前无法接收或发送另一个完整字节的数据,则它可以将时钟线 SCL 保持为低电平以强制主机进入等待状态。当从设备准备好接收另一个字节的数据并释放时钟线 SCL 时,数据传输将继续。

在某些情况下,允许使用与 I2C 总线格式不同的格式(例如,对于 CBUS 兼容设备)。以此类地址开头的消息可以通过生成 STOP 条件来终止,即使在传输字节期间也是如此。在这种情况下,不会产生确认(参见第 10.1.3 节)。

确认

带有确认的数据传输是强制性的。与确认相关的时钟脉冲由主机生成。发送器在确认时钟脉冲期间释放 SDA 线(高电平)。

接收器必须在确认时钟脉冲期间拉低 SDA 线,以便在该时钟脉冲的高电平期间保持稳定的低电平(见图 7)。当然,还必须考虑建立和保持时间(在第 15 节中指定)。

通常,已被寻址的接收器必须在接收到每个字节后生成一个确认,除非消息以 CBUS 地址开始(参见第 10.1.3 节)。

当从机不确认从机地址时(例如,它无法接收或发送,因为它正在执行某些实时功能),数据线必须由从机保持为高电平。然后,主机可以生成一个停止条件来中止传输,或者生成一个重复的 START 条件来开始新的传输。

如果从机接收器确实确认了从机地址,但在传输的某个时间后无法接收更多数据字节,则主机必须再次中止传输。这由从机在接下来的第一个字节上生成不确认来指示。从设备将数据线保持为高电平,而主设备会产生一个 STOP 或重复的 START 条件。

如果主接收器参与传输,它必须通过不在从从机时钟输出的最后一个字节生成确认来向从机发送器发出数据结束信号。从发送器必须释放数据线以允许主发送停止或重复启动条件。
在这里插入图片描述
图 6 I2C 总线上的数据传输

在这里插入图片描述
图 7 I2C 总线上的确认

仲裁和时钟生成

同步

所有主机在 SCL 线上生成自己的时钟,以在 I2C 总线上传输消息。 数据仅在时钟的高电平期间有效。 因此需要一个定义的时钟来进行逐位仲裁程序。

使用 I2C 接口与 SCL 线的线与连接来执行时钟同步。 这意味着 SCL 线上的高电平到低电平转换将导致相关设备开始对它们的低电平周期进行计数,一旦设备时钟变为低电平,它将保持 SCL 线处于该状态,直到达到时钟高电平状态 (见图8)。 但是,如果另一个时钟仍在其低电平周期内,则该时钟从低电平到高电平的转换可能不会改变 SCL 线的状态。 因此,SCL 线将被具有最长低电平周期的器件保持低电平。 低电平周期较短的设备在此期间进入高电平等待状态。
在这里插入图片描述
图8 仲裁过程中的时钟同步

当所有相关设备都计算出它们的低电平周期时,时钟线将被释放并变为高电平。器件时钟和 SCL 线的状态之间将没有区别,所有器件将开始计数它们的高电平周期。第一个完成其高电平周期的设备将再次将 SCL 线拉低。

这样,一个同步的SCL时钟就产生了,它的LOW周期由时钟LOW周期最长的器件决定,HIGH周期由时钟HIGH周期最短的器件决定。

仲裁

只有当总线空闲时,主机才可以开始传输。两个或多个主机可能会在 START 条件的最小保持时间 (tHD;STA) 内生成一个 START 条件,从而为总线产生一个定义的 START 条件。

仲裁发生在 SDA 线上,而 SCL 线处于高电平,这样发送高电平的主机,而另一个发送低电平的主机将关闭其 DATA 输出级,因为电平打开总线不对应于它自己的水平。

仲裁可以持续很多位。它的第一阶段是地址位的比较(寻址信息在第 10 和 14 节中给出)。如果主机都试图寻址相同的设备,仲裁继续进行,如果它们是主机发送器,则比较数据位,如果它们是主机接收器,则比较确认位。由于 I2C 总线上的地址和数据信息由获胜的主机决定,因此在仲裁过程中不会丢失任何信息。

失去仲裁的主机可以产生时钟脉冲,直到它失去仲裁的字节结束。

由于 Hs 模式主机具有唯一的 8 位主机代码,因此它始终会在第一个字节期间完成仲裁(参见第 13 节)。

如果主机还包含从机功能并且在寻址阶段失去仲裁,则获胜的主机可能正在尝试对其进行寻址。因此,丢失的主设备必须立即切换到其从设备模式。

图 9 显示了两个主机的仲裁程序。当然,可能涉及更多(取决于连接到总线的主机数量)。当产生 DATA 1 的主机的内部数据电平与 SDA 线上的实际电平之间存在差异时,其数据输出被关闭,这意味着高电平输出电平随后连接到总线。这不会影响获胜主机发起的数据传输。
在这里插入图片描述
图 9 两个主机的仲裁程序

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

在串行传输期间,如果在重复的 START 条件或 STOP 条件发送到 I2C 总线时仲裁程序仍在进行中,则必须特别注意。如果这种情况有可能发生,涉及的主设备必须在格式帧的相同位置发送这个重复的 START 条件或 STOP 条件。换句话说,仲裁是不允许的:

  • 一个重复的起始条件和一个数据位
  • 一个停止条件和一个数据位
  • 重复的START 条件和STOP 条件。

从机不参与仲裁程序。

使用时钟同步机制作为握手

除了在仲裁过程中使用之外,时钟同步机制还可用于使接收器能够处理字节级或位级的快速数据传输。

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

在位级别上,带有或不带有有限 I2C 总线硬件的微控制器等设备可以通过延长每个时钟低电平周期来减慢总线时钟。因此,任何主站的速度都适合该设备的内部运行速率。

在 Hs 模式下,此握手功能只能在字节级别使用(参见第 13 节)。

具有 7 位地址的格式

数据传输遵循图 10 所示的格式。在 START 条件 (S) 之后,发送从地址。该地址长度为 7 位,后跟第 8 位,即数据方向位 (R/W) - “零”表示传输 (WRITE),“1”表示请求数据 (READ)。数据传输总是由主机产生的停止条件 § 终止。但是,如果主机仍然希望在总线上进行通信,它可以生成重复的 START 条件 (Sr) 并寻址另一个从机,而无需首先生成 STOP 条件。在这样的传输中,读/写格式的各种组合是可能的。
在这里插入图片描述
图 10 完整的数据传输

可能的数据传输格式有:

  • 主发送器传输到从接收器。传输方向不变(见图 11)。
  • 主机在第一个字节后立即读取从机(见图12)。在第一次确认时,主发送器变为主接收器,从接收器变为从发送器。第一个确认仍然由从设备生成。 STOP 条件由主机生成,它之前已发送了一个未确认 (~A)。
  • 组合格式(见图13)。在传输中的方向改变期间,起始条件和从地址都重复,但 R/W 位反转。如果主接收器发送重复的 START 条件,则它之前已经发送了一个未确认 (~A)。

笔记:

  1. 可以使用组合格式,例如,控制串行存储器。在第一个数据字节期间,必须写入内部存储器位置。重复起始条件和从机地址后,即可传输数据。
  2. 所有关于自动递增或递减先前访问的存储器位置等的决定均由设备设计者做出。
  3. 每个字节后跟一个确认位,由序列中的 A 或 A 块指示。
  4. I2C 总线兼容设备必须在接收到 START 或重复的 START 条件时复位其总线逻辑,以便它们都预期从地址的发送,即使这些 START 条件未根据正确格式定位。
  5. START 条件后紧跟 STOP 条件(无效消息)是非法格式。

在这里插入图片描述
图 11 主发送器使用 7 位地址寻址从接收器。
传输方向不变
在这里插入图片描述
图 12 主机在第一个字节后立即读取从机

在这里插入图片描述
图 13 组合格式

7 位寻址

I2C 总线的寻址程序是这样的,在 START 条件之后的第一个字节通常决定主机将选择哪个从机。例外是可以寻址所有设备的“通用调用”地址。使用此地址时,理论上所有设备都应以确认响应。但是,可以使设备忽略此地址。然后,广播调用地址的第二个字节定义了要采取的动作。此过程在第 10.1.1 节中有更详细的解释。有关 10 位寻址的信息,请参见第 14 节

第一个字节中位的定义

第一个字节的前七位构成从地址(见图 14)。第 8 位是 LSB(最低有效位)。它决定了消息的方向。第一个字节的最低有效位置的“零”表示主机将向选定的从机写入信息。这个位置的“一”意味着主站将从从站读取信息。

发送地址时,系统中的每个设备都会将 START 条件后的前七位与其地址进行比较。如果它们匹配,根据 R/W 位,设备认为自己被主机寻址为从接收器或从发送器。

从地址可以由固定部分和可编程部分组成。由于系统中很可能会有多个相同的设备,从地址的可编程部分可以使尽可能多的此类设备连接到 I2C 总线。器件可编程地址位的数量取决于可用引脚的数量。例如,如果一个设备有 4 个固定地址位和 3 个可编程地址位,则总共 8 个相同的设备可以连接到同一条总线上。

I2C 总线委员会协调 I2C 地址的分配。可以从封底所列的飞利浦代表处获取更多信息。两组 8 个地址(0000XXX 和 1111XXX)被保留用于表 2 所示的目的。从地址的位组合 11110XX 被保留用于 10 位寻址(见第 14 节)。
在这里插入图片描述
图 14 START 程序后的第一个字节。

在这里插入图片描述
笔记

  1. 在接收到 START 字节时不允许任何设备进行确认。
  2. 预留了CBUS 地址,以便在同一系统中实现CBUS 兼容设备和I2C 总线兼容设备的混合。 I2C 总线兼容设备在接收到此地址时不允许响应。
  3. 包含为不同总线格式保留的地址,以允许 I2C 和其他协议混合使用。只有可以使用此类格式和协议的 I2C 总线兼容设备才允许响应此地址。

一般呼叫地址

通用调用地址用于寻址连接到 I2C 总线的每个设备。但是,如果设备不需要通用调用结构中提供的任何数据,它可以通过不发出确认来忽略该地址。如果设备确实需要来自通用调用地址的数据,它将确认该地址并作为从接收器运行。每个能够处理此数据的从接收器都会确认第二个和随后的字节。不能处理这些字节之一的从设备必须通过不确认来忽略它。通用调用地址的含义总是在第二个字节中指定(见图 15)。
在这里插入图片描述
图 15 通用调用地址格式

有两种情况需要考虑:
· 当最低有效位 B 为“零”时。
· 当最低有效位 B 为“1”时。
当位 B 为“零”时;第二个字节具有以下定义:
· 00000110 (H‘06’)。通过硬件复位和写入从机地址的可编程部分。在接收到这个 2 字节序列时,所有设计为响应广播地址的设备将复位并接收其地址的可编程部分。必须采取预防措施以确保设备在施加电源电压后不会拉低 SDA 或 SCL 线,
因为这些低电平会阻塞总线。
· 00000100 (H‘04’)。由硬件写入从机地址的可编程部分。所有通过硬件定义其地址的可编程部分(并响应通用调用地址)的设备将在接收到这两个字节序列时锁存该可编程部分。设备不会重置。
· 00000000 (H‘00’)。此代码不允许用作第二个字节。
相应的器件数据表中公布了编程过程的序列。

其余代码尚未修复,设备必须忽略它们。

当位 B 为“1”时; 2 字节序列是“硬件通用调用”。这意味着该序列是由硬件主设备传输的,例如键盘扫描器,它不能被编程为传输所需的从地址。由于硬件主机事先不知道消息必须传输到哪个设备,它只能生成这个硬件通用调用和它自己的地址 - 向系统标识自己(见图 16)。

第二个字节中剩余的七位包含硬件主机的地址。该地址由连接到总线的智能设备(例如微控制器)识别,然后该总线将引导来自硬件主机的信息。如果硬件主机也可以作为从机,则从机地址与主机地址相同。

在这里插入图片描述
图 16 来自硬件主发送器的数据传输

在某些系统中,替代方案可能是在系统复位后将硬件主发送器设置为从接收器模式。通过这种方式,系统配置主机可以告诉硬件主机发送器(现在处于从接收器模式)必须将数据发送到哪个地址(见图 17)。在此编程过程之后,硬件主机保持在主机发送器模式。

起始字节

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

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

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

  • 一个开始条件(S)
  • 一个起始字节(00000001)
  • 一个确认时钟脉冲(ACK)
  • 重复的开始条件 (Sr)。
    在这里插入图片描述
    图 17 硬件传输器的数据传输,能够将数据直接转储到从设备。
    (a) 配置master发送转储地址给硬件master
    (b) 硬件主机将数据转储到选定的从机。
    在这里插入图片描述
    图 18 START 字节程序

在需要总线访问的主机发送 START 条件 S 后,发送 START 字节 (00000001)。因此,另一个微控制器可以以低采样率对 SDA 线进行采样,直到检测到 START 字节中的七个零之一。在 SDA 线上检测到这个低电平后,微控制器可以切换到更高的采样率以找到重复的起始条件 Sr,然后将其用于同步。

硬件接收器将在收到重复的起始条件 Sr 时复位,因此将忽略起始字节。

在 START 字节之后产生一个与确认相关的时钟脉冲。这只是为了符合总线上使用的字节处理格式。不允许任何设备确认 START 字节。

CBUS 兼容性

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

在混合总线结构中,I2C 总线设备不得响应 CBUS 消息。为此,保留了一个特殊的 CBUS 地址 (0000001X),I2C 总线兼容设备不会响应该地址。在传输 CBUS 地址后,DLEN 线路可以被激活并发送 CBUS 格式的传输(见图 19)。在 STOP 条件之后,所有设备再次准备好接受数据。

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

注意:如果 CBUS 配置已知,并且没有预见到使用 CBUS 兼容设备进行扩展,则允许设计人员根据所用设备的特定要求调整保持时间。
在这里插入图片描述
图 19 使用 CBUS 发送器/接收器传输的数据格式

标准模式 I2C 总线规范的扩展

标准模式 I2C 总线规范,其数据传输速率高达 100 kbit/s 和 7 位寻址,自 1980 年代初就已存在。这一概念迅速流行,如今已被全世界接受为事实上的标准,飞利浦半导体和其他供应商提供数百种不同的兼容 IC。为了满足对更高速度的需求,并为越来越多的新设备提供更多的从地址,标准模式 I2C 总线规范经过多年升级,现在可提供以下扩展:
· 快速模式,比特率高达400 kbit/s。
· 高速模式(Hs-mode),比特率高达3.4 Mbit/s。
· 10 位寻址,允许使用多达 1024 个附加从机地址。

扩展常规 I2C 总线规范有两个主要原因:

· 当今的许多应用需要传输大量串行数据,并且需要远远超过 100 kbit/s(标准模式)甚至 400 kbit/s(快速模式)的比特率。由于半导体技术的不断改进,I2C 总线设备现在可提供高达 3.4 Mbit/s(Hs 模式)的比特率,而接口电路的制造成本没有任何明显增加。

· 由于 7 位寻址方案可用的 112 个地址中的大部分很快就被分配了,很明显需要更多的地址组合
防止为新设备分配从地址时出现问题。新的 10 位寻址方案解决了这个问题,该方案允许可用地址增加约 10 倍。
具有快速或 Hs 模式 I2C 总线接口的新从设备可以具有 7 位或 10 位从地址。如果可能,最好使用 7 位地址,因为它是最便宜的硬件解决方案,并且消息长度最短。无论是 F/S 或 Hs 模式系统,具有 7 位和 10 位地址的设备都可以在同一个 I2C 总线系统中混合使用。现有和未来的主机都可以生成 7 位或 10 位地址。

快速模式

对于快速模式 I2C 总线规范,标准模式 I2C 总线规范中引用的 SDA 和 SCL 线路的协议、格式、逻辑电平和最大容性负载保持不变。具有 I2C 总线接口的新设备必须至少满足快速或 Hs 模式规范的最低要求(参见第 13 节)。
快速模式设备可以以高达 400 kbit/s 的速度接收和发送。最低要求是它们可以与 400 kbit/s 传输同步;然后他们可以延长 SCL 信号的低电平时间以减慢传输速度。快速模式设备向下兼容,可以与 0 到 100 kbit/s I2C 总线系统中的标准模式设备进行通信。然而,由于标准模式设备不向上兼容,因此不应将它们合并到快速模式 I2C 总线系统中,因为它们无法遵循更高的传输速率并且会出现不可预测的状态。

与标准模式相比,快速模式 I2C 总线规范具有以下附加功能:

  • 最大比特率增加到 400 kbit/s。
  • 串行数据 (SDA) 和串行时钟 (SCL) 信号的时序已被调整。没有必要
    与其他总线系统(如 CBUS)的兼容性,因为它们无法以更高的比特率运行。
  • 快速模式器件的输入在 SDA 和 SCL 输入端包含尖峰抑制和施密特触发器。
  • 快速模式器件的输出缓冲器结合了 SDA 和 SCL 信号下降沿的斜率控制。
  • 如果快速模式设备的电源被关闭,SDA 和 SCL I/O 引脚必须悬空,以免阻碍总线。
  • 连接到总线的外部上拉器件必须适应快速模式 I2C 总线较短的最大允许上升时间。对于高达 200 pF 的总线负载,每条总线的上拉器件可以是一个电阻器;对于 200 pF 和 400 pF 之间的总线负载,上拉设备可以是电流源(最大 3 mA)或开关电阻电路(见图 43)。

Hs-模式

高速模式(Hs 模式)设备在 I2C 总线传输速度方面实现了巨大的飞跃。 Hs 模式设备可以以高达 3.4 Mbit/s 的比特率传输信息,但它们仍然与快速或标准模式(F/S 模式)设备完全向下兼容,以便在混合速度总线中进行双向通信系统。除了在 Hs 模式传输期间不执行仲裁和时钟同步之外,与 F/S 模式系统保持相同的串行总线协议和数据格式。根据应用,新设备可能具有快速或 Hs 模式 I2C 总线接口,但 Hs 模式设备是首选,因为它们可以设计用于更多应用。

高速传输

为了实现高达 3.4 Mbit/s 的位传输,对常规 I2C 总线规范进行了以下改进:

  • Hs 模式主器件有一个用于 SDAH 信号的开漏输出缓冲器,以及 SCLH 输出 (1) 上的开漏下拉和电流源上拉电路的组合。该电流源电路缩短了 SCLH 信号的上升时间。任何时候都只启用一个主设备的电流源,并且仅在 Hs 模式期间启用。

  • 在多主机系统中,在 Hs 模式传输期间不执行仲裁或时钟同步,这加快了位处理能力。仲裁程序总是在 F/S 模式中的前一个主码传输之后结束。

  • Hs 模式主设备产生一个高低比为 1 比 2 的串行时钟信号。这减轻了建立和保持时间的时序要求。

  • 作为一种选择,Hs 模式主设备可以有一个内置的桥接器(1)。在 Hs 模式传输期间,Hs 模式器件的高速数据 (SDAH) 和高速串行时钟 (SCLH) 线通过该桥与 F/S 模式器件的 SDA 和 SCL 线分开。这减少了 SDAH 和 SCLH 线路的容性负载,从而导致更快的上升和下降时间。

  • Hs 模式从设备和F/S 模式从设备之间的唯一区别是它们运行的​​速度。 Hs 模式从器件在 SCLH 和 SDAH 输出上具有开漏输出缓冲器。 SCLH 引脚上的可选下拉晶体管可用于延长 SCLH 信号的低电平,尽管这仅在 Hs 模式传输中的确认位之后才允许。

  • Hs 模式器件的输入在 SDAH 和 SCLH 输入端包含尖峰抑制和施密特触发器。

  • Hs 模式器件的输出缓冲器包含对 SDAH 和 SCLH 信号下降沿的斜率控制。

图 20 显示了只有 Hs 模式设备的系统中的物理 I2C 总线配置。主设备上的引脚 SDA 和 SCL 仅用于混合速度总线系统,在仅 Hs 模式的系统中不连接。在这种情况下,这些引脚可用于其他功能。

可选的串联电阻 Rs 保护 I2C 总线设备的 I/O 级免受总线线路上的高压尖峰影响,并最大限度地减少振铃和干扰。

当总线空闲时,上拉电阻 Rp 将 SDAH 和 SCLH 线保持在高电平,并确保信号在所需的上升时间内从低电平上拉到高电平。对于较高容性总线负载 (>100 pF),电阻 Rp 可以由外部电流源上拉代替,以满足上升时间要求。除非通过确认位进行处理,否则 Hs 模式传输中 SCLH 时钟脉冲的上升时间会被活动主机的内部电流源上拉电路 MCS 缩短。

(1) 正在申请专利。
在这里插入图片描述
(1) SDA 和 SCL 在这里不使用,但可以用于其他功能。
(2) 输入过滤器。
(3) 只有活动的主机才能使能其电流源上拉电路
(4) 虚线晶体管是可选的漏极开路输出,可以延长串行时钟信号 SCLH。
图 20 仅使用 Hs 模式设备的 I2C 总线配置

15. I/O 级和总线的电气规格和时序

15.1 标准模式和快速模式设备

表 4 给出了 F/S 模式 I2C 总线器件的 I/O 电平、I/O 电流、尖峰抑制、输出斜率控制和引脚电容。 I2C 总线时序特性、总线电容和噪声容限 在表 5 中给出。图 31 显示了 I2C 总线的时序定义。
表 5 中指定的 SCL 时钟的最小高电平和低电平周期决定了标准模式设备的 100 kbit/s 和快速模式设备的 400 kbit/s 的最大比特传输速率。 标准模式和快速模式 I2C 总线设备必须能够以自己的最大比特率跟踪传输,或者通过能够以该速度发送或接收,或者通过应用第 8 节中描述的时钟同步程序,这将强制 主机进入等待状态并延长 SCL 信号的低电平周期。 当然,在后一种情况下,比特传输率会降低。
在这里插入图片描述
Note:

  1. 使用不符合预期 I2C 总线系统电平的非标准电源电压的器件必须将其输入电平与上拉电阻 Rp 所连接的 VDD 电压相关联。
  2. 最大 VIH = VDDmax + 0.5 V。
  3. Cb = 一条总线的电容,单位 pF。
  4. 表 5 中引用的 SDA 和 SCL 总线的最大 tf (300 ns) 长于输出级的指定最大 tof (250 ns)。 这允许串联保护电阻 (Rs) 连接在 SDA/SCL 引脚和 SDA/SCL 总线之间,如图 36 所示,而不会超过指定的最大 tf。
  5. 如果 VDD 关闭,Fast-mode 器件的 I/O 引脚不得阻碍 SDA 和 SCL 线。

在这里插入图片描述
Note:

  1. 所有值均指 VIHmin 和 VILmax 水平(见表 4)。
  2. 器件必须在内部为 SDA 信号(参考 SCL 信号的 VIHmin)提供至少 300 ns 的保持时间,以桥接 SCL 下降沿的未定义区域。
  3. 仅当器件不延长 SCL 信号的低电平周期 (tLOW) 时才需要满足最大 tHD;DAT。
  4. 快速模式 I2C 总线设备可用于标准模式 I2C 总线系统,但必须满足 tSU;DAT ³ 250 ns 的要求。 如果器件不延长 SCL 信号的低电平周期,就会自动出现这种情况。 如果这样的设备确实延长了 SCL 信号的低电平周期,它必须将下一个数据位输出到 SDA 线 tr max + tSU;DAT = 1000 + 250 =1250 ns(根据标准模式 I2C 总线规范) 在 SCL 线释放之前。
  5. Cb = 一条总线的总电容,单位 pF。 如果与 Hs 模式器件混合使用,则允许根据表 6 缩短下降时间。
    在这里插入图片描述
  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值