I²C(IIC)总线协议详解—完整版
1、 介绍I²C总线规范
对于面向8 位的数字控制应用,譬如那些要求用微控制器,的要建立一些设计标准:
• 一个完整的系统通常由至少一个微控制器和其他外围器件,例如存储器和I/O 扩展器组成。
• 系统中不同器件的连接成本必须最小。
• 执行控制功能的系统不要求高速的数据传输。
• 总的效益由选择的器件和互连总线结构的种类决定。
产生一个满足这些标准的系统需要一个串行的总线结构,尽管串行总线没有并行总线的数据吞吐能力,但它们只要很少的配线和IC 连接管脚。然而,总线不仅仅是互连的线,还包含系统通讯的所有格式和过程。
串行总线的器件间通讯必须有某种形式的协议避免所有混乱、数据丢失和妨碍信息的可能性。快速器件必须可以和慢速器件通讯。系统必须不能基于所连接的器件,否则不可能进行修改或改进。应当设计一个过程决定哪些器件何时可以控制总线。而且,如果有不同时钟速度的器件连接到总线,必须定义总线的时钟源。所有这些标准都在I²C 总线的规范中。
2、I²C 总线的概念
I²C总线支持任何IC 生产过程(NMOS、CMOS、双极性)。两线——串行数据(SDA) 和串行时钟(SCL) 线在连接到总线的器件间传递信息。每个器件都有一个唯一的地址识别(无论是微控制器、LCD驱动器、存储器或键盘接口),而且都可以作为一个发送器或接收器(由器件的功能决定)。很明显,LCD驱动器只是一个接收器,而存储器则既可以接收又可以发送数据。除了发送器和接收器外,器件在执行数据传输时也可以被看作是主机或从机(见图1)。主机是初始化总线的数据传输并产生允许传输的时钟信号的器件。此时,任何被寻址的器件都被认为是从机。
I²C 总线是一个多主机的总线。这就是说可以连接多于一个能控制总线的器件到总线。由于主机通常是微控制器,让我们考虑以下数据在两个连接到I2C 总线的微控制器之间传输的情况(见图2)。
这突出了I²C 总线的主机从机和接收器发送器的关系。应当注意的是:这些关系不是持久的,只由当时数据传输的方向决定。传输数据的过程如下:
1)、假设微控制器A 要发送信息到微控制器B:
• 微控制器A(主机)寻址微控制器B(从机)
• 微控制器A(主机—发送器)发送数据到微控制器B(从机—接收器)
• 微控制器A 终止传输
2)、如果微控制器A 想从微控制器B 接收信息:
• 微控制器A(主机)寻址微控制器B(从机)
• 微控制器A 主机接收器从微控制器B 从机发送器接收数据
• 微控制器A 终止传输
甚至在这种情况下,主机(微控制器A)也产生定时而且终止传输。
连接多于一个微控制器到I²C总线的可能性意味着超过一个主机可以同时尝试初始化传输数据。为了避免由此产生混乱,发展出一个仲裁过程。它依靠线与连接所有I²C总线接口到I²C总线。
如果两个或多个主机尝试发送信息到总线,在其他主机都产生“0 ”的情况下首先产生一个“1” 的主机将丢失仲裁。仲裁时的时钟信号是用线与连接到SCL线的主机产生的时钟的同步结合。
在I²C总线上产生时钟信号通常是主机器件的责任;当在总线上传输数据时,每个主机产生自己的时钟信号。主机发出的总线时钟信号只有在以下的情况才能被改变:慢速的从机器件控制时钟线并延长时钟信号,或者在发生仲裁时被另一个主机改变。
3、总体特征
SDA 和SCL 都是双向线路,都通过一个电流源或上拉电阻连接到正的电源电压(见图3)当总线空闲时,这两条线路都是高电平。连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能。I²C总线上数据的传输速率在标准模式下可达100kbit/s, 在快速模式下可达400kbit/s, 在高速模式下可达3.4Mbit/s。 连接到总线的接口数量只由总线电容是400pF 的限制决定。
4、位传输
由于连接到I²C总线的器件有不同种类的工艺(CMOS、NMOS、双极性),逻辑“0”(低)和“1”(高)的电平不是固定的,它由VDD 的相关电平决定。每传输一个数据位就产生一个时钟脉冲。
4.1 数据的有效性
SDA 线上的数据必须在时钟的高电平周期保持稳定。数据线的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变(见图4)。
4.2 起始和停止条件
在I²C总线中,唯一出现的是被定义为起始(S)和停止(P)条件(见图5) 的情况。
其中一种情况是在SCL 线是高电平时,SDA 线从高电平向低电平切换表示起始条件。
当SCL 是高电平时,SDA 线由低电平向高电平切换表示停止条件。
起始和停止条件一般由主机产生。总线在起始条件后被认为处于忙的状态。在停止条件的某段时间后,总线被认为再次处于空闲状态。
如果产生重复起始(Sr) 条件而不产生停止条件,总线会一直处于忙的状态。此时的起始条件(S)和重复起始(Sr) 条件在功能上是一样的(见图10)。 因此在本文档的剩余部分,符号S 将作为一个通用的术语既表示起始条件又表示重复起始条件,除非有特别声明的Sr。
如果连接到总线的器件合并了必要的接口硬件,那么用它们检测起始和停止条件十分简便。但是,没有这种接口的微控制器在每个时钟周期至少要采样SDA 线两次来判别有没有发生电平切换。
5、传输数据
5.1 字节格式
发送到SDA 线上的每个字节必须为8 位。每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。首先传输的是数据的最高位(MSB)( 见图6)。 如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平迫使主机进入等待状态。当从机准备好接收下一个数据字节并释放时钟线SCL 后,数据传输继续。
在一些情况下,可以用与I²C 总线格式不一样的格式(例如兼容CBUS 的器件)。甚至在传输一个字节时,用这样的地址起始的报文可以通过产生停止条件来终止。此时不会产生响应。
5.2 响应
数据传输必须带响应。相关的响应时钟脉冲由主机产生。在响应的时钟脉冲期间,发送器释放SDA 线(高)。
在响应的时钟脉冲期间,接收器必须将SDA 线拉,低使它在这个时钟脉冲的高电平期间保持稳定的低电平(见图7)。 当然,必须考虑建立和保持时间。
通常,被寻址的接收器在接收到的每个字节后,除了用CBUS 地址开头的报文,必须产生一个响应。
当从机不能响应从机地址时(例如它正在执行一些实时函数不能接收或发送),从机必须使数据线保持高电平。主机然后产生一个停止条件终止传输或者产生重复起始条件开始新的传输。
如果从机接收器响应了从机地址但是在传输了一段时间后不能接收更多数据字节,主机必须再一次终止传输。这个情况用从机在第一个字节后没有产生响应来表示。从机使数据线保持高电平,主机产生一个停止或重复起始条件。
如果传输中有主机接收器,它必须通过在从机不产生时钟的最后一个字节不产生一个响应,向从机发送器通知数据结束。从机发送器必须释放数据线,允许主机产生一个停止或重复起始条件。
6、仲裁和时钟发生
6.1 同步
所有主机在SCL 线上产生它们自己的时钟来传输I²C总线上的报文。数据只在时钟的高电平周期有效。因此,需要一个确定的时钟进行逐位仲裁。
时钟同步通过线与连接I²C接口到SCL 线来执行。这就是说:SCL 线的高到低切换会使器件开始数它们的低电平周期,而且一旦器件的时钟变低电平,它会使SCL 线保持这种状态直到到达时钟的高电平(见图8)。但是,如果另一个时钟仍处于低电平周期,这个时钟的低到高切换不会改变SCL 线的状态。因此,SCL 线被有最长低电平周期的器件保持低电平。此时,低电平周期短的器件会进入高电平的等待状态。
当所有有关的器件数完了它们的低电平周期后,时钟线被释放并变成高电平。之后,器件时钟和SCL线的状态没有差别。而且所有器件会开始数它们的高电平周期。首先完成高电平周期的器件会再次将SCL线拉低。
这样,产生的同步SCL 时钟的低电平周期由低电平时钟周期最长的器件决定,而高电平周期由高电平时钟周期最短的器件决定。
6.2 仲裁
主机只能在总线空闲的时侯启动传输。两个或多个主机可能在起始条件的最小持续时间(tHD; STA) 内产生一个起始条件,结果在总线上产生一个规定的起始条件。
当SCL 线是高电平时,仲裁在SDA 线发生;这样,在其他主机发送低电平时,发送高电平的主机将断开它的数据输出级,因为总线上的电平与它自己的电平不相同。
仲裁可以持续多位。它的第一个阶段是比较地址位。如果每个主机都尝试寻址相同的器件,仲裁会继续比较数据位(如果是主机—发送器),或者比较响应位(如果是主机—接收器)。因为I²C 总线的地址和数据信息由赢得仲裁的主机决定,在仲裁过程中不会丢失信息。
丢失仲裁的主机可以产生时钟脉冲直到丢失仲裁的该字节末尾。
由于Hs 模式的主机有一个唯一的8位主机码,因此一般在第一个字节就可以结束仲裁。
如果主机也结合了从机功能,而且在寻址阶段丢失仲裁,它很可能就是赢得仲裁的主机在寻址的器件。因此,丢失仲裁的主机必须立即切换到它的从机模式。
图9 显示了两个主机的仲裁过程。当然,可能包含更多的内容(由连接到总线的主机数量决定)。此时,产生DATA1 的主机的内部数据电平与SDA 线的实际电平有一些差别,如果关断数据输出,这就意味着总线连接了一个高输出电平。这不会影响由赢得仲裁的主机初始化的数据传输。
由于I²C 总线的控制只由地址或主机码以及竞争主机发送的数据决定,没有中央主机,总线也没有任何定制的优先权。
必须特别注意的是:在串行传输时,当重复起始条件或停止条件发送到I²C 总线的时侯,仲裁过程仍在进行。如果可能产生这样的情况,有关的主机必须在帧格式相同位置发送这个重复起始条件或停止条件。也就是说,仲裁在不能下面情况之间进行:
• 重复起始条件和数据位
• 停止条件和数据位
• 重复起始条件和停止条件
从机不被卷入仲裁过程。
6.3 用时钟同步机制作为握手
时钟同步机制除了在仲裁过程中使用外,还可以用于使能接收器处理字节级或位级的快速数据传输。
在字节级的快速传输中,器件可以快速接收数据字节,但需要更多时间保存接收到的字节或准备另一个要发送的字节。然后,从机以一种握手过程(见图6)在接收和响应一个字节后使SCL 线保持低电平,迫使主机进入等待状态,直到从机准备好下一个要传输的字节。
在位级的快速传输中,器件(例如对I²C总线有或没有限制的微控制器)可以通过延长每个时钟的低电平周期减慢总线时钟。从而,任何主机的速度都可以适配这个器件的内部操作速率。
在Hs 模式中,握手的功能只能在字节级使用。
7、7 位的地址格式
数据的传输遵循图10 所示的格式。在起始条件(S) 后,发送了一个从机地址。这个地址共有7 位,紧接着的第8 位是数据方向位(R/W)—“0”表示发送(写),“1”表示请求数据(读)。数据传输一般由主机产生的停止位(P) 终止。但是,如果主机仍希望在总线上通讯,它可以产生重复起始条件(Sr)和寻址另一个从机,而不是首先产生一个停止条件。在这种传输中,可能有不同的读/写格式结合。
可能的数据传输格式有:
• 主机—发送器发送到从机—接收器。传输的方向不会改变(见图11)。
• 在第一个字节后,主机立即读从机(见图12)。 在第一次响应时,主机—发送器变成主机—接收器,从机—接收器变成从机—发送器。第一次响应仍由从机产生。之前发送了一个不响应信号(A)的主机产生停止条件。
• 复合格式(见图13)传输改变方向的时侯,起始条件和从机地址都会被重复。但R/W 位取反。如果主机接收器发送一个重复起始条件,它之前应该发送了一个不响应信号(A)。
注意:
1 )、复合格式可以用于例如控制一个串行存储器。在第一个数据字节期间,要写内部存储器的位置。在重复起始条件和从机地址后,数据可被传输。
2) 、自动增加或减少之前访问的存储器位置等所有决定都由器件的设计者决定。
3 )、每个字节都跟着一个响应位,在序列中用A模块表示。
4 )、兼容I²C总线的器件在接收到起始或重复起始条件时必须复位它们的总线逻辑,甚至在这些起始条件没有根据正确的格式放置,它们也都期望发送从机地址。
5 )、起始条件后面立即跟着一个停止条件(报文为空)是一个不合法的格式。
8、7 位寻址
I²C总线的寻址过程是通常在起始条件后的第一个字节决定了主机选择哪一个从机。例外的情况是可以寻址所有器件的“广播呼叫”地址。使用这个地址时,理论上所有器件都会发出一个响应。但是,也可以使器件忽略这个地址。广播呼叫地址的第二个字节定义了要采取的行动。
8.1 第一个字节的位定义
第一个字节的头7 位组成了从机地址(见图14)。 最低位(LSB) 是第8 位。它决定了报文的方向。第一个字节的最低位是“0”表示主机会写信息到被选中的从机。“1”表示主机会向从机读信息。
当发送了一个地址后,系统中的每个器件都在起始条件后将头7 位与它自己的地址比较。如果一样,器件会任务它被主机寻址,至于是从机—接收器还是从机—发送器都由R/W 位决定。
从机地址由一个固定和一个可编程的部分构成。由于很可能在一个系统中有几个同样的器件,从机地址的可编程部分使最大数量的这些器件可以连接到I²C总线上。器件可编程地址位的数量由它可使用的管脚决定。例如,如果器件有4 个固定的和3 个可编程的地址位,那么相同的总线上共可以连接8 个相同的器件。
I²C总线委员会协调I²C地址的分配。
注:
1)、 没有器件允许在接收到起始字节后响应。
2)、 CBUS 地址已被保留使可以在相同的系统内部混合兼容CBUS 和兼容I²C总线的器件。接收到这个地址时,兼容I²C总线的器件不能响应。
3)、 保留给不同总线格式的地址包括使能I²C和其他协议混合。只有可以在这种格式和协议下工作兼容I²C总线的器件才能响应这个地址。
8.1.1 广播呼叫地址
广播呼叫地址是用来寻址连接到I²C 总线上的每个器件。但是,如果器件在广播呼叫结构中不需要任何数据,它可以通过不发出响应来忽略这个地址。如果器件要求从广播呼叫地址得到数据,它会响应这个地址并作为从机—接收器运转。第二个和接下来的字节会被能处理这些数据的每个从机—接收器响应。广播呼叫地址的含意通常在第二个字节说明(见图15)。
这里要考虑两种情况:
• 当最低位B 是“0”。
• 当最低位B 是“1”。
当位B 是“0”时,第二个字节的定义如下:
• 00000110 (H ‘06’)。 通过硬件写入和复位从机地址的可编程部分。接收到这个两字节序列时,所有打算响应这个广播呼叫地址的器件将复位并接受它们地址的可编程部分。要采取预防措施确保器件不会在加上电源电压后将SDA 或SCL 线拉低,因为这些低电平会阻塞总线。
• 00000100 (H ‘04’)。通过硬件写从机地址的可编程部分。所有通过硬件定义地址可编程部分(和响应广播呼叫地址)的器件会在接收这两个字节序列时锁存可编程的部分。器件不会复位。
• 00000000 (H ‘00’)。这个代码不允许在第二个字节使用。
编程过程的顺序请参考相应器件的数据表。
剩下的代码没有被确定,器件必须忽略它们。
当位B 是“1”时,这个两字节序列是一个“硬件广播呼叫”。即序列由一个硬件主机器件发送,例如键盘扫描器,它们不能编程来发送一个期望的从机地址。由于硬件主机预先不知道报文要传输给哪个器件,它只能产生这个硬件广播呼叫和它自己的地址——让系统识别它(见图16)。
第二个字节中剩下的7 位是硬件主机的地址。这个地址被一个连接到总线的智能器件识别(例如:微控制器并指引硬件主机的信息。如果硬件主机也可以作为从机,它的从机地址和主机地址一样。
在一些系统中,可以选择在系统复位后在从机—接收器模式中设置硬件主机发送器。这样,系统的配置主机可以告诉硬件主机发送器(现在处于从机接收器模式)数据必须发送到哪个地址(见图17)。 这个编程过程后,硬件主机仍处于主机—发送器模式。
8.1.2 起始字节
微控制器可以用两种方法连接到I²C总线。有片上硬件I²C总线接口的微控制器可被编程为只由总线的请求中断。当器件没有这种接口时,它必须经常通过软件监控总线。很显然,微控制器监控或查询总线的次数越多,用于执行自己功能的时间越少。
因此,快速硬件器件和相关的依靠查询的慢速微控制器有速度差别。
此时,数据传输前应有一个比正常时间长的起始过程(见图18)。 起始过程包括:
• 起始条件(S)
• 起始字节(00000001)
• 响应时钟脉冲(ACK)
• 重复起始条件(Sr)
在要求总线访问的主机发送起始条件S 后,发送起始字节(00000001)。因此,另一个微控制器可以采样以低采样速率采样SDA 线,直到在启动字节检测到7 个0。在SDA 线检测到这个低电平后,微控制器切换到一个更高的采样速率寻找用于同步的重复起始条件Sr。
接收到重复起始条件Sr 后硬件接收器会复位,从而忽略了起始字节。
在起始字节后产生一个相关的响应时钟脉冲。这只在遵守总线的字节处理格式时出现。没有器件允许响应起始字节。
8.1.3 CBUS 的兼容性
CBUS 接收器可以连接到标准模式的I²C总线。但是,必须连接第三条叫DLEN 的线,而且要省略响应位。通常,I²C的传输是8 位的字节序列;兼容CBUS 的器件有不同的格式。
在混合的总线结构中,I²C总线器件必须不能响应CBUS 的报文。因此,保留了一个兼容I²C总线器件不会相应的特殊CBUS 地址(0000001X)。发送CBUS 地址后,DLEN 线被激活,发送CBUS 格式的报文(见图19)。在停止条件后,所有器件再次准备好接收数据。
主机—发送器可以在发送CBUS 地址后发送CBUS 格式。传输由能被所有器件识别的停止条件结束。
注意:如果已知CBUS 配置而且不能预见CBUS 兼容器件的扩展,设计者允许根据所用器件的特殊要求调整保持时间。
9、标准模式I²C总线规范的扩展
标准模式I²C总线规范在80 年代的初期已经存在,它规定数据传输速率可高达100kbit/s 而且7 位寻址。这个概念在普及中迅速成长,今天它已经作为一个标准被全世界接受,而且Philips Semiconductors和其他供应商提供了几百种不同的兼容IC。为了符合更高速度的要求以及制造更多可使用的从机地址给数量不断增长的新器件,标准模式I²C总线规范不断升级,到今天它提供了以下的扩展:
• 快速模式,位速率高达400kbit/s。
• 高速模式(Hs 模式),位速率高达3.4Mbit/s。
• 10 位寻址,允许使用高达1024 个额外的从机地址。
扩展I²C总线规范主要有两个原因:
• 现在很多应用需要传输大量的串行数据,要求的位速率远远超过100kbit/s (标准模式),或者甚至是400kbit/s (快速模式)。半导体技术持续改进的结果使I2C 总线器件现在可以使用高达3.4Mbit/s (Hs 模式)的位速率,而且接口电路的生产成本没有任何明显的提高。
• 由于使用7 位寻址策略的大多数112 地址能被立即分配,很显然要求更多地址结合来防止为新器件分配从机地址的问题。这个问题可以用新的10 位寻址策略解决它允许可使用的地址成10 倍增长。
带有快速或Hs 模式I²C总线接口的新从机器件可以有7 位或10 位的从机地址。如果可能的话,首选7 位地址,因为它是最便宜的硬件解决方案,而且报文长度最短。有7 位和10 位地址的器件可以在相同的I²C总线系统中混合使用。不需要考虑它是F/S 模式还是Hs 模式的系统。现有的和未来的主机都能产生7位或10 位的地址。
10、快速模式
已经在标准模式I²C总线规范提出的协议、格式、逻辑电平和SDA 以及SCL 线的最大电容负载在快速模式I²C总线规范都没有修改。带I²C总线接口的新器件必须至少符合快速模式或Hs 模式规范的最小要求。
快速模式器件可以在400kbit/s 下接收和发送。最小要求是:它们可以和400kbit/s 传输同步;可以延长SCL 信号的低电平周期来减慢传输。快速模式器件都向下兼容,可以和标准模式器件在0~100kbit/s 的I²C总线系统通讯。但是,由于标准模式器件不向上兼容,所以不能在快速模式I²C总线系统中工作,因为它们不能跟上这么快的传输速率因而会产生不可预料的状态。
快速模式I²C总线规范与标准模式相比有以下额外的特征:
• 最大位速率增加到400kbit/s。
• 调整了串行数据(SDA)和串行时钟(SCL)信号的时序。没有必要与其他总线系统例如:CBUS兼容,它们不能在增加的位速率下工作。
• 快速模式器件的输入有抑制毛刺的功能,SDA 和SCL 输入有Schmitt 触发器。
• 快速模式器件的输出缓冲器对SDA 和SCL 信号的下降沿有斜率控制功能。
• 如果快速模式器件的电源电压被关断,SDA 和SCL 的I/O 管脚必须悬空,不能阻塞总线。
• 连接到总线的外部上拉器件必须调整以适应快速模式I²C总线更短的最大允许上升时间。对于负载最大是200pF 的总线,每条总线的上拉器件可以是一个电阻;对于负载在200pF~400pF 之间的总线,上拉器件可以是一个电流源(最大值3mA)或者是一个开关电阻电路(见图43)。
11、Hs 模式
高速模式(Hs 模式)器件对I²C总线的传输速度有具大的突破。Hs 模式器件可以在高达3.4Mbit/s 的位速率下传输信息,而且保持完全向下兼容快速模式或标准模式(F/S 模式)器件,也就是说它们可以在一个速度混合的总线系统中双向通讯。Hs 模式传输除了不执行仲裁和时钟同步外,与F/S 模式系统有相同的串行总线协议和数据格式。虽然Hs 模式器件是首选的器件(它们可以在大量的应用中使用),但是新器件有没有快速或Hs 模式I²C总线接口由应用决定。
11.1 高速传输
要获得位速率高达3.4Mbit/s 的传输,对正常的I²C总线规范要作出以下的改进:
• 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 信号的低电平,但只允许在Hs 模式传输的响应位后进行。
• Hs 模式器件的输出可以抑制毛刺,而且SDAH 和SCLH 输出有一个Schmitt 触发器。
• Hs 模式器件的输出缓冲器对SDAH 和SCLH 信号的下降沿有斜率控制功能。
图20 是只有Hs 模式器件的系统的物理I²C总线配置。主机器件的SDA 和SCL 管脚只在速度混合的总线系统中使用,在只有Hs 模式的系统中不需要连接。此时,这些管脚有其他功能。
可选的串连电阻Rs 保护I²C总线器件的I/O 级,防止总线上高电压的毛刺影响I/O 级并将振荡和干扰减到最小。
上拉电阻Rp 使SDAH 和SCLH 线在总线空闲的时侯保持高电平,并确保信号在要求的上升时间内从低电平变成高电平。对于电容负载很高(>100pF)的总线线路,为了符合上升时间的要求,可以用外部上拉电流源代替Rp。 除非跟着一个响应位,Hs 模式传输的SCLH 时钟脉冲上升时间被激活主机的内部电流源上拉电路MCS 缩短。
11.2 Hs 模式的串行数据传输格式
Hs 模式的串行数据传输格式符合标准模式I²C总线规范。Hs 模式只能在下面的情况下(所有都在F/S模式)启动:
1)、 起始条件(S)
2)、 8 位的主机码(00001XXX)
3)、 不响应位(A)
图21 和22 详细地显示了这些情况。主机码有两个主要的功能:
• 它允许在F/S 模式速度下竞争主机之间仲裁和同步,结果得到一个获胜的主机。
• 它表示Hs 模式传输的开始。
Hs 主机码是保留的8 位代码,它不用于从机寻址或其他目的。而且,由于每个主机都有唯一的主机码,I²C总线系统最多可以有8 个Hs 模式主机(主机码0000 1000 应保留作测试和诊断用)Hs 模式主机器件的主机码是软件可编程的,由系统设计者决定。
仲裁和时钟同步只在获胜主机仍然激活传输主机码和不响应位(A) 时发生。主机码向其他器件表示开始Hs 模式传输,而且连接的器件必须符合Hs 模式规范。由于不允许器件响应主机码,主机码后面应跟着不响应位(A)。
在不响应位(A) 后,而且SCLH 线被上拉到高电平时,激活的主机切换到Hs 模式并使能(在tH,见图22) SCLH 信号的电流源上拉电路。由于另一个器件通过延长SCLH 信号的低电平周期可以拉长tH前的串行传输,当所有器件释放了SCLH 线而且SCLH 信号到达高电平时,激活的主机使能它的电流源上拉电路,因此加速了SCLH 信号最后部分的上升时间。
然后,激活的主机发送一个重复起始条件(Sr) 接着是7 位从机地址(或者10 位从机地址)和R/W 位地址,并从选中的从机接收到一个响应位(A)。
在重复起始条件和每个响应位(A) 和不响应位(A) 后,激活的主机禁能它的电流源上拉电路,使能其他器件通过延长SCLH 信号的低电平周期延长串行传输。当所有器件释放而且SCLH 信号到达高电平,激活的主机再次使能它的电流源上拉电路,加速SCLH 信号上升时间的最后部分。
在下一个重复起始条件(Sr) 后,数据传输仍处于Hs 模式,它只会在停止条件(P) 后返回F/S 模式。为了减少主机码的额外开销,主机可能连接由重复起始条件(Sr) 分隔的大量Hs 模式传输。
11.3 从F/S 模式切换到Hs 模式以及返回
复位和初始化后,Hs 模式器件必须处于快速模式(实际上是F/S 模式,因为快速模式向下兼容标准模式)。每个Hs 模式器件可以从快速模式切换到Hs 模式以及相反,由I²C总线的串行传输控制。
在图22 的时间t1 前,每个连接的器件都在快速模式下工作。时间t1 和tH 之间(任何器件都可以延长这个时间间隔),每个连接的器件必须识别“S 00001XXX A” 序列,而且要将内部电路从快速模式设置切换到Hs 模式设置。时间t1 和tH 之间,连接的主机和从机器件由下面的行为执行切换。
激活(获胜)的主机:
1)、 根据Hs 模式的毛刺抑制要求调整SDAH 和SCLH 的输入滤波器。
2)、 根据Hs 模式的要求调整建立和保持时间。
3)、 根据Hs 模式的要求调整SDAH 和SCLH 输出级的斜率控制。
4)、 要求在时间tH 后切换到Hs 模式位速率。
5)、 在时间tH 使能SCLH 输出级的电流源上拉电路。
不激活或丢失仲裁的主机:
1)、 根据Hs 模式的毛刺抑制要求调整SDAH 和SCLH 的输入滤波器
2)、 当总线再次空闲时等待检测停止条件
所有从机:
1)、 根据Hs 模式的毛刺抑制要求调整SDAH 和SCLH 的输入滤波器
2)、 根据Hs 模式的要求调整建立和保持时间这个要求可能已被调整输入滤波器满足
3)、 如果有必要调整SDAH 输出级的斜率控制。对于从机器件,斜率控制只能应用到SDAH 输出级;基于电路的容差,快速模式和Hs 模式的要求可能不用切换内部电路就能满足。
在图22 的tFS 时间,每个连接的器件必须识别停止条件(P) 并在t1 时间前将内部电路从Hs 模式设置切换回快速模式设置。这必须根据快速模式规范在表5 指出的最小总线空闲时间内完成。
11.4 低速模式中的快速模式器件
Hs 模式器件完全向下兼容,可被连接到一个F/S 模式I²C 总线系统(见图23)。由于在这种配置下不能发送主机代码,所有Hs 模式主机器件处于F/S 模式,而且将它们的电流源禁能,用F/S 模式速度通讯。SDAH 和SCLH 管脚用于连接F/S 模式的总线系统,允许Hs 主机器件的SDA 和SCL 管脚(如果存在)用于其他功能。
11.5 串行总线系统的混合速度模式
如果系统结合了Hs 模式、快速模式和/或标准模式器件,可以用一个互连的电桥实现在不同的器件之间有不同的位速率(见图24 和25)。
电桥要求在适当的时间连接/断开Hs 模式部分到从F/S 模式部分的连接。这个电桥包含电平转换功能,允许电源电压不同的器件互连。如果SDA 和SCL 管脚兼容5V ,例如VDD2 是5V 的F/S 模式器件可以连接到VDD1 是3V 或更小即VDD2 VDD1 的Hs 模式器件。电桥在Hs 模式的主机器件中,完全由串行信号SDAH、SCLH、SDA 和SCL 控制。这个电桥可以在任何IC 中作为自治电路执行。
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 模式器件通讯。所有连接的器件在整个F/S 模式传输中如第8章描述的进行仲裁和同步。但是在Hs 模式传输中,电桥打开,将两个总线部分分隔开来使Hs 模式器件之间以3.4Mbit/s 通讯。Hs 模式器件和F/S 模式器件之间的仲裁只在主机码(00001XXX) 处执行,一般由Hs 模式主机获胜,因为没有从机地址用4 个0 开始。其他主机只有在发送保留的8 位代码(00000XXX)时才能赢得仲裁。此时,电桥保持关闭而且传输在F/S 模式中进行。表3 给出了这种系统可能的通讯速度。
11.5.1 在混合速度总线系统中的F/S 模式传输
图24 显示的桥路互连了相应的串行总线线路,组成一个串行总线系统。由于不发送主机码(00001XXX), 电流源上拉电路保持禁能而且所有输出级都是开漏输出。所有器件(包括Hs 模式器件)之间的通讯都根据F/S 模式I²C 总线规范的协议、格式、速度。
11.5.2 在混合速度总线系统中的Hs 模式传输
图25 显示了在F/S 模式速度下完整Hs 模式传输(包括起始条件、主机码和不响应位A )的时序图尽管这个时序图被分成两个部分,但它应被看作是一个时序图,其中时间点tH 是两个部分的公共点。
主机码被激活或非激活的主机电桥(见图24) 识别出来。电桥执行以下的动作:
1)、在t1 和tH 之间(见图25), 在晶体管TR3 关断将SDA 线下拉到VSS 后,晶体管TR1 导通以分隔SDAH 和SDA 线。
2)、当SCLH 和SCL 都是高电平时(图25 的tH), 晶体管TR2 导通以分隔SCLH 和SCL 线。TR2必须在Sr 后SCLH 变低电平之前保持开路。
Hs 模式传输在tH 后用重复起始条件(Sr) 启动。在Hs 模式传输中,SCL 线保持高电平,SDA 线处于稳定状态的低电平,准备好传输停止条件(P)。
在每个响应(A) 或不响应位后,激活的主机禁能它的电流源上拉电流。这就使其他器件可以通过延长SCLH 信号的低电平周期延迟串行传输。激活的主机在所有器件释放而且SCLH 信号是高电平时再次使能它的电流源上拉电路,加速了SCLH 信号上升时间的最后部分。在不正常的情况下,F/S 模式器件可以在任何时侯下拉SCL 线至少1μs 来关闭电桥(TR1 和TR2 关断,TR3 导通),例如从总线中止恢复。
Hs 模式用停止条件结束而且将总线系统返回到F/S 模式。当在SDAH 检测到(图25 的tFS) 停止条件(P), 激活的主机禁能它的电流源MCS。 电桥也能识别这个停止条件,而且采取了以下的行动:
1)、晶体管TR2 在tFS 后关断,使SCLH 和SCL 互连;此时两条线路都是高电平。晶体管TR3 在tFS后导通,释放SDA 线允许它被上拉电阻Rp 拉成高电平。这就是F/S 模式器件的停止条件。TR3的导通必须足够快,确保停止条件和下一个最快的启动条件之间的总线空闲时间是依照快速模式的规范(见表5 的tBUF)。
2)、当SDA 到达高电平(图25 的t2), 晶体管TR1 关断,使SDAH 和SDA 互连。(注意当所有线路是高电平时才互连,防止总线线路的毛刺)。TR1 和TR2 必须在快速模式规范定义的最小总线空闲时间内关断(见表5 的tBUF)。
11.5.3 混合速度总线系统中电桥的时序要求
从图25 可以看出电桥在t1、tH、tFS 处的行动必须很快,不能影响SDAH 和SCLH 线。而且,电桥必须符合SDA 和SCL 线快速模式规范相关的时序要求。
12、10 位寻址
10 位寻址和7 位寻址兼容,而且可以结合使用。10 位寻址采用了保留的1111XXX 作为起始条件(S)或重复起始条件(Sr) 的后第一个字节的头7 位。10 位寻址不会影响已有的7 位寻址。有7 位和10 位地址的器件可以连接到相同的I²C 总线,它们都能用于F/S 模式和Hs 模式系统。
尽管保留地址位1111XXX 有8 个可能的组合,但是只有4 个组合11110XX 用于10 位寻址。剩下的4个组合11111XX 保留给以后增强的I²C 总线。
12.1 头两个字节位的定义
10 位从机地址是由在起始条件(S) 或重复起始条件(Sr) 后的头两个字节组成。
第一个字节的头7 位是11110XX 的组合,其中最后两位(XX) 是10 位地址的两个最高位(MSB);第一个字节的第8 位是R/W 位,决定了报文的方向。第一个字节的最低位是“0”表示主机将写信息到选中的从机。“1” 表示主机将向从机读信息。
如果R/W 位是“0”,则第二个字节是10 位从机地址剩下的8 位。如果R/W 位是“1”,则下一个字节是从机发送给主机的数据。
12.2 10 位寻址的格式
在有10 位寻址的传输中可能有不同的读/写格式组合。可能的数据传输格式有:
• 主机—发送器将10 位从机地址发送到从机—接收器。
传输的方向不改变(见图26)。 当起始条件后有10 位地址时,每个从机将从机地址第一个字节的头7 位(11110XX) 与自己的地址比较,并测试看第8 位(R/W 方向位)是否为0。 此时,很可能超过一个器件发现地址相同,并产生一个响应(A1)。 所有发现地址相同的从机将从机地址第2个字节的8 位(XXXXXXXX) 与自己的地址比较,此时只有一个主机发现地址相同并产生一个响应(A2)。 匹配的从机将保持被主机寻址,直到接收到停止条件(P) 或从机地址不同的重复起始条件(Sr)。
• 主机—接收器用10 位的从机地址读从机—发送器。
传输方向在第2 个R/W 位改变(图27)。 整个过程直到并包括响应位A2 都与主机—发送器寻址从机—接收器的相同。在重复起始条件(Sr) 后,匹配的从机成员记得它之前被寻址。这个从机然后检查Sr 后第一个字节的头7 位是否和起始条件(S) 后的相同,并检查第8 位(R/W) 是不是1。 如果匹配,从机会认为它作为发送器被寻址,然后产生响应A3。 从机—发送器保持寻址,直到接收到停止条件(P) 或从机地址不同的另一个重复起始条件(Sr)。 重复起始条件(Sr) 后,所有其他从机器件也用从机地址第一个字节的头7 位(11110XX )与自己的地址比较,并检查第8 位(R/W)。 但是没有一个会被寻址,因为R/W =1(10 位寻址)或11110XX 从机地址(7 位地址器件)不能匹配。
• 组合格式。主机发送数据到从机然后从相同的从机读数据(图28)。 相同的主机始终占用着总线。传输方向在第二个R/W 位后改变。
• 组合格式。主机发送数据到一个从机,然后发送数据到另一个从机(图29)。 相同的主机始终占用着总线。
• 组合格式。在一个串行传输中组合了10 位和7 位寻址(图30)。 在每个起始条件(S) 或重复起始条件(Sr) 后,发送10 位或7 位的从机地址。图30 显示了主机如何发送数据到一个7 位地址的从机然后发送数据到另一个10 位地址的从机。相同的主机始终占用着总线。
注意:
1)、 例如:控制串行存储器时可以使用组合格式。在第一个数据字节时,要写内部存储器位置。在重复起始条件和从机地址后,可以传输数据。
2)、 器件设计者决定了是自动加1 还是减1 以前访问的存储器位置。
3)、 每个字节后都有一个响应位,在序列中用A 或块表示。
4)、 兼容I²C 总线器件在接收到起始条件或重复起始条件后必须复位它们的总线逻辑,这样它们都可以预料从机地址的发送。
12.3 广播呼叫地址和 10 位寻址的起始字节
I²C总线的 10 位寻址过程是起始条件(S)后的头两个字节通常决定了主机要寻址哪个从机。例外的情况是“广播呼叫”地址 00000000(H“00”)。10 位寻址的从机器件与 7 位寻址的从机器件对“广播呼叫”地址的反应相同。
硬件主机可以在“广播呼叫”之后发送它们的10位地址。此时的“广播呼叫”地址字节后面的两个字节包含了主机—发送器的10位地址。格式见图10,其中第一个数据字节是主机地址的8个最低位。
起始字节 00000001(H“01”)表示用 7 位寻址的方法处理 10 位寻址。
13、I/O 级和总线线路的电气规范和时序
13.1 标准和快速模式器件
F/S 模式I²C总线器件的 I/O 级、I/O 电流、毛刺抑制、输出斜率控制和管脚电容见表4。 I²C总线的时序特性、总线线路电容和噪声容限见表5。 图31显示了I²C总线的时序定义。
在表5规定的SCL时钟最小高电平和低电平周期决定了最大的位传输速率,标准模式器件是100kbit/s,快速模式器件是 400kbit/s。标准模式和快速模式I²C总线器件必须能在它们最大的位速率下传输,或者是能在该速度下发送或接收。
注:
1)、所有值都参考 VIHmin 和 VILmax电平(见表4)。
2)、器件必须为 SDA 信号(参考SCL信号的VIHmin)内部提供一个至少300ns的保持时间来渡过SCL下降沿的未定义区 。
3)、如果器件不延长SCL信号的低电平周期(tLOW),才会用到tHD;DAT的最大值。
4)、快速模式I²C总线器件可以在标准模式I²C总线系统使用,但必须符合 tSU;DAT>=250ns的要求。如果器件不延长SCL信号的低电平周期,这就自动成为默认的情况,必须在 SCL 线释放之前输出下一个数据位到SDA线 trmax+tSU;DAT=1000+250=1250ns(根据标准模式I²C总线规范)。
5)、Cb=一条总线线路的总电容,单位是pF。如果与 Hs 模式器件混合使用,根据表 6 允许下降时间更快 。
n/a=不可用
13.2 Hs 模式器件
Hs 模式I²C总线器件的 I/O 电平、I/O 电流、毛刺抑制、输出斜率控制和管脚电容都在表 6 列出。Hs模式器件的高电平和低电平噪声容限与F/S 模式I²C总线器件定义的一样。
图32显示了Hs模式时序的所有时序参数。“正常的”起始条件 S 在 Hs 模式中不存在。地址位、R/ W 位、响应位和数据位的时序参数都相同。只有响应位后面的第一个 SCLH 时钟信号上升沿的值更大,因为没有内部电流源只用外部 Rp 上拉 SCLH。
总线线路的 Hs 模式时序参数在表 7 列出。SCLH 时钟信号的最小高电平和低电平周期和最大上升和下降时间由最高的位速率决定。
由于内部产生的 SCLH 信号低电平和高电平周期分别是 200ns 和 100ns,Hs 模式主机可以满足外部SCLH时钟信号(考虑上升和下降时间)在最大位速率 3.4Mbit/s 下的时序要求。因此,Hs 模式主机可以用 10MHz 的基频或者 10MHz 的倍数产生 SCLH 信号。它对 SCLH 时钟的最大高电平和低电平周期没有限制,对最低的位速率也没有限制。
时序参数不受在可能的最大位速率 3.4Mbit/s 下每条总线线路的电容负载最高是 100pF 的条件限制。如果总线线路的电容负载升高,位速率将逐渐下降。总线的电容负载是 400pF 时的时序参数请见表 7,此时允许最大位速率是 1.7Mbit/s。总线电容负载在 100pF~400pF 时,时序参数必须呈线性增加。上升和下降时间是根据传输线路 SDAH 和 SCLH 的最大传播时间,防止在开路端发生反射。
14、I²C总线器件到总线线路的电气连接
I²C总线器件的电气规范和连接到它们的总线线路特性。
有 1.5V 和 3V 固定输入电平的I²C总线器件每个都有它们自己相应的电源电压。上拉电阻必须连接到一个 5V(正负10%)的电源(图 33)。输入电平连接到 VDD 的I²C总线器件必须有一条公共的电源线连接到上拉电阻(图 34)。
当有固定输入电平的器件与输入电平连接到 VDD 的器件混合使用时,后者必须连接到一条公共的5V(正负10%)电源线,而且必须连接上拉电阻到 SDA 和 SCL 管脚,见图 35。
新的快速和 Hs 模式器件必须有在表 4 和表 6 列出的电源电压相关的输入电平。
输入电平是这样定义的:
• 低电平噪声容限是 0.1VDD
• 高电平噪声容限是 0.2VDD
• 如图 36 所示,例如是 300欧的串连电阻(RS)可以用于防止 SDA 和 SCL 线的高电压毛刺波(例如,由电视的显象管击穿产生)。
14.1 标准模式I²C总线器件电阻 Rp 和 Rs 的最大和最小值
对于标准模式 I²C总线系统,电阻 Rp 和 Rs(图 33)的值由下面的参数决定:
• 电源电压
• 总线电容
• 连接器件的数量(输入电流+漏电流)
电源电压限制了电阻 Rp 的最小值,因为输出级在 VOLmax=0.4V 时指定的最小下拉电流是 3mA。如图 37 所示,VDD 是 Rpmin 的函数。低电平要求的 0.1VDD 噪声容限限制了 Rs 的最大值。如图 38 所示,Rsmax 是 Rp 的函数。
总线电容是线路、连接和管脚的总电容。由于规定了上升时间,这个电容限制了 Rp 的最大值。图 39显示了Rpmax是总线电容的函数。
每个输入/输出连接的最大高电平输入电流的规定最大值是 10µA。由于高电平要求 0.2VDD 的噪声容限,这个输入电流限制了 Rp 的最大值。这个限制由 VDD 决定。总的高电平输入电流如图 40 所示是 Rpmax的函数。
15、应用信息
15.1 快速模式I²C总线器件的斜率控制输出级
I²C总线器件的电气规范和连接到它们的总线线路特性。
图 41 和 42 是 CMOS 和双极性工艺带斜率控制的输出级举例。下降沿的斜率由 Miller 电容 (C1)和 电阻(R1)控制。C1 和 R1 的典型值在结构图中显示。表 4 给出的输出下降时间 tof 的大范围容差表示设计不是临界的。下降时间只受到内部总线负载(Cb)和外部上拉电阻 (Rp)轻微的影响。但是,表 5 规定的上升时间(tr)主要由总线的电容负载和上拉电阻的值决定。
15.2 快速模式I²C总线器件的开关上拉电路
电源电压(VDD)和最大输入低电平决定了上拉电阻 Rp 的最小值。例如,3mA 时电源电压是 VDD=5V(正负10%)、 VOLmax=0.4V,那么 Rpmin=(5.5-0.4)/0.003=1.7k欧。如图 33 所示,Rp 的这个值限制了最大的总线负载在大约 200pF 以符合最大的 tr 是 300ns 的要求。如果总线的电容更高,可以使用如 图 43 所示的开关上拉电路。
图 43 的开关上拉电路的电源电压VDD=5V(正负10%)而且最大的电容负载是 400pF。由于它是由总线电平控制,因此不需要额外的开关控制信号。在上升/下降沿期间,HCT4066 的双向开关在总线电平 0.8V~2.0V 之间接通/关断上拉电阻 Rp2。Rp1 和 Rp2 的组合电阻可以在规定的最大上升时间(tr)300ns 内上拉总线线路。
串连电阻 Rs是可选的。它们防止I²C总线期间的输出级受到总线线路的高电压毛刺波影响,而且减少了串扰和总线信号的负尖峰。Rs的最大值由在总线线路切换到低电平以关断 Rp2 时这个电阻上允许的最大电压降决定。
15.3 总线线路的配线方式
一般来说,配线必须选择使总线线路的串扰和干扰最小。总线线路在高电平的时侯最容易受到串扰和干扰的影响,因为上拉器件处于相应的高阻状态。
如果 PCB 板的总线长度或带状电缆超过 10cm(包括 VDD 和 VSS 线),配线方式必须是:
SDA _______________________
VDD _______________________
VSS _______________________
SCL _______________________
如果只有 VSS 线,那么配线方式必须是:
SDA _______________________
VSS _______________________
SCL _______________________
这些配线方式也会使 SDA 线和 SCL 线的电容负载一样。如果 PCB 用了 VSS 层和/或 VDD层, VDD 和 VSS 线可被忽略。
如果总线线路是双绞线,每条总线都必须围着 VSS 绕。另一种方法是 SCL 线围着 VSS 绕,SDA 线围着 VDD 绕。后者必须在两条双绞线的末端连接一个电容,使 VDD 线向 VSS 线解耦。
如果使用的是屏蔽的总线线路(屏蔽连接到 VSS),干扰将很小。但是屏蔽的电缆在 SDA 和 SCL 线之间的电容耦合必须很低才能减少串扰。
15.4 快速模式I²C总线器件电阻 Rp 和 RS 的最大和最小值
连接到快速模式I²C总线的电阻 Rp 和 Rs 的最大和最小值,由于快速模式I²C总线的上升时间 (tr)更快,是总线电容的函数的 Rp 最大值比图 39 显示的小。替代图 39 的图 44 显示了快速模式I²C总线的 Rp 最大值是总线电容(Cb)的函数。
15.5 Hs 模式I²C总线器件的电阻 Rp 和 Rs 的最大和最小值
连接到 Hs 模式I²C总线的电阻 Rp 和 RS 的最大和最小值可以由表 6 和表 7 的数据算出。这些值的很多结合都是可能的,可以是不同的上升和下降时间、总线线路负责、电源电压、混合速度系统和电平转换。因此这里没有图可作详细说明。
16、F/S 模式I²C总线系统的双向电平转换器
现代的集成电路工艺加工的间隙可达 0.5µm,而且很少限制数字 I/O 信号的最大电源电压和逻辑电平。为了将这些低电压电路与已有的 5V 器件接口,需要一个电平转换器。对于双向的总线系统像I²C总线,电平转换器必须也是双向的,不需要方向选择信号。解决这个问题的最简单方法是连接一个分立的 MOS-FET 管到每条总线线路。
尽管这个方法非常简单,但它不仅能不用方向信号就能满足双向电平转换的要求,还能:
• 将掉电的总线部分与剩下的总线系统隔离开来。
• 保护“低电压”器件,防止“高电压”器件的高电压毛刺波。
双向电平转换器可以用于标准模式(高达 100kbit/s)或快速模式(高达 400kbit/s)I²C总线系统。这个转换器并不打算在 Hs 模式系统中使用,因为 Hs 模式系统可能已经有带电平转换的电桥。
16.1 连接逻辑电平不同的器件
第14中描述了如何将电压不同的器件通过连接到电源电压线的上拉电阻连接到相同的总线。尽管这是最简单的解决方法,低电压的器件必须能容忍 5V,使它们的生产更昂贵。但是,通过使用双向电平转换器可以将电源电压和逻辑电平不同的两部分I²C总线连接起来。配置入图 45 所示。左边的“低电压”部分有上拉电阻而且器件连接到 3.3V 的电源电压,右边的“高电平”部分有上拉电阻,器件连接到 5V 电源电压。两部分的器件都有与逻辑输入电平相关的电源电压和开漏输出配置的 I/O。
每条总线线路的电平转换器是相同的,而且由一个分立的 N 通道增强型 MOS-FET管、串行数据线 SDA 的 TR1 和串行时钟线 SCL 的 TR2 组成。门极(g)要连接到最电源电压 VDD1,源极(s)连接到“低电压”部分的总线线路,而漏极(d)则连接到“高电压”部分的总线线路。很多 MOS-FET 管的基底与它的源极内部连接,如果内部没有连接,就必须建立一个外部连接。每个 MOS-FET 管在漏极和基底之间都有一个集成的二极管(n-p 结)。
16.1.1 电平转换器的操作
在电平转换器的操作中要考虑下面的三种状态:
1)、没有器件下拉总线线路。“低电压”部分的总线线路通过上拉电阻 Rp 上拉至 3.3V。MOS-FET 管的门极和源极都是 3.3V,所以它的 VGS 低于阀值电压,MOS-FET 管不导通。这就允许“高电压”部分的总线线路通过它的上拉电阻 Rp 拉到 5V。此时两部分的总线线路都是高电平,只是电压电 平不同。
2)、一个 3.3V 器件下拉总线线路到低电平。MOS-FET 管的源极也变成低电平,而门极是 3.3V。VGS上升高于阀值,MOS-FET 管开始导通。然后,“高电压”部分的总线线路通过导通的MOS-FET管被 3.3V 器件下拉到低电平。此时,两部分的总线线路都是低电平,而且电压电平相同。
3)、一个 5V 的器件下拉总线线路到低电平。MOS-FET 管的漏极—基底二极管“低电压”部分被下拉直到 VGS 超过阀值,MOS-FET 管开始导通。“低电压”部分的总线线路通过导通的 MOS-FET 管被 5V 的器件进一步下拉到低电平。此时,两部分的总线线路都是低电平,而且电压电平相同。
这三种状态显示了逻辑电平在总线系统的两个方向上传输,与驱动的部分无关。状态 1 执行了电平转换功能。状态 2 和 3 按照I²C总线规范的要求在两部分的总线线路之间实现“线与”的功能。
除了 3.3V VDD1 和 5V VDD2 的电源电压外,还可以是例如:2V VDD1 和 10V VDD2。在正常操作中,VDD2 必须等于或高于 VDD1(在开关电源时,允许 VDD2 低于 VDD1)。
原文地址: https://zhuanlan.zhihu.com/p/149364473