NXP I2C协议翻译
I2C 总线规范和用户手册翻译
文档信息
keywords:
I2C, I2C-bus, Standard-mode, Fast-mode, Fast-mode Plus, Fm+, UltraFast-mode, UFm, High Speed, Hs, inter-IC, SDA, SCL, USDA, USCL摘要:
飞利浦半导体(现为恩智浦半导体)开发了一种简单的双向2线总线,用于高效的芯片间控制,称为芯片间总线或I2C(Inter-Integrated Circuit)总线。 只需要两条总线线:一条串行数据线(SDA)和一条串行时钟线(SCL)。 在标准模式下,可以以高达100 kbit/s的速度进行串行8位导向的双向数据传输。 在快速模式下可达到400 kbit/s,在快速加模式(Fm+)下可达到1 Mbit/s,或者在高速模式下可达到3.4 Mbit/s。 超快速模式是一种单向模式,数据传输速度可高达5 Mbit/s。
表 1 版本历史
版本 | 时间 | 描述 |
---|---|---|
Original | 1982 | 初次发布。 |
v1.0 | 1992 | I2C版本1.0。 |
v2.0 | 1998 | I2C总线已成为一种事实上的世界标准,目前在超过1000种不同的集成电路中实施,并已授权给50多家公司。然而,今天的许多应用需要更高的总线速度和更低的供电电压。这一更新版本的I2C总线规范满足了这些要求 |
v2.1 | 2000 | I2C版本2.1。 |
v3.0 | 20070619 | 许多现代应用程序需要更长的总线和/或更快的速度。为了满足这一需求,推出了快速加模式(Fast-mode Plus),它通过提高多达10倍的驱动强度并将数据速率提高到1 Mbit/s,同时保持向下兼容快速模式(Fast-mode)和标准模式(Standard-mode)的速度和软件命令。 |
v4.0 | 20120213 | I2C版本4.0。 |
v5.0 | 20121009 | I2C版本5.0。 |
v6.0 | 20140404 | I2C版本6.0。 重新计算了 图 41 和 图 42 。 |
v7.0 | 20211001 | I2C版本7.0. 更新了 表 5 。 将这个文档的 master/slave 更新为controller/target 以符合MIPI I3C规范和NXP的包容性语言项目。增加了 第9章 MIPI I3C概述 |
本规范包含了以下章节:
- 第1章 介绍
- 第2章 I2C总线功能
- 第3章 I2C总线协议
- 第4章 I2C总线协议的其他用途
- 第5章 I2C总线速度
- 第6章 IO阶段和总线线路的电气规格及时序
- 第7章 I2C总线设备的电气连接到总线线路
- 第8章 缩写
- 第9章 MIPI I3C概述
- 第10章 法律信息
- 表格
- 图片
- 目录
第1章 介绍
I2C总线是一个世界标准的总线,目前已在超过1000种由50多家公司生产的不同集成电路中实施。 此外,通用I2C总线还用于各种控制架构, 如系统管理总线( System Management Bus - SMBus)、 电源管理总线(Power Management Bus - PMBus)、 智能平台管理接口(Intelligent Platform Management Interface - IPMI)、 显示数据通道( Display Data Channel - DDC)和 先进电信计算架构(Advanced Telecom Computing Architecture - ATCA)。
本文帮助设备和系统设计师理解I2C总线的工作原理,并实现一个可行的应用程序。 描述了各种操作模式。它包含了对I2C总线数据传输、握手和总线仲裁方案的全面介绍。 细节部分涵盖了I2C总线在其每种操作模式下的时序要求和电气规格。
I2C兼容芯片的设计师应该将本文档作为参考,并确保新设备满足本文档中规定的所有限制。 包含I2C设备的系统设计师应审查本文档,并参考各个组件的数据手册。
寻求开发基于I2C解决方案的读者也可能对I3C感兴趣,I3C由MIPI联盟于2017年推出,并得到了NXP的参与和贡献。 MIPI I3C提供了与I2C的向后兼容性,具有更高的速度和更低的功耗,并且为实施者提供了无 royalties 的版本。 更多信息请见 第9章 MIPI I3C概述。
第2章 I2C总线功能
在消费电子、电信和工业电子领域,似乎不相关的设计之间常常有许多相似之处。例如,几乎每个系统都包括:
- 智能控制,通常是单片微控制器
- 通用电路,如LCD和LED驱动器、远程I/O端口、RAM、EEPROM、RTC时钟或A/D和D/A转换器
- 应用导向电路,如无线电和视频系统的数字调谐和信号处理电路、温度传感器和智能卡。
为了利用这些相似性来造福系统设计师和设备制造商,并最大化硬件效率和电路简单性, 飞利浦半导体(现为 NXP 半导体)开发了一种简单的双向两线总线,用于IC间高效控制。 这种总线被称为I2C或I2C总线。所有与I2C总线兼容的设备都包含一个片上接口,使它们能够通过I2C总线直接相互通信。 这种设计概念解决了在设计数字控制电路时遇到的许多接口问题。
以下是 I2C 总线的一些特性:
- 只需两个总线;一条串行数据线(serial data - SDA)和一条串行时钟线(serial clock - SCL)。
- 连接到总线的每个设备都可以通过唯一地址进行软件寻址,并且在任何时候都存在简单的主从机关系; 主机可以作为主机发送端或从机接收器端。
- 它是一个真正的多主机总线,包括冲突检测和仲裁,以防止在两个或多个主机同时发起数据传输时数据损坏。
- 串行、8位导向的双向数据传输有多重传输速度:
- 标准模式下可达到100 kbit/s,
- 在快速模式下可达到400 kbit/s,
- 在快速模式加强版中可达到1 Mbit/s,
- 在高速模式下可达到3.4 Mbit/s。
- 在超快速模式下可达到5 Mbit/s。
- 片上滤波器可以抑制总线数据线上的尖峰,以保持数据完整性。
- 可连接到同一总线的IC数量仅受最大总线电容的限制。在某些条件下可能允许更大的电容。请参阅 7.2 超出最大允许电容运行 。
图 1 显示了I2C总线应用的示例。
1.2 设计优势
I2C总线兼容的电路让系统设计能够迅速从功能框图转向原型。 此外,由于它们直接嵌入在I2C总线上,不需要任何额外的外部接口, 它们允许原型系统通过简单地嵌入或非嵌入行为电路来修改或升级。 以下是一些I2C总线兼容电路对设计师特别有吸引力的特点:
- 功能块在框图上的对应实际的电路;设计可以迅速从框图转向最终原理图。
- 不需要设计总线接口,因为I2C总线接口已经集成在芯片上。
- 集成地址和数据传输协议允许系统完全基于软件定义。
- 相同的电路类型通常可以用于许多不同的应用。
- 设计时间减少,因为设计师迅速熟悉I2C总线兼容IC所代表的常用功能模块
- 电路可以在不影响总线上其他电路的情况下添加或移除。
- 故障诊断和调试简单;故障可以立即追踪。
- 通过组装可重用软件模块的库,可以减少软件开发时间。
除了这些优点,
I2C总线兼容范围内的CMOS电路为设计师提供了特别适合便携设备和电池供电系统的特殊功能。
它们都具有:
- 极低的电流消耗。
- 高抗噪声能力。
- 宽供电电压范围。
- 宽工作温度范围。
1.2 制造优势
I2C总线兼容的电路不仅帮助设计师,它们还给设备制造商带来广泛的好处,因为:
- 简单的2线串行I2C总线最小化了互连,因此集成电路的引脚更少,PCB走线也没有那么多; 这样的结果就是——更小且更便宜的PCB。
- 完全集成的I2C总线协议消除了对地址解码器和其他“粘合逻辑”的需求。
- I2C总线的多主机能力允许通过与生产线的外部连接快速测试和校准终端设备。
- 各种无引脚封装中可用的I2C总线兼容电路进一步减少了空间需求。
这些只是一些好处。 此外,I2C总线兼容的电路通过允许简单构建设备变体和易于升级模型来保持设计的最新性, 从而增加了系统设计的灵活性。 通过这种方式,可以围绕基本模型开发整个设备系列。 新设备或增强功能型号(即扩展内存、遥控等)的升级可以通过简单地将适当的集成电路嵌入在总线上来生产。 如果需要更大的ROM,只需从我们全面的产品范围中选择一个具有更大ROM的微控制器即可。 随着新的电路取代旧的电路,可以通过简单地将过时的电路从总线上卸下并更换新的电路来轻松为设备添加新功能或提高其性能。
1.3 IC设计优势
微控制器的设计师常常面临保留输出引脚的压力。 I2C协议允许连接各种外设,而无需单独的地址或芯片使能信号。 此外,包含I2C接口的微控制器在市场上更具竞争力,因为有丰富的现有外设可供选择。
第3章 I2C总线协议
3.1 标准模式、快速模式、和快速加模式的I2C总线协议
串行数据(SDA)和串行时钟(SCL)在连接到总线的设备之间传递信息。 每个设备都有一个唯一的地址(无论它是微控制器、LCD驱动器、内存还是键盘接口), 并且可以根据设备的功能,作为发送器或接收器工作。LCD驱动器可能仅作为接收器,而内存既可以接收数据也可以发送数据。 除了发送器和接收器,设备在进行数据传输时也可以被视为主机或从机(见 表 2 )。 主机是发起总线上数据传输的设备,并生成时钟信号以允许该传输。 在此时,任何被寻址的设备都被视为从机。
表 2 I2C总线术语描述
术语 | 描述 |
---|---|
发送端 | 这个设备将数据发送到总线上。 |
接收端 | 这个设备从总线上接收数据。 |
主机(Controller) | 这个设备主动发起传输,产生时钟以及终止传输 |
从机(Target) | 这个设备由主机进行控制 |
多主机 | 多个主机可以尝试同时控制总线而不会破坏信息。 |
仲裁 | 确保如果多个主机同时尝试控制总线,则只允许一个主机进行控制,并且传输消息不被损坏的程序。 |
同步 | 同步两个或更多设备时钟信号的程序。 |
I2C总线是一个多主机总线。 这意味着可以连接多个能够控制总线的设备。 由于主机通常是微控制器,图 2 考虑了两个连接到I2C总线的微控制器之间数据传输的情况。
这个例子突出了在I2C总线上的主机-从机和接收端-发送端关系。 请注意,这些关系不是永久的,而是仅取决于当时的数据传输方向。数据传输将按照以下方式进行:
- 假设微控制器A想要向微控制器B发送信息:
- 微控制器A(主机)寻址微控制器B(从机);
- 微控制器A(主机作为发送端)向微控制器B(从机作为接收端)发送数据;
- 微控制器A(主机)终止传输。
- 如果微控制器A想要接收微控制器B的信息:
- 微控制器A(主机)寻址微控制器B(从机);
- 微控制器A(主机作为接收端)从微控制器B(从机作为发送端)接收数据。
- 微控制器A(主机)终止传输。
即使在这种情况下,主机(微控制器 A)也会生成时序并终止传输。
将多个微控制器连接到I2C总线意味着多个主机可能会试图同时发起数据传输。 为避免随之而来的混乱,已经制定了一种仲裁程序。 该程序依赖于所有I2C接口并通过I2C总线的线与连接。
如果两个或更多主机试图将信息放入总线,首先发送bit “1”的主机在另一个主机发送bit “0”时将输掉仲裁。 在仲裁期间的时钟信号是由主机通过线与连接到SCL线生成时钟的同步组合(有关仲裁的更详细信息, 请参见 3.1.8 仲裁 )。
在I2C总线上生成时钟信号始终是主机设备的责任;每个主机在总线上传输数据时生成自己的时钟信号。 来自主机的总线时钟信号仅在被慢速从机拉伸或在发生仲裁时由另一个主机占有时被改变。
表 3 总结了I2C总线规格中强制和可选部分的使用情况以及哪些系统配置使用它们。
表 3 I2C总线功能适用性
M = 强制的;O=可选的;n/a=不适用。
功能 | 配置: 单主机 | 配置: 多主机 | 配置: 从机[3-1] |
---|---|---|---|
START condition | M | M | M |
STOP condition | M | M | M |
Acknowledge | M | M | M |
Synchronization | n/a | M | n/a |
Arbitration | n/a | M | n/a |
Clock stretching | O [3-2] | O [3-2] | O |
7-bit target address | M | M | M |
10-bit target address | O | O | O |
General Call address | O | O | O |
Software Reset | O | O | O |
START byte | n/a | O [3-3] | n/a |
Device ID | n/a | n/a | O |
[3-] :也指一个作为目标的主机。
[3-2] :时钟拉伸是某些从机的一个特性。如果系统中没有从机可以拉伸时钟 (保持SCL低),主机就不需要设计来处理这个程序。
[3-3] : “位翻转”(软件仿真)多主机系统应考虑一个启动字节, 参见 3.1.15 START字节
3.1.1 SDA和SCL信号
SDA和SCL都是双向线路, 通过电流源或上拉电阻连接到正电源电压(见 图 3 )。 当总线空闲时,两条线路都是高电平。连接到总线的设备输出级必须具有开漏 [3-4] 或开集电极 [3-5] 以执行线与功能。 I2C总线上的数据可以在标准模式下以高达100 kbit/s的速度传输,在快速模式下以高达400 kbit/s的速度传输, 在快速加模式下以高达1 Mbit/s的速度传输,或在高速模式下以高达3.4 Mbit/s的速度传输。 总线电容限制了连接到总线的接口数量。
对于单个主机系统,如果总线上没有会拉伸时钟的设备,则主机的SCL输出可以是推挽 [3-5] 驱动器设计。
[3-4] :开漏(open-drain)配置依赖一个单一的场效应管(通常是nMOSFET)。 当该晶体管导通时,输出引脚被拉至地(低电平),当其关闭时,输出引脚则处于浮空状态(未连接)。 为了避免输出引脚在关闭时处于不确定状态,通常会通过上拉电阻将引脚拉至高电平。 由于较强的电流能力、较低的导通电阻和较低的功耗常选用open-drain的方式驱动i2c。
[3-5] :开集(open-collector)配置依赖一个单一的双极性晶体管(通常是BJT), 当基极有电流时,开关导通,输出连接低电平; 当基极没有电流时,开关关闭,输出悬空。 在开关关闭时接上拉电阻将引脚接到高电平。本身无法提供源电流,需要外部电路提供。
[3-5] :push-pull配置需要两个晶体管(MOSFET或BJT),一个用来将输出拉高(到电源电压),另一个用来将输出拉低(到地)。 多主从结构,由于线与的仲裁机制,可能会损坏设备。只推荐在单主从结构中使用。
3.1.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%的规范。 有关电气规范,请参见 第6章 IO阶段和总线线路的电气规格及时序 。
3.1.3 数据有效性
在时钟的高电平期间,SDA线上的数据必须保持稳定。 数据线的高或低状态只能在SCL线上的时钟信号为低时改变(见 图 4 )。 每传输一个数据位,都会生成一个时钟脉冲。
3.1.4 START和STOP的条件
所有事务都以START(S)开始,并以STOP(P)结束(见 图 5 )。 在SCL为高电平时,SDA线上的高到低的转换定义了START条件。 在SCL为高电平时,SDA线上的低到高的转换定义了STOP条件。
START和STOP条件始终由主机生成。 在START条件之后,总线被视为繁忙状态。 在STOP条件之后经过一定时间,总线再次被视为空闲状态。 这个总线空闲情况在 第6章 IO阶段和总线线路的电气规格及时序 中指定。
如果生成了重复的START(Sr)而不是STOP条件,则总线保持繁忙状态。 在这方面,START(S)和重复的START(Sr)条件功能上是相同的。 因此,在本文档的其余部分,S符号被用作通用术语来表示START和重复的START条件,除非Sr特别相关。
如果连接到总线的设备包含必要的接口硬件,则检测START和STOP条件很简单。 然而,没有此类接口的微控制器必须至少每个时钟周期对SDA线进行两次采样以进行必要的强化采样。
3.1.5 Byte 格式
每个传输在SDA线上的字节必须是8位长的。 每次传输可以传输的字节数没有限制。 每个字节后面必须跟一个确认位(ACK/NACK)。 数据以最高有效位(MSB)优先的方式传输(见 图 6 )。 如果从机在执行某些其他功能之前无法接收或传输另一个完整的字节数据,例如处理内部中断,它可以将时钟线SCL保持在低电平,以迫使主机进入等待状态。 当从机准备好接收另一个字节的数据并释放时钟线之后,数据传输将继续。
3.1.6 ACK和NACK
确认信号在每个字节后发生。确认位允许接收方向发送端发出信号,表示字节已成功接收,可以发送另一个字节。 主机生成所有时钟脉冲,包括确认第九个时钟脉冲。
确认信号定义如下:
- 发送端在确认时钟脉冲期间释放SDA线路,以便接收方可以将SDA线路拉低(发出ACK信号),并在此时钟脉冲的高电平期间保持稳定的低电平(见 图 4 )。
- 还必须考虑建立时间和保持时间(在 第6章 io阶段和总线线路的电气规格及时序 中规定)。
- 当SDA在第九个时钟脉冲期间保持高电平时,这被定义为nack信号。然后,主机可以生成STOP条件以中止传输,或生成START条件以开始新的传输。
- 有五种条件会导致NACK信号的生成:
- 在总线上没有具有所传输地址的从机,因此没有从机可以响应ack,SDA线默认保持高电平的nack响应。
- 从机无法接收或发送,因为它正在执行某些实时功能,尚未准备好与主机进行通信。
- 在传输过程中,接收端收到其无法理解的数据或命令。
- 在传输过程中,接收端无法再接收更多数据字节。
- 主机接收方必须向从机发送端发出传输结束的信号。
3.1.7 时钟同步
两个主机可以同时在空闲总线上开始传输,并且必须有一种方法来决定哪个主机控制总线并完成其传输。 这是通过时钟同步和仲裁来实现的。 在单个主机系统中,不需要时钟同步和仲裁。
时钟同步是通过将I2C接口的SCL进行线与实现的。 这意味着SCL线上的高到低转换会使相关的主机开始计算它们的低电平周期。 一旦某个主机的时钟变为低电平,它将促使SCL线保持该状态,直到时钟达到高电平状态(见 图 7 )。 然而,如果另一个时钟仍处于其低电平周期内,则该时钟的低到高转换可能不会改变SCL线的状态。 因此,SCL线由具有最长低电平周期的主机保持在低电平状态。在此期间,低电平周期较短的主机进入高电平等待状态。
当所有相关主机都计算完它们的低电平周期后,时钟线被释放并变为高电平。 此时,主机时钟和SCL线的状态没有区别,所有主机开始计重新数它们的高电平周期。
第一个结束高电平周期的主机再次将SCL线拉低。 通过这种方式,生成一个同步的SCL时钟,其低电平周期由具有最长低电平周期的主机决定,高电平周期由具有最短高电平周期的的主机决定。
3.1.8 仲裁
仲裁与同步类似,指的是仅在系统中使用多个主机时所需的协议的一部分。 从机在仲裁过程中不参与。只有当总线空闲时,主机才能开始数据传输。 两个主机可能在START条件的最小保持时间(tHD;STA)内生成一个START条件,从而在总线上导致有效的START条件。 随后需要进行仲裁,以确定哪个主机将完成其传输。
仲裁逐位进行。在每一位期间,当SCL为高电平时,每个主机检查SDA电平是否与其发送的相匹配。 这个过程可能需要许多位。只要传输相同,两个主机实际上可以在没有错误的情况下完成整个传输。 当一个主机第一次尝试发送高电平但发现SDA电平为低电平时,该主机知道它已经失去仲裁,并关闭其SDA输出驱动器。 另一个主机继续完成其传输。在仲裁过程中没有信息丢失。 失去仲裁的主机可以在失去仲裁的字节结束之前生成时钟脉冲,并在总线空闲时必须重新启动其传输。
如果一个主机还包含从机功能,并且在寻址阶段失去仲裁,获得总线控制权的主机可能正在尝试寻址它。 因此,失去仲裁的主机必须立即切换到其从机模式。
图 8 显示了两个主机的仲裁过程。 根据连接到总线的主机数量,可能会涉及更多的主机。 当生成DATA1的主机内部数据电平与SDA线上的实际电平之间存在差异时,DATA1输出会关闭。这不会影响获得总线控制权主机发起的数据传输。
由于I2C总线的控制完全由竞争控制器发送的地址和数据决定,因此不存在中央控制器,也没有总线上的优先顺序。 如果仲裁程序在一个主机发送重复的START条件或STOP条件时,另一个主机仍在发送数据时,这将导致一种未定义的状态。 换句话说,以下组合会导致未定义的状态:
- 主机1发送重复的START条件,而主机2发送数据位。
- 主机1发送STOP条件,而主机2发送数据位。
- 主机1发送重复的START条件,而主机2发送STOP条件。
3.1.9 时钟拉伸
时钟拉伸通过将SCL线保持在低电平来暂停事务。 在该线路再次释放至高电平之前,传输无法继续。 时钟拉伸是可选的,实际上大多数从机不包含SCL驱动器,因此它们无法拉伸时钟。
在字节级别,设备可能能够以较快的速率接收数据字节,但需要更多时间来存储接收到的字节或准备要传输的另一个字节。 从机可以在接收和确认一个字节后将SCL线保持在低电平,以强制主机进入等待状态,直到从机准备好进行下一个字节传输, 这是一种握手过程(见 图 7 )。
在比特级别,诸如微控制器的设备,无论是否有用于I2C总线的有限硬件,都可以通过延长每个时钟低电平周期来减慢总线时钟。 任何主机的速度都适应于该设备的内部操作速率。
在高速模式下,该握手功能仅可在字节级别使用(见 5.3.2 下的串行数据格式 )。
3.1.10 从机地址和RW-bit
数据传输遵循 图 9 所示的格式。
- 启动阶段:发送START条件;
- 地址阶段:发送一个从机地址。这个地址可以是7位,也可以选择实现10位的地址;
- 方向阶段:发送数据方向位(R/W)——‘0’表示请求写入,‘1’表示请求读取;
- 响应阶段:由地址接收方发送一个响应;
- 数据发送阶段:8位的地址+一位的响应位;
- 停止阶段:
在START条件(S)之后,发送一个从机地址。这个地址是七位长, 后面跟着第八位,即数据方向位(R/W)——‘0’表示发送数据(写入),‘1’表示请求数据(读取)(参见 图 10 )。 数据传输总是由主机生成的STOP条件(P)结束。 然而,如果主机仍希望在总线上进行通信,它可以生成重复的START条件(Sr)并在不先生成STOP条件的情况下寻址另一个从机。 在这样的传输中,可能会有各种读/写格式的组合。
可能的数据传输格式包括:
- 主机发送端向从机接收端发送数据。传输方向不变(见 图 11 )。从机接收端确认每一个字节,发送ack或者nack。
- 主机在第一个字节之后立即读取从机(见 图 12 )。 在第一次确认之后,主机发送端变为主机接收端,从机接收端变为从机发送端。这个第一次确认仍然由从机生成。主机生成后续的确认。 STOP条件由主机生成,主机在STOP条件之前发送一个nack(A)。
- 组合格式(见 图 13 )。在传输过程中的方向变化时,START条件和从机地址都被重复,但R/W位则反转。
如果主机接收端发送一个重复的START条件,它会在重复的START条件之前发送一个nack(A)。
注意事项:
- 组合格式可以用于控制串行存储器。内部存储位置必须在第一个数据字节期间写入。在START条件和从机地址重复后,数据可以被传输。
- 所有关于自动增量或减量内存地址的决定由设备设计者做出。
- 每个字节后面都有一个确认位,如序列中的A或A所示。
- 兼容I2C总线的设备在接收到START或重复START条件时,必须重置其总线逻辑,以便它们都能预期发送从机地址,即使这些START条件并没有按照正确的格式定位。
- 一个START条件后紧接着STOP条件(空消息)是一个非法格式。然而,许多设备设计上能够在这种条件下正常工作。
- 连接到总线的每个设备都有唯一的地址。通常存在简单的主从关系,但也可以有多个相同的从机能够同时接收和响应,例如在组广播中。 这种技术在使用总线切换设备(如PCA9546A)时效果最佳,其中所有四个通道都打开且相同的设备同时配置,应当理解无法同时确定每个目标是否确认。 需要一次打开一个通道依次读取每个单独设备的配置以确认传输结果。细节请参阅各个组件的数据表。
3.1.11 10-bit地址
10位寻址扩展了可能的地址数量。设备可以使用7位和10位地址连接到同一个I2C总线。 7位和10位寻址可以在所有总线速度模式下使用。目前10位寻址并未被广泛使用。
10位从机地址由START条件S或重复START条件Sr后的前两个字节组成。
第一个字节的前七位是0b1111_0XX组合,其中最后两位XX是10位地址的两个最高有效位。第一个字节的第八位是(R/w)位用于确定消息的方向。
虽然保留的地址位0b1111_XXX有八种可能的组合,但只有四种组合的0b1111_0XX用于10位寻址。剩余的四种组合0b1111_1XX保留用于未来I2C总线的增强。
之前描述的7位寻址的所有读写格式组合在10位寻址中都是可能的。这里详细说明两种:
- 主机发送端向10位从机地址的从机接收端发送数据,传输方向不变 图 14 。 当10位地址跟在START条件后时,每个从机都会将从机地址第一个字节的前七位0b1111_0XX与自己的地址进行比较,并检查第八位(R/w)方向位是否为0。 可能会有多个从机发现匹配并产生应答A1。所有发现匹配的从机都会将从机地址第二个字节的八位XXXX_XXXX与自己的地址进行比较。 但只有一个从机会发现匹配并产生应答A2,匹配的从机将一直被主机寻址直到它收到STOP条件P或者跟随不同从机地址的重复START条件Sr。
- 主机接收端从10位从机地址的从机发送端读取数据,传输方向在第二个(R/w)位之后改变 图 15 , 应答位A2的过程与主机发送端第一次寻址从机接收端的过程相同。 在重复START条件Sr之后匹配的从机会记住它之前被寻址过。该从机然后检查Sr之后从机地址第一个字节的前七位是否与从前START条件S之后的相同, 并检查第八位(R/w)位是否为1,如果匹配,则认为它已被寻址为从机发送端并产生应答A3。 从机发送端将一直被寻址直到它收到STOP条件P或者直到它收到跟随不同从机地址的另一个重复START条件Sr。 在重复START条件Sr之后所有其他从机也将比较从机地址第一个字节的前七位0b1111_0XX与自己的地址,并检查第八位(R/w)位。 然而它们可能都不会被寻址,因为即使10位从机地址的(R/w)为1,但0b1111_0XX从机地址对于7位设备不匹配。
10位地址从机响应广播呼叫地址 3.1.13 广播呼叫地址 的方式与7位地址从机的操作相同。 主机可以在广播呼叫地址之后传输其10位地址。 在这种情况下,广播呼叫地址字节之后跟随两个连续字节,包含主机发送端的10位地址。 格式如 图 15 所示,其中第一个数据字节包含主机地址的八个位权重最低的位。
START字节 0b0000_0001(0h1)可以像7位寻址一样位于10位寻址之前(见 3.1.15 START字节 )。
3.1.12 保留地址
两组8位地址(0b0000_XXX(R/w) 和 0b1111_XXX(R/w))为 表 4 中显示的目的保留:
表 4 保留地址
X = 不关心;1 = HIGH;0 = LOW
目标地址 | 读写位 | 描述 |
---|---|---|
0b0000_000 | 0 | 广播呼叫地址 [3-7] |
0b0000_000 | 1 | START字节 [3-8] |
0b0000_001 | X | CBUS 地址 [3-9] |
0b0000_010 | X | 保留以备不同总线格式 [3-10] |
0b0000_011 | X | 保留以备未来使用 |
0b0000_1XX | X | 高速模式主机码 |
0b1111_1XX | 1 | 设备ID |
0b1111_0XX | X | 10位目标寻址 |
[3-7] :广播地址用于多个功能,包括软件复位。
[3-8] :没有设备可以在接收START字节时进行应答。
[3-9] :CBUS一种三线制总线,地址已被保留,以便在同一系统中混合CBUS兼容设备和I2C总线兼容设备。I2C总线兼容设备在接收此地址时不允许响应。
[3-10] :为不同总线格式保留的地址是为了允许 I2C 和其他协议的混合。只有能够与此类格式和协议一起工作的 I2C 总线兼容设备才被允许响应此地址。
在本地系统中地址的分配取决于系统架构师,他们必须考虑总线上使用的设备以及与其他传统I2C总线的任何未来交互。 举例来说,具有七个用户可分配地址引脚的设备允许将所有128个地址分配。 如果已知保留地址将永远不会用于其预定目的,则可以将保留地址用于从机地址。
3.1.13 广播呼叫地址
广播呼叫地址用于同时向连接到I2C总线的每个设备发送数据。 然而,如果某个设备不需要通用呼叫中提供的任何数据,则可以通过不发出确认信号来忽略该地址。
如果设备需要来自广播呼叫地址的数据,它会确认该地址并表现为从机接收端。 如果一个或多个设备响应,主机实际上并不知晓有多少设备已确认。 第二个及后续字节由每个能够处理这些数据的从机接收端确认。 无法处理这些字节之一的从机必须通过nack来忽略它。 再次强调,如果一个或多个从机确认,则主机将看不到nack的信号。广播呼叫地址的含义总是在第二个字节中指定(见 图 16 )。
有两种情况需要考虑:
- 当最低有效位B为‘0’时,第二个字节的定义如下:
- 0b0000_0110 (0h6):硬件重置并写入从机地址的可编程部分。
接收到这个2字节序列后,所有设计为响应广播呼叫地址的设备将被重置并接受它们地址的可编程部分。 必须采取预防措施以确保在施加供电电压后,设备不会拉低SDA或SCL线,因为这些低电平会阻塞总线。 - 0b0000_0100 (0h4):通过硬件写入目标地址的可编程部分。
行为与上述相同,但设备不会重置。
编程过程的序列已在相应的设备数据表中发布。其余代码尚未固定,设备必须忽略它们。 - 0b0000_0000 (0h0):此代码不允许作为第二个字节使用。
- 0b0000_0110 (0h6):硬件重置并写入从机地址的可编程部分。
- 当最低有效位 B 为‘1’时:
- 2字节序列为‘硬件通用呼叫’。 这意味着该序列是由硬件主机(例如键盘扫描仪)传输的,该设备可以被编程以传输所需的从机地址。 由于主机事先不知道消息要传输到哪个从机,因此它只能生成这个硬件通用呼叫及其自身地址(向系统识别自身)(见 图 17 )。
第二个字节中剩下的七个位包含该主机的地址。 这个地址被连接到总线的智能设备(例如微控制器)识别,智能设备随后接受来自该主机的信息。 如果该主机也可以充当从机,则从机地址与主机地址相同。
在某些系统中,另一种选择是主机发送端在系统重置后设置为从机接收模式。 通过这种方式,系统配置主机可以指示主机发送端(现在处于从机接收模式)将数据发送到哪个地址(见 图 18 )。 在这个编程过程中,主机仍然保持在主机发送模式。
3.1.14 软件复位
根据通用呼叫(0b0000_0000),发送0x0000_0110(0h6)作为第二字节会导致软件复位。 此功能是可选的,并非所有设备都对该命令作出响应。 在接收到这2字节序列后,所有设计为响应广播呼叫地址的设备都会复位,并接受其地址的可编程部分。 必须采取预防措施,以确保在施加电源电压后设备不会拉低SDA或SCL线,因为这些低电平会阻塞总线。
3.1.15 START字节
微控制器可以通过两种方式连接到I2C总线。 具有片上硬件I2C总线接口的微控制器可以被编程为仅接受来自总线的请求被中断。 当设备没有这样的接口时,它必须通过软件不断监控总线。 显然,微控制器监视或轮询总线的次数越多,它用于执行其预期功能的时间就越少。
因此,依赖软件轮询的相对较慢的微控制器与快速硬件设备之间存在速度差异。
在这种情况下,数据传输可以通过启动程序来进行,该程序比正常情况要长得多(见 图 19 )。启动程序由以下内容组成:
- START;
- START字节包(0b0000_0001);
- ACK脉冲;
- 重复的START;
在一个需要总线访问的主机传输了START条件S之后,START字节(0b0000_0001)被传输。 因此,另一个微控制器可以以低采样率对SDA线进行采样,直到检测到START字节中的七个零之一。 在检测到SDA线上的低电平之后,微控制器可以切换到更高的采样率,以找到重复的START条件Sr,然后用于同步。
硬件接收端在接收到重复的START条件Sr后重置,因此忽略START字节。
在START字节之后生成与确认相关的时钟脉冲。这仅存在于与总线上使用的字节处理格式相一致的情况。任何设备都不允许确认START字节。
3.1.16 总线清除
在不太可能的情况下,如果时钟(SCL)被固定为低电平,如果I2C设备具有硬件复位输入,则优选的步骤是使用硬件复位信号重置总线。 如果I2C设备没有硬件复位输入,则切断设备电源以激活强制性的内部上电复位(POR)电路。
如果数据线(SDA)被固定为低电平,主机应发送九个时钟脉冲。 保持总线为低电平的设备应在这九个时钟内某个时间释放它。 如果没有,则使用硬件复位或切断电源以清除总线。
3.1.17 设备ID
设备ID字段(见 图 20 )是一个可选的3字节只读(24 位),提供以下信息:
- 十二位具有制造商名称,每个制造商唯一(例如,NXP)
- 九位具有部件标识,由制造商分配(例如,PCA9698)
- 三位具有晶圆修订,由制造商分配(例如,RevX)
设备ID是只读的,硬件固定在设备中,可以通过以下方式访问:
- START;
- 主机发送保留设备ID的I2C总线地址,后跟R/W位设置为‘0’(写):‘0b1111_1000’。
- 主机发送它必须识别从机的I2C总线从机地址。 LSB是‘不关心’值。 仅有一个设备必须确认此字节(拥有I2C总线从机地址的设备)。
- 主机发送Re-START条件。
注意:一个STOP条件后跟一个START条件会重置目标状态机,无法执行设备ID读取。 同时,一个STOP条件或一个Re-START 条件后跟对另一个从机的访问会重置目标状态机,无法执行设备ID读取。 - 主机发送保留设备ID的I2C总线地址,后跟(R/w)位设置为‘1’(读):‘1111 1001’。
- 设备ID读取可以进行, 从12个位制造商位(第一个字节+第二个字节的四个MSB)开始, 接着是9个位部件识别位(第二个字节的四个LSB+第三个字节的五个MSB), 然后是3个晶圆修订位(第三个字节的三个LSB)。
- 主机通过对最后一个字节发送NACK结束读取序列,从而重置目标设备状态机,并允许主机发送停止条件。
注意:设备ID的读取可以通过发送NACK随时停止。如果主机在第三个字节后继续ACK这些字节,目标将回滚到第一个字节,并继续发送设备ID序列,直到检测到NACK。
3.2 i2c超高速模式(UFm)
UFm I2C总线是一种2线推挽串行总线,工作频率从直流到5 MHz,数据单向传输。 对于速度大于1 MHz的应用,它最适合驱动LED控制器和不需要反馈的其他设备。 UFm I2C总线协议基于标准I2C总线协议,由START、从机地址、命令位、第九个时钟和STOP组成。 命令位仅为“写入”,第九个时钟上的数据位驱动为高电平。因为总线是单向的,所以忽略ACK周期。 2线推挽驱动器由UFm串行时钟(USCL)和串行数据(USDA)组成。
从机包含一个唯一地址(无论是微控制器、LCD驱动器、LED控制器或GPO),并仅作为接收端工作。 LED驱动器可能只是一个接收端,可以由UFm支持,但内存则可以接收和发送数据,不受UFm支持。
由于UFm I2C总线使用推挽驱动器,因此没有有线与门开漏Sm、Fm和Fm+ I2C总线的多主机能力。 在UFm中,主机是唯一发起总线上数据传输的设备,并生成时钟信号以允许该传输。所有其他被寻址的设备被视为从机。
表 6 UFm的术语描述
术语 | 描述 |
---|---|
发送端 | 这个设备将数据发送到总线上。 |
接收端 | 这个设备从总线上接收数据。 |
主机(Controller) | 这个设备主动发起传输,产生时钟以及终止传输。 |
从机(Target) | 这个设备由主机进行控制。 |
让我们考虑在主机与连接到UFm I2C总线的多个从机之间进行数据传输的情况(见 图 21 )
这突出了在UFm I2C总线上的主机发射端和从机接收端的关系。要注意的是这些关系是永久性的,因为数据传输仅允许单向进行。
数据传输将按如下方式进行:
假设ASIC主机想要将信息发送到LED控制器2:
- ASIC A(主机发射端)通过在USDA上发送地址并在USCL上生成时钟来寻址LED控制器2(从机接收端)。
- ASIC A(主机发射端)在USDA上向LED控制器2(从机接收端)发送数据并在USCL上生成时钟。
- ASIC A终止传输。
由于推挤输出上的总线争用问题,不允许将多个UFm控制器连接到UFm I2C总线。 如果系统中需要额外的主机,则必须与其他主机完全隔离(即,使用真正的“独热”多路复用器,输入多个主机信号,只使能一个主机使用总线)。 因为在总线上一次只允许一个主机。
在UFm I2C总线上生成时钟信号始终是主机的责任,也就是说,主机在总线传输数据时生成时钟信号。 主机发出的总线时钟信号不能被从机通过时钟拉伸改变,并且在UFm I2C总线上不存在仲裁和时钟同步的过程。
表 7 总结了UFm I2C总线规范中强制性和可选部分的使用。
表 7 UFm i2c总线的功能适用性 M = 强制的;O=可选的;n/p = 不可能。
功能 | 适用性 |
---|---|
START | M |
STOP | M |
ACK(AA) | n/p |
同步 | n/p |
仲裁 | n/p |
时钟拉伸 | n/p |
7位目标地址 | M |
10位目标地址 | O |
广播呼叫地址 | O |
软件重置 | O |
START字节 | O |
设备 ID | n/p |
3.2.1 USDA和USCL信号
USDA和USCL都是单向线路,具有推拉输出。 当总线空闲时,两个线路都由输出级的上部晶体管拉高。 在UFm模式下,I2C总线上的数据传输速率可以达到5000 kbit/s。 连接到总线的接口数量受到总线负载、来自电缆端、连接器和分支的反射的限制。
3.2.2 usda和uscl的逻辑电平
由于可以连接到I2C总线的多种不同技术设备(CMOS,NMOS,双极型),逻辑‘0’(低)和‘1’(高)的电平并不是固定的,而是取决于相关的VDD电平。 输入参考电平设定为VDD的30%和70%;VIL为0.3VDD,VIH为0.7VDD。参见 图 40 ,时序图。 有关电气规格,请参见 第6章 IO阶段和总线线路的电气规格及时序 。
3.2.3 数据有效性
USDA线路上的数据在时钟的HIGH期间必须是稳定的。 数据线路的HIGH或LOW状态只能在USCL线路上的时钟信号为LOW时改变(见 图 23 )。 每传输一个数据位就会生成一个时钟脉冲。
3.2.4 START和STOP条件
当总线未被占用时,数据线和时钟线保持高电平。 所有传输以START信号(S)开始,并可以通过STOP信号(P)结束(见 图 24 )。 当USCL线为高电平时,USDA线从高电平到低电平的转换定义了START条件。 当USCL线为高电平时,USDA线从低电平到高电平的转换定义了STOP条件。
START和STOP条件始终由主机生成。 总线在START条件后被视为忙碌。该总线在STOP条件后的某段时间内再次被视为空闲。 此总线空闲状态在 第6章 IO阶段和总线线路的电气规格及时序 中规定。
如果生成重复的START (Sr)而不是STOP条件,总线将保持忙碌。 在这方面,START (S)和重复的START (Sr)条件在功能上是相同的。 因此,在本文的其余部分,S符号将被用作通用术语,表示START和重复的START条件,除非Sr特别相关。
如果连接到总线的设备具备必要的接口硬件,则START和STOP条件的检测是简单的。 然而,具有未包含此接口的微控制器必须在每个时钟周期至少对USDA线采样两次以进行必要的过度感知。
3.2.5 Byte 格式
每个放在USDA线路上的字节必须为八位长。 每次传输可以传输的字节数没有限制。 在确认周期中,主机在每个字节之后将USDA拉高。 如果从机无法接收另一个完整的数据字节,或者在执行其他功能时,例如处理内部中断,则不允许将时钟保持在低电平。
3.2.6 ack和nack
由于从机无法在第九个时钟周期内响应,因此不需要ACK和NACK。 然而,第九个时钟周期在UFm中被保留,以兼容I2C总线协议。ACK和NACK也被称为第九个时钟周期。 主机生成所有时钟脉冲,包括第九个时钟脉冲。第九个数据位始终为高电平(‘1’)。 从机不允许在任何时候驱动SDA线。
3.2.7 从机地址和rw读写
数据传输遵循 图 26 所示的格式。 在START条件(S)之后,发送从机地址。 该地址为七位长,后面跟着一个第八位,即数据方向位(W)——‘0’表示传输(写入);‘1’表示请求数据(读取), 而且UFm不支持读取(除了START字节,3.2.12 START byte ),因为通信是单向的(参见 图 27 )。 数据传输总是由主机生成的STOP条件(P)终止。 然而,如果主机仍希望在总线上进行通信,它可以生成重复的START条件(Sr),并在不先生成STOP条件的情况下指定另一个从机。
UFm数据传输格式为:
- 主机发射端发送数据到从机接收端。传输方向不变。 (见 图 28 )。主机永远不会ack,因为它从未接收任何数据。 但在第九位上生成“1”以便目标符合I2C总线协议。
Note:
- 可以使用单个传输或重复的START格式来一次性处理多个从机。在重复START条件和从机地址后,可以传输数据。
- 有关自动递增或递减先前访问的内存位置等的所有决策由设备设计者做出。
- 每个字节后面都有一个nack位,如序列中的A块所示。
- I2C总线兼容设备必须在收到START或重复START条件时重置其总线逻辑,以便它们都能够预期从机地址的发送,即使这些START条件未按照正确格式定位。
- 一个START条件紧接着一个STOP条件(无效消息)是非法格式。然而,许多设备可以设计为在这种条件下正常运行。
- 连接到总线的每个设备都可以通过唯一地址寻址。只存在简单的主从关系,但可以有多个相同的从机可以同时接收和响应。 例如在组播中,所有相同的设备同时配置,可以理解到无法同时确定每个从机是否都有响应。请参考各个组件的数据手册。
3.2.8 10-bit地址
10位寻址扩展了可用地址的数量。 具有7位和10位地址的设备可以连接到同一I2C总线,并且7位和10位寻址可以用于所有总线速率模式。
10位从机地址由在START条件(S)或重复START条件(Sr)后面的前两个字节构成。 第一个字节的前七位是组合0b1111_0XX,其中最后两位(XX)是10位地址的两个最高有效位(MSB); 第一个字节的第八位是R/W位,用来确定消息的方向。
尽管有八种可能的保留地址位组合0b1111_XXX,但仅用于10位寻址的组合是0b1111_0XX。剩下的四种组合0b1111_1XX被保留用于未来的I2C总线增强。 仅以前描述的7位寻址写格式可用于10位寻址。详细信息如下:
- 主机发射端使用10位从机地址向从机接收端发送数据。 传输方向不变(见 图 29 )。 当10位地址跟随一个START条件时,每个从机将从机地址第一个字节的前七位(0b1111_0XX)与其自身地址进行比较, 并检查第八位(R/W方向位)是否为0(W)。 所有找到匹配的从机将从机地址的第二个字节的八位(XXXX XXXX)与自己的地址进行比较,但只有一个从机找到匹配。 匹配的从机将由主机保持寻址,直到它接收到停止条件(P)或跟随不同从机地址的重复START条件(Sr)。
3.2.9 UFM的保留地址
UFm I2C总线的物理层与其他I2C总线模式不同。 因此可用的从机地址范围也不同。 表 8 中所示的从机保留了两组八个地址(0b0000_XXX和0b1111_XXX)。
表 8 保留地址
X = 不care;1 = HIGH;0 = LOW。
从机地址 | R/W | bit | Description |
---|---|---|---|
0b0000_000 | 0 | 广播呼叫地址 [3-11] | |
0b0000_000 | 1 | START byte [3-11] | |
0b0000_001 | X | reserved for future purposes | |
0b0000_010 | X | reserved for future purposes | |
0b0000_011 | X | reserved for future purposes | |
0b0000_1XX | X | reserved for future purposes | |
0b1111_1XX | X | reserved for future purposes | |
0b1111_0XX | X | 10-bit 从机地址 |
[3-11] :广播呼叫地址用于多个功能,包括软件重置。
[3-11] :不允许任何UFm设备在接收到START字节时进行确认。
在本地系统中地址的分配由系统架构师负责,他们必须考虑总线上使用的设备以及将来与保留地址的任何交互。 例如,一个具有七个用户可分配地址引脚的设备允许所有128个地址被分配。如果已知保留地址将永远不会用于其预定目的,则可以将保留地址用作从机地址。
3.2.10 广播呼叫地址
通用官博地址用于同时寻址所有连接到I2C总线的设备。 然而,如果某个设备不需要一般调用结构中提供的任何数据,它可以忽略此地址。 如果某个设备确实需要来自广播呼叫地址的数据,它会表现得像一从机接收端。 主机实际上并不知道有多少设备对通用呼叫做出响应。 每个能够处理这些数据的从机接收端都会接收第二个及后续字节。 无法处理其中一个字节的从机必须忽略它。 广播呼叫地址的含义总是在第二个字节中指定(见 图 30)。
考虑两个情况:
- 当最低有效位B为‘1’时,第二个字节的定义如下:
- 0b0000_0110 (0h6)
通过硬件重置并写入目标地址的可编程部分。在接收到这个2字节序列后,所有设计为响应广播地址的设备都会重置并接受它们地址的可编程部分。 - 0b0000_0100 (0h4)
通过硬件写入目标地址的可编程部分。表现如上,但设备不会重置。 - 0b0000_0000 (0h0)
这个代码不允许用作第二个字节。编程过程的序列已在相应设备的数据手册中发布。其余代码未被固定,设备必须忽略它们。
- 0b0000_0110 (0h6)
- 当最低有效位B为‘1’时,2字节序列被忽略。
3.2.11 软件复位
在接收到通用呼叫(0b0000_0000)后,发送0b0000_0110(0h6)作为第二个字节会导致软件复位。 此功能是可选的,并不是所有设备都对该命令做出响应。在接收到此2字节序列时,所有设计为响应广播呼叫地址的设备将复位并接受其地址的可编程部分。
3.2.12 START Byte
微控制器可以通过两种方式连接到I2C总线。 具有片上硬件I2C总线接口的微控制器可以被编程为仅在接收到来自总线的请求时中断。 当设备没有这样的接口时,它必须通过软件不断监控总线。 显然,微控制器监控或轮询总线的次数越多,它就越少时间用于执行其预期功能。
因此,快速硬件设备与依赖软件轮询的相对较慢的微控制器之间存在速度差异。 在这种情况下,数据传输可以通过一个比正常长得多的START程序进行(见 图 31 )。START程序包括:
- START(S)
- START字节(0000 0001)
- 非确认时钟脉冲(NACK)
- 重复START条件(Sr)
在需要总线访问的主机传输START条件S之后,START字节(0b0000_0001)被传输。 因此,另一个微控制器可以以较低的采样率对USDA线进行采样,直到检测到START字节中的七个零之一。 在检测到USDA线上这个低电平后,微控制器可以切换到更高的采样率,以查找重复的START条件Sr, 然后用于同步。硬件接收器在接收到重复的START条件Sr时重置,因此忽略START字节。 在START字节之后生成一个与确认相关的时钟脉冲。这仅用于符合总线中使用的字节处理格式。没有设备被允许确认START字节。
3.2.13 无响应从机复位
在极少数的情况下,如果从机变得无响应(例如,通过外部反馈判断,而非通过UFm I2C总线), 首选程序是使用软件重置命令或硬件重置信号重置目标。 如果目标不支持这些功能,则需要切断设备电源以启动强制内部上电复位(POR)电路。
3.2.14 设备ID
在UFm中不支持设备ID。
第4章 i2c总线的其他使用
I2C总线被用作多个系统架构的通讯协议。 这些架构在基本I2C规范的基础上增加了命令集和特定应用的扩展。
一般而言,简单的I2C总线设备如I/O扩展器可以用于这些架构中的任何一种,因为协议和物理接口都是相同的。
4.1 CBUS兼容性
CBUS 接收器可以连接到标准模式 I2C 总线上。 然而,必须连接一条称为DLEN的第三条总线,并省略确认位。 通常,I2C 传输是一系列 8 位字节;CBUS 兼容设备具有不同的格式。 在混合总线结构中,I2C 总线设备不得响应 CBUS 消息。 因此,保留了一个特殊的 CBUS 地址(0000 001X),没有 I2C 总线兼容设备对此做出响应。 在传输 CBUS 地址后,DLEN 线可以激活,并发送 CBUS 格式的传输。 在START条件之后,所有设备再次准备接受数据。主机发送端在发送 CBUS 地址后可以发送 CBUS 格式。 所有设备都可以识别的START条件标志着传输结束。
Note:
如果已知 CBUS 配置,并且不打算使用 CBUS 兼容设备进行扩展,设计者可以根据所用设备的特定要求调整保持时间。
4.2 SMBus - 系统管理总线
SMBus使用I2C硬件和I2C硬件寻址,但增加了第二级软件用于构建特殊系统。 特别是,它的规范包括一个地址解析协议,可以进行动态地址分配。
硬件和软件的动态重配置允许总线设备“热插拔”并立即使用,而无需重启系统。 设备会被自动识别并分配唯一地址。这一优势使得即插即用的用户界面成为可能。 在这两种协议中,对系统主机和系统中所有其他可以充当主机或者从机的设备之间进行了非常有用地区分。
SMBus今天作为大多数个人计算机中的系统管理总线使用。 由英特尔等公司于1995年开发,它修改了一些I2C电气和软件特性,以更好地兼容便携设备快速下降的电源预算。 SMBus还拥有一个“高功率”版本2.0,包含4 mA的漏电流,除非上拉电阻的大小达到I2C总线水平,否则I2C芯片无法驱动。
4.2.1 I2C和SMBus的兼容性
SMBus和I2C协议基本相同:
SMBus控制器能够在协议层面上控制I2C设备,反之亦然。
SMBus的时钟频率定义为10 kHz到100 kHz,而I2C可以在0 Hz到100 kHz、0 Hz到400 kHz、0 Hz到1 MHz和0 Hz到3.4 MHz之间变化,这取决于模式。
这意味着在低于10 kHz运行的I2C总线不符合SMBus标准,因为SMBus设备可能会超时。
逻辑电平也略有不同:
对于SMBus,TTL的低电平为0.8 V,高电平为2.1 V,而I2C的电平为30%/70% VDD CMOS。如果VDD > 3.0 V并不是一个问题。
如果I2C设备低于3.0 V,那么如果逻辑高/低电平未被正确识别,就可能会出现问题。
4.2.2 超时功能
SMBus具有超时功能,当通信时间过长时会重置设备。 这解释了最低时钟频率为10 kHz,以防止总线锁定。
I2C可以是‘DC’总线,意味着从机在主机访问它时会拉伸主机时钟,以进行某些例行操作。 这通知主机,从机正忙,但不想失去通信。 从机将在其任务完成后继续。
I2C总线协议对这种延迟的持续时间没有限制,而在SMBus系统中,延迟时间将限制在35毫秒内。 SMBus协议假设如果某件事情花费的时间过长,那么意味着总线上出现了问题,所有设备必须重置以清除此状态。 从机不允许将时钟保持在低电平状态过长时间。
4.2.3 SMBus1.0 和 2.0的区别
SMBus规范定义了两类电气特性:低功率和高功率。
第一类最初在SMBus 1.0和1.1规范中定义,主要针对智能电池,但也可以用于其他低功率设备。
2.0版本引入了一组替代的高功率电气特性。 当需要更高的驱动能力时,例如在PCI扩展卡上的SMBus设备以及通过PCI连接器连接这些卡与系统板上的SMBus设备时,可使用这一类别。
设备可以由总线VDD供电,也可以由另一电源VBUS供电(例如智能电池),只要遵循其类的SMBus电气规格,它们就可以互操作。
NXP设备具有比SMBus 1.0更高的电气特性。主要区别在于电流下沉能力,VOL = 0.4 V。
- SMBus低功率 = 350 μA
- SMBus高功率 = 4 mA
- I2C总线 = 3 mA
如果拉升电阻为3 mA,SMBus“高功率”设备和I2C总线设备将一起工作。
有关更多信息,请参见:http://www.smbus.org/
4.3 PMBus - 电源管理总线
PMBus 是一种在 SMBus 上实现电源转换器与系统主机之间通信的标准方式,以提供对电源转换器更智能的控制。
PMBus 规范定义了一组标准的设备命令,使来自多个来源的设备具有相同的功能。
PMBus 设备使用 SMBus 版本 1.1 及其扩展进行传输。
如需更多信息,请访问: https://pmbus.org/
4.4 智能平台管理接口
智能平台管理接口(Intelligent Platform Management Interface - IPMI)定义了一种标准化、抽象化的基于消息的接口,用于智能平台管理硬件。 IPMI还定义了用于描述平台管理设备及其特性的标准化记录。IPMI通过监控温度、电压、风扇和机壳入侵等参数来提高系统的可靠性。
IPMI提供了一般的系统管理功能,如自动警报、自动系统关机和重启、远程重启和电源控制。 对智能平台管理硬件的标准化接口有助于预测和早期监控硬件故障以及故障诊断。
这个标准化的总线和协议用于扩展机壳内的管理控制、监控和事件传递:
- 基于I2C。
- 多控制器。
- 简单的请求/响应协议。
- 使用IPMI命令集。
- 支持非IPMI设备。
- 物理上为I2C,但为只写(支持控制器的设备);不需要热插拔。
- 使基础管理控制器(BMC)能够接受来自系统中其他管理控制器的IPMI请求消息。
- 允许非智能设备以及总线上的管理控制器。
- BMC作为控制器使系统软件能够访问IPMB。
硬件实现与软件实现隔离,因此可以在不进行任何软件更改的情况下添加新传感器和事件。。 欲了解更多信息,请访问:https://www.intel.com/content/www/us/en/products/docs/servers/ipmi/ipmi-home.html
4.5 高级电信计算架构(Advanced Telecom Computing Architecture)
高级电信计算架构(ATCA)是对紧凑型PCI(Compact PCI - cPCI)的后续方案,提供标准化的外形规格, 具有更大的card面积、更大的间距和更大的电源供应,用于先进的机架安装电信硬件。 它包括一种用于热管理的容错方案,该方案在电路板之间使用I2C总线通信。
高级电信计算架构(ATCA)得到了包括英特尔、朗讯和摩托罗拉等众多大型企业在内的100多家公司的支持。
对ATCA兼容的风扇控制有两种通用的合规方案:
- 第一个是智能FRU(现场可更换单元),这意味着风扇控制将直接连接到IPMB(智能平台管理总线);
- 第二个是管理型或非智能FRU。
管理双I2C总线的要求中需要包含硬件和软件。这需要一个板载绝缘电源为电路供电,一个带有上升时间加速器的缓冲双I2C总线,以及三态能力。 I2C主机必须能够支持多主机I2C双总线,并处理协议中列出的标准风扇命令集。 此外,还需要板载温度报告、托盘能力报告、风扇关闭功能和非易失性存储。有关更多信息,请参考: https://www.picmg.org/openstandards/advancedtca/
4.6 显示数据通道(Display Data Channel - DDC))
显示数据通道(DDC)允许监视器或显示器向主机通报其身份和能力。 DDC版本2的规范要求符合I2C总线标准模式规范,它支持显示器与主机之间的双向通信,使得可以控制监视器功能。 例如图像的显示方式以及与连接到I2C总线的其他设备的通信。
有关更多信息,请参阅:https://vesa.org/
第5章 总线速度
最初I2C总线的操作速度限制为100 kbit/s。随着时间的推移,规范中增加了几个内容,现在有五种操作速度类别。 标准模式(Sm)、快速模式(Fm)、快速加模式(Fm+)和高速模式(Hs-mode)。 设备是向下兼容的——任何设备都可以在较低的总线速度下运行。超快速模式设备与之前的版本不兼容,因为总线是单向的。
- 双向总线:
- 标准模式(Sm),比特率高达100 kbit/s
- 快速模式(Fm),比特率高达400 kbit/s
- 快速加模式(Fm+),比特率高达1 Mbit/s
- 高速模式(Hs-mode),比特率高达3.4 Mbit/s。
- 单向总线:
- 超快速模式(UFm),比特率高达5 Mbit/s
5.1 快速模式
快速模式设备的接收和传输速度最高可达400 kbit/s。 最低要求是它们能够与400 kbit/s的传输同步;然后,它们可以延长SCL信号的LOW周期以减慢传输。 SDA和SCL线路的协议、格式、逻辑电平和最大电容负载与标准模式I2C总线规范相同。 快速模式设备向后兼容,可以在0到100 kbit/s的I2C总线系统中与标准模式设备通信。 然而,标准模式设备不向前兼容;它们不应被纳入快速模式I2C总线系统,因为它们无法跟上更高的传输速率,会出现不可预测的状态。
与标准模式相比,快速模式I2C总线规范具有以下附加功能:
- 最大比特率增加到400 kbit/s。
- 串行数据(SDA)和串行时钟(SCL)信号的时序已经调整。无需与其他总线系统(例如CBUS)兼容, 因为它们无法以增加的比特率运行。
- 输入集成了尖峰抑制和在SDAH和SCLH输入处的施密特触发器。
- 快速模式设备的输出缓冲器包含SDA和SCL信号下降沿的斜率控制。
- 如果快速模式设备的电源关闭,SDA和SCL I/O引脚必须处于悬空状态,以免阻塞总线线路。
连接到总线线路的外部上拉设备必须适应快速模式I2C总线较短的最大允许上升时间。 对于高达200 pF的总线负载,每条总线线路的上拉设备可以是一个电阻; 对于200 pF到400 pF之间的总线负载, 上拉设备可以是一个电流源(最大3 mA)或一个开关电阻电路(见 7.2.4 切换式上拉电路 )。
5.2 快速加模式
快速加模式(Fm+)设备提高了I2C总线传输速度和总线电容。 Fm+设备能够以高达1 Mbit/s的比特率传输信息,在混合速度总线系统中与快速或标准模式设备完全向下兼容,以实现双向通信。 与快速或标准模式系统保持相同的串行总线协议和数据格式。 Fm+设备还提供比快速或标准模式设备更高的驱动电流,使其能够驱动更长和/或负载更重的总线,从而不需要使用总线缓冲器。
快速模式加部件中的驱动器足够强大,可以满足与标准模式部件相同的400 pF负载的快速模式加时序规范。 为了向后兼容标准模式,它们对于标准模式部件的1 μs上升时间也具有一定的容忍度。 在仅存在快速模式加部件的应用中,只要满足快速模式加的set-up时间、最小低电平时间和最小高电平时间, 且下降时间和上升时间不超过标准模式的300 ns tf和1 μs tr规范, 高驱动强度和对慢上升和下降时间的容忍性允许使用更大的总线电容。 总线速度可以与负载电容进行权衡,以将最大电容增加约十倍。
5.3 高速模式
高速模式(Hs模式)设备在I2C总线传输速度上提供了量子飞跃。 Hs模式设备可以以高达3.4 Mbit/s的比特率传输信息,同时它们在混合速度总线系统中与快速加模式、快速或标准模式(F/S)设备完全向下兼容,能够进行双向通信。 唯一的例外是在Hs模式传输期间不进行仲裁和时钟同步,其他均与F/S模式系统保持相同的串行总线协议和数据格式。
5.3.1 高速模式传输
为了实现高达3.4 Mbit/s的位传输,对常规I2C总线规范进行了以下改进:
- Hs模式主机对SDAH信号具有开漏输出缓冲器,并且在SCLH输出上具有开漏下拉和电流源上拉电路的组合。 该电流源电路缩短了SCLH信号的上升时间。任何时候只有一个主机的电流源在Hs模式下启用。
- 在多主机系统的Hs模式传输中,不执行仲裁或时钟同步,这加快了位处理能力。仲裁程序始终在F/S模式中完成前一个主机码传输后结束。
- Hs模式主机生成的串行时钟信号的高低比为1比2。这缓解了设置和保持时间的时序要求。
- 作为选择,Hs模式主机可以具有内置桥。在Hs模式传输期间,Hs模式设备的高速数据(SDAH)和高速串行时钟(SCLH)线 通过此桥与F/S模式设备的SDA和SCL线路隔离。 这减少了SDAH和SCLH线路的电容负载,从而导致更快的上升和下降时间。
- Hs模式从机与F/S模式从机之间的唯一区别在于它们的操作速度。Hs模式从机在SCLH和SDAH输出上具有开漏输出缓冲器。 SCLH引脚上的可选下拉晶体管可用于拉伸SCLH信号的LOW电平,但这仅在Hs模式传输中的确认位之后允许。
- Hs模式设备的输入集成了尖峰抑制和在SDAH和SCLH输入处的施密特触发器。
- Hs模式设备的输出缓冲器集成了SDAH和SCLH信号下降沿的斜率控制。
图 32 显示了仅包含Hs模式设备的系统中的物理I2C总线配置。 主机的SDA和SCL针脚仅在混合速度总线系统中使用,并且在仅Hs模式的系统中不连接。在这种情况下,这些引脚可以用于其他功能。
可选的串联电阻Rs保护I2C总线设备的I/O阶段免受总线线上的高电压尖峰,并最小化振铃和干扰。
上拉电阻Rp在总线处于空闲状态时将SDAH和SCLH线路保持在高电平, 并确保信号在所需的上升时间内从低电平拉升到高电平。对于更高的电容总线负载(>100 pF),电阻Rp可以由外部电流源上拉替代以满足上升时间要求。 除非在确认位之后,Hs模式传输中的SCLH时钟脉冲的上升时间由活动主机的内部电流源上拉电路MCS缩短。
5.3.2 高速模式下的串行数据格式
串行数据传输格式在高速模式下符合标准模式I2C总线规范。在满足以下条件后,才能开始高速模式(所有条件均在频率/同步模式下):
- START(S)
- 8位主机码(0b0000_1XXX)
- 不确认位(A)
图 33 和 图 34 对此进行了更详细的说明。 该主机码有两个主要功能:
- 它允许在频率/同步模式速度下进行竞争主机之间的仲裁和同步,从而产生一个获胜的主机。
- 它指示高速模式传输的开始。
高速模式主机码是保留的8位代码,不用于从机寻址或其他用途。 此外,由于每个主机都有其独特的主机码,因此最多可以在一个I2C总线系统上存在八个高速模式主机(主机码0b0000_1000应保留用于测试和诊断目的)。 高速模式主机的主机码是软件可编程的,由系统设计人员选择。
仲裁和时钟同步仅在主机码和不确认位(A)的传输过程中进行,之后一个获胜的主机保持活动状态。 主机码向其他设备指示将开始高速模式传输,连接的设备必须符合高速模式规范。 由于不允许任何设备确认主机码,因此主机码后跟一个不确认位(A)。
在不确认位(A)之后,SCLH线被拉升到高电平,活动主机切换到高速模式, 并在时间tH处(见 图 34 )使SCLH信号的电流源上拉电路启用。 由于其他设备可以通过拉伸SCLH信号的低电平来延迟串行传输,因此当所有设备释放SCLH线且SCLH信号达到高电平时, 活动主机启用其电流源上拉电路,从而加速SCLH信号最后一部分的上升时间。
活动主机然后发送一个重复的START条件(Sr),后跟7位从机地址(或10位从机地址,见 3.1.11 10-bit地址 )和一个读/写位地址, 并从所选从机接收一个确认位(A)。
在重复的START条件之后,以及在每个确认位(A)或不确认位(AA)之后,活动主机禁用其电流源上拉电路。 这使得其他设备能够通过拉伸SCLH信号的低电平来延迟串行传输。 当所有设备释放且SCLH信号达到高电平时,活动主机再次启用其电流源上拉电路,从而加速SCLH信号最后一部分的上升时间。
数据传输在下一个重复的START(Sr)之后继续在高速模式下进行,并且仅在STOP条件(P)后切换回频率/同步模式。 为了减少主机码的开销,主机可以链接多个高速模式传输,这些传输由重复的START条件(Sr)分隔。
5.3.3 FS模式和HS模式的转化
在重置和初始化之后,Hs模式设备必须处于快速模式(这实际上是F/S模式,因为快速模式向下兼容标准模式)。 每个Hs模式设备可以在快速模式和Hs模式之间切换,由I2C总线上的串行传输控制。
在 图 34 中的时间t1之前,每个连接的设备都在快速模式下运行。 在t1和tH之间的这段时间(该时间间隔可以由任何设备拉长),每个连接的设备必须识别‘S/0b00001XXX/A’序列, 并且必须将其内部电路从快速模式设置切换到Hs模式设置。 在t1和tH之间,连接的主机和从机通过以下操作执行此切换。 活动(获胜)主机:
- 根据Hs模式中的尖峰抑制要求调整其SDAH和SCLH输入滤波器。
- 根据Hs模式要求调整建立时间和保持时间。
- 根据Hs模式要求调整其SDAH和SCLH输出级的斜率控制。
- 切换到Hs模式比特率,该比特率在时间tH之后是必需的。
- 在时间tH时使能其SCLH输出级的电流源上拉电路。
非活动或失败的主机:
- 根据Hs模式中的尖峰抑制要求调整其SDAH和SCLH输入滤波器。
- 等待STOP条件以检测总线何时再次空闲。
所有从机:
- 根据Hs模式中的尖峰抑制要求调整其SDAH和SCLH输入滤波器。
- 根据Hs模式要求调整建立时间和保持时间。该要求可能已经通过输入滤波器的适应得以满足。
- 如有必要,调整其SDAH输出级的斜率控制。 对于从机,斜率控制仅适用于SDAH输出级,并且根据电路容差,快速模式和Hs模式的要求在不切换其内部电路的情况下都可能得以满足。
在 图 34 中的时间tFS,连接的每个设备必须识别STOP条件(P), 并将其内部电路从Hs模式设置切换回t1之前的快速模式设置。这必须在快速模式规范中规定的最小总线空闲时间内完成,如 表 11 所示。
5.3.4 较低速度下的高速模式
Hs模式设备具有完全向下兼容性,可以连接到F/S模式I2C总线系统(见 图 35 )。 由于在这种配置中不会传输主机码,因此所有Hs模式主机设备保持在F/S模式,并以F/S模式速度进行通信,同时禁用其电流源。 SDAH和SCLH引脚用于连接到F/S模式总线系统, 允许Hs模式主机设备上的SDA和SCL引脚(如果存在)用于其他功能。
5.3.5 串行总线系统上的混合模式
如果一个系统中有Hs模式、快速模式和/或标准模式设备的组合,可以通过使用互联桥, 在不同设备之间实现不同的比特率(见 图 36 和 图 37 )。
在适当的时间,需要一个桥来连接/断开Hs模式部分与F/S模式部分。该桥包括一个电平转换功能,允许具有不同供电电压的设备连接。 例如,VVDD2为5V的F/S模式设备可以连接到VDD1为3V或更低的Hs模式设备(即VDD2 ≥ VDD1), 前提是SDA和SCL引脚耐受5V。 该桥被包含在Hs模式主机设备中,并完全由串行信号SDAH、SCLH、SDA和SCL控制。 这样的桥可以作为自治电路在任何集成电路中实现。
TR1、TR2和TR3是N沟道晶体管。TR1和TR2具有传输门功能,而TR3是一个开漏下拉级。 如果TR1或TR2被打开,它们将双向传输低电平,否则当漏极和源极电平上升到高电平时,每个已开启晶体管的漏极和源极之间有高阻抗。 在后一种情况下,晶体管作为电平转换器,因为SDAH和SCLH拉高到VDD1, SDA和SCL被拉高到VDD2。
在F/S模式下,连接在一个Hs模式主机上的桥将SDAH和SCLH线连接到相应的SDA和SCL线, 从而允许Hs模式设备以较慢的速度与F/S模式设备进行通信。正如 3.1.7 时钟同步 所述, 在所有连接设备之间的F/S模式传输过程中,仲裁和同步都是可能的。 然而,在Hs模式传输过程中,桥打开以分离两个总线部分,并允许Hs模式设备在3.4 Mbit/s下相互通信。 Hs模式设备与F/S模式设备之间的仲裁仅在主机码(0b0000_1XXX)期间执行,并通常由一个Hs模式主机赢得,因为没有从机地址具有四个前导零。 其他主机只有在发送保留的8位代码(0b0000_0XXX)时才能赢得仲裁。在这种情况下,桥保持关闭,传输以F/S模式进行。 表 9 给出了该系统中可能的通信速度。
Note:
表 9 假设Hs设备在以3.4 Mbit/s操作时与Fm和Sm设备隔离。总线速度始终受到连接到总线的最慢设备的最大通信速率的限制。
5.3.6 混合速度总线中的标准、快速、增强快速传输
图 36 所示的桥接器连接了相应的串行总线线,形成了一个串行总线系统。 由于没有主机码(0b0000_1XXX)被传输,电流源上拉电路保持禁用,所有输出级为开漏状态。 所有设备,包括Hs模式设备,按照协议、格式和F/S模式I2C总线规范的速度进行相互通信。
5.3.7 混合速度总线中的高速传输
图 37 显示了完整的Hs模式传输的时序图, 此传输由START条件、主机码和不确认A(在F/S模式速度下)被调用。 尽管这个时序图被分为两个部分,但它应该被视为一个时序图,其中时间点tH是两个部分的共通点。 主机码被桥接电路在活动或不活动的主机中识别(见 图 36 )。桥接电路执行以下操作:
- 在t1和tH之间(见 图 37 ), 晶体管TR1打开以分离SDAH和SDA线,然后晶体管TR3关闭,将SDA线拉低到VSS。
- 当SCLH和SCL都变为高电平时( 图 37 中的tH), 晶体管TR2打开以分离SCLH和SCL线。TR2必须在SCLH在Sr之后变为低电平之前打开。
Hs模式传输在tH后以重复的START条件(Sr)开始。 在Hs模式传输期间,SCL线保持在高电平,而SDA线保持在低电平稳态水平,因此为传输START条件(P)做好准备。 在每个确认(A)或不确认位(A)之后,活动主机禁用其当前源拉升电路。 这使得其他设备能够通过拉伸SCLH信号的低电平周期来延迟串行传输。 当所有设备被释放且SCLH信号达到高电平时,活动主机再次启用其当前源拉升电路,从而加快SCLH信号上升时间的最后部分。 在不规则情况下,F/S模式设备可以通过将SCL线拉低至少1μs任意关闭桥接电路(TR1和TR2关闭,TR3打开),例如,以恢复总线挂起的情况。
Hs模式以STOP条件结束,并将总线系统恢复到F/S模式。 当检测到SDAH上的STOP条件(P)时,活动主机禁用其当前源MCS(图 37 中的tFS)。 桥接电路也识别这个STOP条件,并采取以下行动:
- 晶体管TR2在tFS后关闭,以将SCLH与SCL连接; 此时两者都是高电平。晶体管TR3在tFS后打开,释放SDA线并允许其被拉高,由拉升电阻Rp拉高。 这是F/S模式设备的STOP条件。TR3必须快速打开,以确保STOP条件与下一个最早的START条件之间的总线空闲时间符合快速模式规范 (见 表 11 中的tBUF)。
- 当SDA达到高电平时( 图 37 中的t2), 晶体管TR1关闭以连接SDAH和SDA。(注意:当所有线路为高电平时会进行互连,从而防止总线线上的尖峰。) TR1和TR2必须在符合快速模式规范的最小总线空闲时间内关闭(见 表 11 中的tBUF)。
5.3.8 混合速度总线中桥接器的时序要求
从 图 37 可以看出,桥接器在t1,tH和tFS时的动作必须非常迅速, 以至于不影响SDAH和SCLH线。 此外,桥接器还必须满足SDA和SCL线快速模式规范的相关时序要求。
5.4 超快速模式
超高速模式(UFm)设备提供了I2C总线传输速度的提升。 UFm设备可以以最高5 Mbit/s的比特率传输信息。UFm设备提供推挽驱动器,消除了上拉电阻,允许更高的传输速率。 与Sm、Fm或Fm+系统一样,串行总线协议和数据格式保持不变。UFm总线设备与双向I2C总线设备不兼容。
第6章 IO阶段和总线线路的电气规格和时序
6.1 标准、快速、快速加模式设备
I/O levels、I/O current、spike suppression、输出slope控制和引脚电容见 表10 。
I2C总线时序特性、总线线电容和噪声余量见 表 11 。
图 38 显示了I2C总线的时序定义。 表 11 中指定的SCL时钟的最小高低电平持续时间决定了标准模式设备的最大比特传输速率为 100 kbit/s。 快速模式设备为400kbit/s和快速加模式为1000kbit/s设备必须能够以其自身的最大比特速率跟随传输。 无论是能够以该速度发送或接收还是通过应用 3.1.7 时钟同步 中描述的时钟同步程序强制主机进入等待状态并拉伸SCL信号的低电平持续时间。在后者的情况下,比特传输速率降低。
表 10 SDA和SCL I/O阶段设备特性
Symbol | Parameter | Conditions | Sm-Min | Sm-Max | Fm-Min | Fm-Max | Fm+-Min | Fm+-Max | Unit |
---|---|---|---|---|---|---|---|---|---|
VIL | LOW-level input voltage [6-1] | -0.5 | 0.3VDD | -0.5 | 0.3VDD | -0.5 | 0.3VDD | V | |
VIH | HIGH-level input voltage [6-1] | 0.7VDD | [6-2] | 0.7VDD | [6-2] | 0.7VDD [6-1] | [6-2] | V | |
Vhys | hysteresis(滞后) of Schmitt trigger inputs | - | - | 0.05VDD | - | 0.05VDD | - | V | |
VOL1 | LOW-level output voltage 1 | (open-drain or open-collector) at 3 mA sink current; VDD > 2V | 0 | 0.4 | 0 | 0.4 | 0 | 0.4 | V |
VOL2 | LOW-level output voltage 2 | (open-drain or open-collector) at 2 mA sink current [6-3] ; VDD ≤ 2V | - | - | 0 | 0.2VDD | 0 | 0.2VDD | V |
IOL | LOW-level output current | VOL = 0.4 V | 3 | - | 3 | - | 20 | - | mA |
IOL | LOW-level output current | VOL = 0.6V [6-4] | - | - | 6 | - | - | - | mA |
tof | output fall time from VIHmin to VILmax | - | 250 [6-5] | 20 × (VDD/5.5V) [6-6] | 250 [6-5] | 20 × (VDD/5.5V) [6-6] | 120 [6-7] | ns | |
tSP | pulse width of spikes that must be suppressed by the input filter | - | - | 0 | 50 [6-8] | 0 | 50 [6-8] | ns | |
Ii | input current each I/O pin | 0.1VDD < VI < 0.9VDDmax | -10 | +10 | -10 [6-9] | +10 [6-9] | -10 [6-9] | +10 [6-9] | μA |
Ci | capacitance for each I/O pin [6-10] | - | 10 | - | 10 | - | 10 | pF |
[3-11] :一些传统标准模式设备的输入电平固定为 VIL = 1.5 V 和 VIH = 3.0 V。请参阅元件数据手册。
[6-2] :最大 VIH = VDDmax + 0.5 V 或 5.5 V,以较低者为准。请参阅元件数据手册。
[6-3] :在 3.0 V VDD 下驱动 3 mA 的相同电阻值在使用 <2 V VDD 和较小电流时提供相同的 RC 时间常数。
[6-4] :为了在 400 kHz 驱动满总线负载,在 0.6 V VOL 下需要 6 mA IDD。不符合此规格的部件仍然可以工作,但无法在 400 kHz 和 400 pF 下工作。
[6-5] :表 11 中引用的SDA和SCL总线线的最大
tf(300 ns)比输出级指定的最大 tof(250 ns)要长。这允许保护电阻(Rs)串联连接
在 SDA/SCL 引脚和 SDA/SCL 总线线之间,
如 图 45 所示,而不超过规定的最大 tf。
[6-6] :必须向后兼容快速模式。
[6-7] :在快速加模式中,下降时间对输出级和总线时序是相同的。如果使用串联电阻,设计人员在考虑总线时序时应考虑这一点。
[6-8] :SDA和SCL输入上的输入滤波器抑制小于50ns的噪声尖峰。
[6-9] :如果VDD关闭,快速模式和快速加模式设备的I/O引脚不得阻碍SDA和SCL线路。
[6-10] :诸如多路复用器和开关等特殊用途设备可能会超过此电容,因为它们将多个路径连接在一起。
表 11 Sm、Fm、Fm+下SDA和SCL I/O阶段总线
所有值均指VIH(min) (0.7VDD)和VIL(max) (0.3VDD)水平。
Symbol | Parameter | Conditions | Sm-Min | Sm-Max | Fm-Min | Fm-Max | Fm+-Min | Fm+-Max | Unit |
---|---|---|---|---|---|---|---|---|---|
fSCL | SCL clock frequency | 0 | 100 | 0 | 400 | 0 | 1000 | kHz | |
tHD;STA | hold time (repeated) START | After this period, the first clock pulse is generated. | 4.0 | - | 0.6 | - | 0.26 | - | μs |
tLOW | LOW period of the SCL clock | 4.7 | - | 1.3 | - | 0.5 | - | μs | |
tHIGH | HIGH period of the SCL clock | 4.0 | - | 0.6 | - | 0.26 | - | μs | |
tSU;STA | set-up time for a repeated START condition | 4.7 | - | 0.6 | - | 0.26 | - | μs | |
tHD;DAT | data hold time [6-11] | CBUS compatible controllers (see Remark in 4.1 cbus兼容性 Section 4.1) | 5.0 | - | - | - | - | - | μs |
tHD;DAT | data hold time [6-11] | I2C-bus devices | 0 [6-12] | - [6-13] | 0 [6-12] | - [6-13] | 0 | - | μs |
tSU;DAT | data set-up time | 250 | - | 100 [6-14] | - | 50 | - | ns | |
tr | rise time of both SDA and SCL signals | - | 1000 | 20 | 300 | - | 120 | ns | |
tf | fall time of both SDA and SCL signals [6-12] [6-15] [6-16] [6-17] | - | 300 | 20 × (VDD/5.5V) | 300 | 20 × (VDD/5.5V) [6-18] | 120 [6-17] | ns | |
tSU;STO | set-up time for STOP condition | 4.0 | - | 0.6 | - | 0.26 | - | μs | |
tBUF | bus free time between a STOP and START condition | 4.7 | - | 1.3 | - | 0.5 | - | μs | |
Cb | capacitive load for each bus line [6-19] | - | 400 | - | 400 | - | 550 | pF | |
tVD;DAT | data valid time [6-20] | - | 3.45 [6-13] | - | 0.9 [6-13] | - | 0.45 [6-13] | μs | |
tVD;ACK | data valid acknowledge time [6-21] | - | 3.45 [6-13] | - | 0.9 [6-13] | - | 0.45 [6-13] | μs | |
VnL | noise margin at the LOW level | for each connected device (including hysteresis) | 0.1VDD | - | 0.1VDD | - | 0.1VDD | - | V |
VnH | noise margin at the HIGH level | for each connected device (including hysteresis) | 0.2VDD | - | 0.2VDD | - | 0.2VDD | - | V |
[6-11] :tHD;DAT 是从SCL的下降沿测量的数据保持时间,适用于传输中的数据和确认。
[6-12] :在SDA进入0.3VDD到0.7VDD的不确定范围之前,
确保SCL在下降沿时降到0.3VDD以下。注意:对于无法观察VDD下降沿的主机,
应该独立测量SCL从静态高电平(VDD)到0.3VDD的过渡时间,以便在SDA过渡时插入相应的延迟。
[6-13] :最大tHD;DAT可以为标准模式下的3.45μs和快速模式下的0.9μs,
但必须小于tVD;DAT或tVD;ACK的最大值加上过渡时间。只有在设备不拉伸SCL信号的低电平(tLOW)的情况下,
这个最大值才能满足。如果时钟拉伸了SCL,数据必须在时钟释放之前在设置时间内保持有效。
[6-14] :快速模式I2C总线设备可以在标准模式I2C总线系统中使用,但必须满足tSU;DAT=250ns。
如果设备不拉伸SCL信号的低电平,则自动满足这一要求。如果这样的设备确实拉伸了SCL信号的低电平,
它必须在SCL信号释放之前将下一个数据位输出到SDA线。
tr(max) + tSU;DAT = 1000 + 250 = 1250 ns(符合标准模式 I2C 总线规范)。确认时序也必须满足这个设置时间。
[6-15] :如果与 Hs 模式设备混合使用,则根据 表10 允许更快的下降时间。
[6-16] :SDA和SCL总线线的最大tf规定为 300 ns。
SDA输出级的最大下降时间 tf 规定为 250 ns。
这允许在SDA和SCL引脚及SDA/SCL总线线之间连接串联保护电阻,
而不超过规定的最大 tf。
[6-17] :在快速加模式模式中,下降时间对于输出阶段和总线时是相同的。如果使用了串联电阻,设计人员应在考虑总线时序时考虑到这一点。
[6-18] :需要向后兼容快速模式。
[6-19] :最大允许总线电容可能根据实际工作电压和应用的频率不同于该值。
7.2 超出最大允许电容运行 讨论了应对较高总线电容的技术。
[6-20] :tVD;DAT = 数据信号从SCL低电平到SDA输出(高或低,取决于哪个更差)的时间。
[6-21] :tVD;ACK = 确认信号从SCL低电平到SDA输出(高或低,取决于哪个更差)的时间。
6.2 高速模式
I/O 电平、I/O 电流、脉冲抑制、输出斜率控制和 I2C 总线 Hs 模式设备的引脚电容值见 表 12 。 总线线路上的高低电平噪声裕度与 F/S 模式 I2C 总线设备的规定相同。 图 39 显示了 Hs 模式时序的所有时序参数。 在 Hs 模式下不存在“正常”的START条件 S。地址位、读写位、应答位和数据位的时序参数都是相同的。 只有在应答位之后第一个SCLH时钟信号的上升沿值更大, 因为外部 Rp 必须在没有内部电流源帮助的情况下拉高SCLH。 总线线路的 Hs 模式时序参数见 表 12 。 SCLH时钟信号的最低高电平和低电平周期以及最大上升时间和下降时间决定了最高比特率。 使用内部生成的 SCLH 信号,其低电平和高电平周期分别为 200 ns 和 100 ns, Hs 模式主机满足外部 SCLH 时钟脉冲(考虑到上升和下降时间)的时序要求,最高比特率为 3.4 Mbit/s。 因此,Hs 模式主机可以使用 10 MHz 或 10 MHz 的倍频基本频率生成 SCLH 信号。 SCLH 时钟的最高高电平和低电平周期没有限制,最低比特率也没有限制。
时序参数对于每条总线线路的电容负载高达 100 pF 是独立的,允许最大比特率为 3.4 Mbit/s。 在总线线路上电容负载增大时,比特率逐渐减小。电容负载为 400 pF 时的时序参数见 表12 , 允许的最大比特率为 1.7 Mbit/s。 对于电容负载在 100 pF 和 400 pF 之间的总线,时序参数必须线性插值。 上升时间和下降时间应符合 SDAH 和 SCLH 传输线的最大传播时间,以防止开端反射。
表 12 高速模式下 SDAH、SCLH、SDA、SCL 的IO阶段设备特性
Symbol | Parameter | Conditions | Hs-Min | Hs-Max | Unit |
---|---|---|---|---|---|
VIL | LOW-level input voltage | -0.5 | 0.3 VDD [6-22] | V | |
VIH | HIGH-level input voltage | 0.7 VDD [6-22] | VDD + 0.5 [[6-23]] | V | |
Vhys | hysteresis of Schmitt trigger inputs | 0.1VDD [6-22] | - | V | |
VOL | LOW-level output voltage | (open-drain) at 3 mA sink current at SDAH, SDA and SCLH | |||
VOL | LOW-level output voltage | VDD > 2V | 0 | 0.4 | V |
VOL | LOW-level output voltage | VDD ≤ 2 V | 0 | 0.2VDD | V |
RonL | transfer gate on resistance for currents between SDA and SDAH or fSCL | VOL level; IOL = 3 mA | - | 50 | Ω |
RonH [6-23] | transfer gate on resistance between SDA and SDAH or SCL and SCLH | both signals (SDA and SDAH, or SCL and SCLH) at VDD level | 50 | - | kΩ |
ICS | pull-up current of the SCLH current-source | SCLH output levels between 0.3VDD and 0.7VDD | 3 | 12 | mA |
trCL | rise time of SCLH signal | output rise time (current-source enabled)with an external pull-up current source of 3 mA | |||
trCL | rise time of SCLH signal | capacitive load from 10 pF to 100 pF | 10 | 40 | ns |
trCL | rise time of SCLH signal | capacitive load of 400 pF [6-24] | 20 | 80 | ns |
tfCL | fall time of SCLH signal | output fall time (current-source enabled)with an external pull-up current source of 3 mA | |||
tfCL | fall time of SCLH signal | capacitive load from 10 pF to 100 pF | 10 | 40 | ns |
tfCL | fall time of SCLH signal | capacitive load of 400 pF [6-25] | 20 | 80 | ns |
tfDA | fall time of SDAH signal | capacitive load from 10 pF to 100 pF | 10 | 80 | ns |
tfDA | fall time of SDAH signal | capacitive load of 400 pF [6-24] | 20 | 160 | ns |
tSP | pulse width of spikes that must be suppressed by the input filter | SDAH and SCLH | 0 | 10 | ns |
Ii [6-25] | input current each I/O pin | input voltage between 0.1VDD and 0.9VDD | - | 10 | μA |
Ci | capacitance for each I/O pin [6-26] | - | 10 | pF |
[6-22] :使用非标准供电电压的设备必须将其输入电平与连接到上拉电阻Rp的VDD电压相关联,这些电压不符合预期的I2C总线系统电平。
[6-22] :提供电平转换功能的设备必须容忍SDA和SCL 的最大输入电压为5.5 V。
[6-23] :对于100 pF至400 pF之间的电容总线负载,升降时间值必须线性插值。
[6-24] :如果其供电电压已关闭,Hs模式目标设备的SDAH和SCLH I/O阶段必须具有浮动输出。由于电流源输出电路通常具有连接到VDD的钳位二极管,因此对于Hs模式主机设备的SCLH或 SDAH I/O阶段,此要求并不是强制性的。这意味着不能关闭Hs模式主机设备的供电电压,否则会影响 SDAH和SCLH线路。
[6-25] :特殊目的设备,如多路复用器和开关,可能会超过这一电容,因为它们将多个路径连接在一起。
表 13 高速模式下 SDAH、SCLH、SDA、SCL 的IO阶段总线特性 37
Symbol | Parameter | Conditions | Hs-Min | Hs-Max(Cb=100pF) | HsMin(cb=400pF [6-27] ) | Hs-Max(cb=400pF [6-27] ) | Unit |
---|---|---|---|---|---|---|---|
fSCL | SCLH clock frequency | 0 | 3.4 | 0 | 1.7 | MHz | |
tSU;STA | set-up time for a repeated START condition | 160 | - | 160 | - | ns | |
tHD;STA | hold time (repeated) START condition | 160 | - | 160 | - | ns | |
tLOW | LOW period of the SCL clock | 160 | - | 320 | - | ns | |
tHIGH | HIGH period of the SCL clock | 60 | - | 120 | - | ns | |
tSU;DAT | data set-up time | 10 | - | 10 | - | ns | |
tHD;DAT | data hold time | 0 [6-28] | 70 | 0 [6-28] | 150 | ns | |
trCL | rise time of SCLH signal | 10 | 40 | 20 | 80 | ns | |
trCL1 | rise time of SCLH signal after a repeated START condition and after an acknowledge bit | 10 | 80 | 20 | 160 | ns | |
tfCL | fall time of SCLH signal | 10 | 40 | 20 | 80 | ns | |
trDA | rise time of SDAH signal | 10 | 80 | 20 | 160 | ns | |
tfDA | fall time of SDAH signal | 10 | 80 | 20 | 160 | ns | |
tSU;STO | set-up time for STOP condition | 160 | - | 160 | - | ns | |
Cb [6-27] | capacitive load for each bus line | SDAH and SCLH lines | - | 100 | - | 400 | pF |
Cb [6-27] | capacitive load for each bus line | SDAH + SDA line and SCLH + SCL line | - | 400 | - | 400 | pF |
VnL | noise margin at the LOW level | for each connected device (including hysteresis) | 0.1VDD | - | 0.1VDD | - | V |
VnH | noise margin at the HIGH level | for each connected device (including hysteresis) | 0.2VDD | - | 0.2VDD | - | V |
[6-26] :所有数值指的是VIH(min)和VIL(max)水平(见 表 12 )。
[6-27] :对于电源线负载Cb在100 pF到400 pF之间时,时序参数必须进行线性插值。
[6-28] :设备必须在内部提供数据保持时间,以桥接SCLH信号下降沿的VIH和VIL之间的不确定部分。
输入电路阈值越低,则SCLH信号的下降沿数据保持时间越短。
6.3 超高速设备
I/O 电平、I/O 电流、脉冲抑制、输出斜率控制和引脚电容见 表 14 。 UFm I2C 总线时序特性见 表 15 . 图 40 显示了 I2C 总线的时序定义. 表 15 中指定的SCL时钟的最小HIGH和LOW周期决定了超快速模式下最大 5000 kbit/s 的位传输速率。 设备必须能够在其自身最大位速率下跟随传输,无论是能够以该速度发送还是接收。
表 14 超高速模式下 SDAH、SCLH、SDA、SCL 的IO阶段设备特性
Symbol | Parameter | Conditions | UFm-Min | UFm-Max | Unit |
---|---|---|---|---|---|
VIL | LOW-level input voltage [6-29] | -0.5 | +0.3VDD | V | |
VIH | HIGH-level input voltage [6-29] | 0.7VDD [6-29] | - [6-30] | V | |
Vhys | hysteresis of Schmitt trigger inputs | 0.05VDD | - | V | |
VOL | LOW-level output voltage | at 4 mA sink current; VDD > 2 V | 0 | 0.4 | V |
VOH | HIGH-level output voltage | at 4 mA source current; VDD > 2 V | VDD - 0.4 | - | V |
IL | leakage current | VDD = 3.6 V | -1 | +1 | μA |
IL | leakage current | VDD = 5.5 V | -10 | +10 | μA |
Ci | input capacitance [6-31] | - | 10 | pF | |
tSP | pulse width of spikes that must be suppressed by the input filter [6-32] | - | 10 | ns |
[6-29] :请参阅元件数据表以获取实际开关点。
[6-30] :最大VIH = VDD + 0.5 V或5.5 V,以较低者为准。请参阅元件数据表。
[6-31] :特殊用途设备如多路复用器和开关可能会超过此电容,因为它们连接多个路径。
[6-32] :USDA和USCL目标输入上的输入滤波器抑制小于10 ns的噪声尖峰。
表 15 超高速模式下 SDAH、SCLH、SDA、SCL 的IO阶段总线特性 37
Symbol | Parameter | Conditions | UFm-Min | UFm-Max | Unit |
---|---|---|---|---|---|
fUSCL | USCL clock frequency | 0 | 5000 | kHz | |
tBUF | bus free time between a STOP and START condition | 80 | - | ns | |
tHD;STA | hold time (repeated) START condition | 50 | - | ns | |
tSU;STA | set-up time for a repeated START condition | 50 | - | ns | |
tSU;STO | set-up time for STOP condition | 50 | - | ns | |
tHD;DAT | data hold time | 10 | - | ns | |
tVD;DAT | data valid time [6-33] | 10 | - | ns | |
tSU;DAT | data set-up time | 30 | - | ns | |
tLOW | LOW period of the USCL clock | 50 | - | ns | |
tHIGH | HIGH period of the USCL clock | 50 | - | ns | |
tf | fall time of both USDA and USCL signals | - [6-34] | 50 | ns | |
tr | rise time of both USDA and USCL signals | - [6-34] | 50 | n |
[6-33] :tVD;DAT = USDA数据在USCL低点后的最低有效时间。
[6-34] :UFm信号的典型上升时间或下降时间为25纳秒,从30%的水平测量到70%的水平(上升时间)或从70%的水平测量到30%的水平(下降时间)。
第7章 i2c总线设备与总线线路的电气连接
7.1 上拉电阻的电阻值选择
总线电容是导线、连接和引脚的总电容。这种电容限制了由于规定的上升时间而导致的Rp的最大值。 图 41 显示了Rp(max)与总线电容的关系。
考虑与VDD相关的输入阈值VIH = 0.7VDD和VVIL = 0.3VDD, 以便计算RC时间常数。则V(t) = VDD (1 - e-t / RC),其中t是从充电开始后的时间,RC是时间常数。
V(t1) = 0.3 × VDD = VDD (1 - e-t1 / RC);因此t1 = 0.3566749 × RC
V(t2) = 0.7 × VDD = VDD (1 - e-t2 / RC);因此t2 = 1.2039729 × RC
T = t2 - t1 = 0.8473 × RC
图 41 和 方程 1 显示了标准模式、快速模式和快速加模式的总线电容对最大Rp的影响。 对于每种模式,Rp(max)是来自 表 11 的上升时间最大值(tr)和来自 表 10 估计的总线电容(Cb)的函数:
供电电压限制了电阻Rp的最小值,这取决于标准模式和快速模式下规定的最小漏电流3 mA, 或者快速加模式下的20 mA。Rp(min)作为VDD的函数如 图 42 所示。 曲线是使用 公式 2 计算得出的。
设计师现在已确定满足时序规范所需的Rp的最小值和最大值。 对供电电流消耗敏感的便携式设计可以使用靠近范围高端的值,以限制IDD。
7.2 超出最大允许电容运行
总线电容限制被规定以限制上升时间的降低并允许在额定频率下工作。 虽然大多数设计可以轻松保持在这一限制之内,但某些应用可能会超过这个限制。系统设计师有几种策略可以应对过高的总线电容。
- 7.2.1 降低fscl :总线可以以更低的速度(较低的 fSCL)运行。
- 7.2.2 更高的驱动输出 :可以使用具有更高驱动电流的设备, 例如额定为快速加模式的设备(PCA96xx)。
- 7.2.3 总线缓冲器、多路复用器和开关 :有多种总线缓冲器设备可用,可以将总线分成多个段, 以使每个段的电容低于允许的限制,例如 PCA9517 总线缓冲器或 PCA9546A 交换机。
- 7.2.4 切换式上拉电路 :可以使用切换式上拉电路通过在需要时交替接入和拔出低值上拉电阻来加速上升沿。
7.2.1 降低fscl
要确定允许的最低总线操作频率,首先找到总线上最限制性的器件的tLOW和tHIGH。 请参阅各个组件的数据手册以获取这些值。实际上升时间(tr)取决于RC时间常数。 最限制的下降时间(tf)取决于总线上最低的输出驱动。 确保考虑到任何具有最小tr或tf的器件。请参考 方程 3 以获得结果fmax。
Note:
非常长的总线还必须考虑信号的飞行时间。
实际结果较慢,因为实际部分并未把tLOW和tHIGH控制在从30%到70%或从70%到30%的最小值。
7.2.2 更高的驱动输出
如果使用像PCA96xx快速加模式或P82B总线缓冲器这样的高驱动设备,那么更强的输出驱动器会吸收更多电流, 这会导致边缘速率显著加快,或者换个角度来看,允许更高的总线电容。 有关实际输出驱动能力,请参阅个别元件数据表。使用新的Cb,Rp,tr和tf值重复上述计算, 以确定最大频率。请记住,表 11 中规定的fSCL的 最大额定值(100 kHz,400 kHz和1000 kHz)可能会成为限制因素。
7.2.3 总线缓冲器、多路复用器和开关
应对最多总线电容的另一种方法是使用总线缓冲器、多路复用器或开关将总线划分为更小的段。 图 43 显示了一个示例,该示例使用PCA9515缓冲器来处理高总线电容。 每个段允许具有最大电容,因此总的总线可以具有两倍的最大电容。 请注意,添加缓冲器总是会增加延迟——缓冲器延迟加上每个边缘的额外过渡时间,这会降低最大工作频率, 并可能引入特殊的VIL和VOL考虑。
有关此主题的更多详细信息以及NXP半导体提供的设备,请参阅应用笔记 AN255、I2C / SMBus重复器、中心集线器和扩展器, 以及AN262、PCA954x系列I2C / SMBus多路复用器和开关。
7.2.4 切换式上拉电路
电源电压(VDD)和最大输出低电平确定了上拉电阻Rp的最小值 (见 7.1 上拉电阻的电阻值选择 )。 例如,当电源电压为VDD = 5 V ± 10 %,且在3 mA时VOL(max) = 0.4 V时, Rp(min) = (5.5 - 0.4)/ 0.003 = 1.7 kΩ。 如 图 42 所示,这个Rp值将最大总线电容限制在约200 pF, 以满足最大tr要求300 ns。如果总线的电容高于这个值,可以使用切换式上拉电路(如 图 44 所示)。
图 44 中的开关上拉电路适用于供电电压VDD = 5 V ± 10 %和最大电容负载为400 pF。 由于它由总线电平控制,因此不需要额外的开关控制信号。 在上升/下降沿期间,HCT4066中的双向开关在0.8 V和2.0 V之间的总线电平下切换上拉电阻Rp2的开/关。 组合电阻Rp1和Rp2可以在最大规定上升时间(tr)为300 ns内将总线线拉高。
串联电阻Rs是可选的。 它们保护I2C总线设备的I/O级别免受总线线上的高电压尖峰影响,并最小化总线线信号的串扰和下冲。 当总线线切换到低电平以关闭Rp2时,Rs的最大值由此电阻上的最大允许电压降决定。
此外,一些总线缓冲器含有内置的上升时间加速器。独立的上升时间加速器也可用。
7.3 串联保护电阻
如 图 45 所示, 可以使用例如300Ω的串联电阻(Rs)来防止SDA和SCL线路上的高压尖峰 (例如,电视显像管的闪络所导致)。如果使用串联电阻,设计人员必须将额外的电阻考虑到他们对Rp和允许总线电容的计算中。
对LOW电平所需的0.1VDD噪声裕度限制了Rs的最大值。 Rs(max)作为Rp的函数如 图 46 所示。注意串联电阻会影响输出下降时间。
7.4 输入泄露
每个输入/输出连接的最大高电平输入电流具有指定的最大值为10 μA。 由于高电平所需的噪声裕量为0.2VDD,这个输入电流限制了Rp的最大值。 这个限制依赖于VDD。总高电平输入电流作为Rp(max)的函数显示在 图 47 中。
7.5 总线线路的布线模式
一般来说,电缆的选择必须使总线线的串扰和干扰降到最低。 由于上拉设备的相对高阻抗,总线线在高电平时最容易受到串扰和干扰。
如果PCB或扁平电缆上的总线线长度超过10厘米,并且包括VDD和VSS线,则接线图案应为:
- SDA _______________________
- VDD ________________________
- VSS ________________________
- SCL _______________________
如果仅包括VSS线,则接线图案应为:
- SDA _______________________
- VSS ________________________
- SCL _______________________
这些接线图案还会导致SDA和SCL线的电容负载相同。
如果使用带有VSS和/或VDD层的PCB, 则可以省略VSS和VDD线。
如果总线线是双绞线,则每条总线线必须与VSS回路成绞合。 此外,SCL线可以与VSS回路成绞合, SDA线可以与VDD回路成绞合。 在后一种情况下,必须在双绞线的两端使用电容器将VDD线与VSS线解耦。
如果总线线是屏蔽的(屏蔽接地到VSS),则干扰会降到最低。 然而,屏蔽电缆必须在SDA和SCL线之间具有低电容耦合,以最小化串扰。
第 8章 缩写
表 16 缩写
首字母缩略词 (Acronym) | 描述 |
---|---|
A/D | Analog-to-Digital |
ATCA | Advanced Telecom Computing Architecture |
BMC | Baseboard(基板) Management Controller |
CMOS | Complementary Metal-Oxide Semiconductor |
cPCI | compact(紧凑) Peripheral Component Interconnect |
D/A | Digital-to-Analog |
DIP | Dual In-line Package |
EEPROM | Electrically Erasable Programmable Read Only Memory |
HW | Hardware |
I/O | Input/Output |
I2C-bus | Inter-Integrated Circuit bus |
IC | Integrated Circuit |
IPMI | Intelligent Platform Management Interface |
LCD | Liquid Crystal Display |
LED | Light Emitting Diode |
LSB | Least Significant Bit |
MCU | Microcontroller |
MSB | Most Significant Bit |
NMOS | Negative-channel Metal-Oxide Semiconductor |
PCB | Printed-Circuit Board |
PCI | Peripheral Component Interconnect |
PMBus | Power Management Bus |
RAM | Random Access Memory |
ROM | Read-Only Memory |
SMBus | System Management Bus |
SPI | Serial Peripheral Interface |
UART | Universal Asynchronous Receiver/Transmitter |
USB | Universal Serial Bus |
第9章 MIPI I3C概述
MIPI I3C(以及公开可用的MIPI I3C Basic)提供了一种可扩展的中速、实用和控制总线,用于将外设连接到应用处理器。 其设计结合了I2C总线和SPI接口的关键特性,提供了统一的高性能、低功耗接口解决方案,为I2C总线和SPI实施者提供了灵活的升级路径。 I3C最初于2017年推出,是基于与MEMS和传感器产业集团以及更广泛电子生态系统的广泛合作的多年开发项目的成果。
如 图 48 所示,具有50 ns滤波器的I2C总线目标可以与以12.5 MHz速度运行的I3C主机共存, 使现有的I2C总线设计能够迁移到I3C规范。相反,在典型的400 kHz或1 MHz I2C总线速度下工作的I3C目标可以与现有的I2C总线主机共存。
就像I2C一样,I3C也采用标准的CMOS I/O引脚,通过两线接口实现,但与I2C不同的是,它支持带内中断,使从机能够通知主机发生中断, 这一设计特性消除了每个从机需要单独的一般用途输入/输出(GPIO)中断的需求,从而降低了系统成本和复杂性。 对动态地址分配的支持有助于最小化引脚数量,这对适应空间受限的形状因素至关重要。
I3C支持一个多路总线,在12.5 MHz时支持10 Mbps的标准数据速率(SDR),并提供高数据速率(HDR)模式的选项。 最终结果是,I3C在性能和功率效率上相比I2C有了显著提升,如 图 49 所示。
I3C的其他技术亮点包括多主机支持、动态寻址、命令码兼容性以及统一的高级电源管理特性的方法, 例如睡眠模式。它提供了同步和异步时间戳功能,以提高融合来自各种外设的信号的应用的准确性。 它还可以快速批处理和传输数据,以最小化主处理器的能耗。
9.1 功能比较
虽然I3C的完整版仅对MIPI联盟成员开放,但MIPI已经发布了一个公共版本,称为I3C Basic, 包含了开发人员和其他标准组织最常需要的I3C功能。I3C Basic可在没有MIPI会员资格的情况下实施,旨在为所有实施者提供一个免版税的许可环境。 图 50 总结了I3C和I3C Basic支持的关键功能。
为了支持开发人员,通过多次互操作性研讨会确认了不同I3C实施之间的兼容性,并提供了若干支持MIPI的资源。这些资源包括:
- I3C主控制器接口 – MIPI I3C HCI
- 适用于Linux的I3C HCI驱动程序
- I3C发现与配置规范 – I3C的DisCo
- I3C调试和测试接口 – MIPI调试I3C
I3C知识产权(IP)可从多个供应商处获得,包括I3C Basic的免许可版本。I3C符合性测试和验证IP测试套件也可从多个供应商处获得。
有关I3C和I3C Basic的更多信息,可通过MIPI联盟网站获取https://www.mipi.org/specifications/i3c-sensor-specification