I2C总线规范详解及其Verilog实现系列文章:
I2C总线规范详解及其Verilog实现01——电路特性与原理 – 徐晓康的博客(myhardware.top)
I2C总线规范详解及其Verilog实现02——通信协议 – 徐晓康的博客(myhardware.top)
I2C总线规范详解及其Verilog实现03——读写过程与时序要求 – 徐晓康的博客(myhardware.top)
I2C总线规范详解及其Verilog实现04——I2C主机Verilog功能模块 – 徐晓康的博客(myhardware.top)
前言
I2C是嵌入式系统中最常用的总线之一,熟练使用它是嵌入式工程人员的基本能力。我们知道所有的电路与程序设计的依据都来源于规范,所有的I2C芯片也必须满足规范要求,熟悉I2C规范能帮助我们在电路设计、电路调试、软件编程与FPGA编程时做到心中有数,游刃有余,是很有必要的。
本文基于I2C规范详细介绍了I2C总线的物理特性。
本文参考:
-
I²C – ZH维基百科,自由的百科全书 (wikipedia.org) -
I²C – EN维基百科,自由的百科全书 (wikipedia.org) -
I2C Bus (i2c-bus.org) -
UM10204(I2C-bus specification and user manual) Rev. 7.0 — 1 October 2021
一. 什么是I2C
IIC,Inter-Integrated Circuit,字面意思是内部集成电路,它其实是IIC BUS的简称,所以中文名称应是内部集成电路总线。
IIC的另一个写法是,读作I平方C,或者简读为I方C,又因为平方的写法在很多情况下是难以实现的,所以,很多时候写为I2C,但仍然应该读作I方C,读I two C或者I二C是错误的。
从IIC的总线规范UM10204以及其它各种器件手册上来看,所有的手册都采用I²C或者I2C的写法来表示此总线,所以从书写方便与规范的角度,始终用I2C的写法来表示此总线是合适的。
1.1 I2C的发展历史
I2C最初由飞利浦半导体公司在1982年发明,用于同一电路板上组件之间的相互通信。飞利浦半导体于2006年迁移到了NXP(恩智浦)半导体公司,所以后续I2C的修订与更新都是由NXP半导体完成的。
NXP官网文档UM10204(I2C-bus specification and user manual)中的Table 1. Revision history展示了I2C总线规范的修订历史,如下表所示(增加了中文翻译)。
Rev | Date | Description | 描述 |
---|---|---|---|
v7.0 | 20211001 | User manual; seventh release | 用户手册;第七次发布 |
Modifications: – Updated Table 5 – Updated the terms “master/slave” to “controller/target” throughout to align with MIPI I3C specification and NXP’s Inclusive Language Project – Added Section 9 |
改动: -更新了表格5 -把“主/从”术语更新为“控制器/目标”以符合MIPI I3C规范和NXP的包容性语言项目的要求。 -添加了第9节 |
||
v6.0 | 20140404 | User manual; sixth release | 用户手册;第六次发布 |
Modifications: – Figure 41 Updated (recalculated) – Figure 42 Updated (recalculated) |
改动: -更新了图41(重新计算) -更新了图42(重新计算) |
||
v5.0 | 20121009 | User manual; fifth release | 用户手册;第五次发布 |
v4.0 | 20120213 | User manual; fourth release | 用户手册;第四次发布 |
v3.0 | 20070619 | Many of today’s applications require longer buses and/or faster speeds. Fast-mode Plus was introduced to meet this need by increasing drive strength by as much as 10× and increasing the data rate to 1 Mbit/s while maintaining downward compatibility to Fast-mode and Standard-mode speeds and software commands. | 如今许多应用需要更长的总线和/或更快的速度。为了满足这一需求,引入了快速模式增强版(Fast-mode Plus),通过将驱动强度增加多达10倍,并将数据传输速率提高到1 Mbit/s,同时保持与快速模式和标准模式速度以及软件命令的向下兼容性。 |
v2.1 | 2000 | Version 2.1 of the I2C-bus specification | I2C-bus规范的2.1版本 |
v2.0 | 1998 | The I2C-bus has become a de facto world standard that is now implemented in over 1000 different ICs and licensed to more than 50 companies. Many of today’s applications, however, require higher bus speeds and lower supply voltages. This updated version of the I2C-bus specification meets those requirements. | I2C总线已成为事实上的全球标准,现在已在1000多种不同的集成电路中实施,并授权给50多家公司使用。然而,如今许多应用需要更高的总线速度和更低的供电电压。这个更新的I2C总线规范版本满足了这些要求。 |
v1.0 | 1992 | Version 1.0 of the I2C-bus specification | I2C-bus规范的1.0版本 |
Original | 1982 | First release | 首次发布 |
总结一下,目前I2C的最新版本为2021年发布的v7.0,但实际的功能改动在2014年发布的V6.0已经定格了,后续只是对规范手册中一些文字/图表的更改。
关于I2C具体的发明人,发展历史的更多细节我并没有查到可靠资料。
1.2 I2C的工作模式
最初,I2C总线最高速度被限制为100 kbit/s。随着时间的推移,该规范已经增加了一些内容,因此现在有五种操作速度类别。
标准模式(Sm)、快速模式(Fm)、快速模式Plus(Fm+)和高速模式(Hs-mode)设备都是向下兼容的——任何设备都可以以较低的总线速度运行。
超快模式(UFm)的设备提供推挽驱动器,消除了上拉电阻,从而实现了高达5Mbit/s的传输速率。UFm与Sm、Fm或Fm+系统保持了相同的串行总线协议和数据格式,但因为硬件结构上的差异,UFm总线设备只支持单向传输,而之前工作模式均是双向的,UFm设备与之前的I2C几种模式的设备无法挂在同一总线上,即无法兼容,所以,严格来说,超快模式已经不再是I2C了。
下表是I2C工作模式的表格,包括了不同模式下的最大速度、最大电容、驱动类型和方向。
Rev | Mode | Maximum Speed | Maximum Capacitance | Drive | Direction |
---|---|---|---|---|---|
1.0 | Standard-mode (Sm) | 100 kbit/s | 400 pF | Open drain* | Bidirectional |
2.0 | Fast-mode (Fm) | 400 kbit/s | 400 pF | Open drain* | Bidirectional |
3.0 | Fast-mode plus (Fm+) | 1 Mbit/s | 550 pF | Open drain* | Bidirectional |
? | High-speed mode (Hs) | 1.7 Mbit/s | 400 pF | Open drain* | Bidirectional |
? | High-speed mode (Hs) | 3.4 Mbit/s | 100 pF | Open drain* | Bidirectional |
? | Ultra-fast mode (UFm) | 5 Mbit/s | ? | Push–pull | Unidirectiona |
1.3 总线速度与对地电容
众所周知,数据通过总线上的电平变化对外发出,而总线上的电平变化实则是总线电容的充放电,所以电容充放电的快慢决定了总线的速度。
上表规定了总线对地的最大电容,只有电容小于最大电容,总线才能达到预计的最大速度,如对于标准模式,只有在总线电容<400pF时,总线速度才能达到100kbit/s,当总线电容>400pF时,总线需要降低速度才能正常工作。
再比如对于总线电容400pF,高速模式的最大速度为1.7Mbit/s,而当总线电容下降到100pF时,总线速度可达3.4Mbit/s。
总线长度,器件引脚与连接器的增加均会增加总线对地电容,所以在PCB上I2C总线的有效传输距离一般小于30cm,且距离越长传输速度越慢,一般最长也不会超过1m。
为保证传输速度与可靠性,实际应用中,I2C总线上的设备数量也有限制,一般不会超过10个。
1.4 I2C应用情况
目前,绝大部分控制芯片的硬件外设I2C都支持Standard-mode 和 Fast-mode,如TI的DSP TMS32F28335和 TMS32F28379D,ST公司的STM32F1系列和STM32F4系列,Xilinx的ZYNQ 7000系列。
小部分高端芯片的硬件I2C支持Fast-mode plus,如ST公司STM32F7系列和STM32H7系列。
很少有芯片的硬件I2C支持High-speed mode,目前只查到NXP自家的微控制器LPC546xx和i.MX RT1170支持Hs-mode的从机模式,还未查到有控制芯片支持Hs-mode的主机模式,当然这里的芯片不包括FPGA,FPGA只要引脚驱动能力足够大(20mA)是有能力实现Hs-mode的主机或者从机模式的。目前来看High-speed mode可以只作了解。
几乎没有芯片的硬件I2C支持Ultra-fast mode,目前只查到NXP自家的微控制器i.MX RT1170支持Ultra-fast mode的从机模式,NXP还推出了一款并行总线转UFm I2C总线控制器芯片,型号为PCU9661,以及UFm I2C总线控制的LED驱动器PCU9956A,看情况NXP是想把I2C的Ultra-fast mode发扬光大,但目前没有其他厂家跟进,可能是因为专利费的问题,但我认为更重要的原因是I2C确实不适合高速传输,相较于SPI以及MIPI I3C没有优势,所以Ultra-fast mode只作了解即可。
I2C的V2.0版本1998年发布,目前已超过20年,相关专利应该已经过期,其它厂家无需再为V2.0版本的I2C付费,所以V2.0版本(400kbps的速度)的I2C应用非常广泛,已成为硬件I2C的标配。
本文后续所有内容仅针对I2C的Standard-mode、Fast-mode与Fast-mode plus。对于High-speed mode和Ultra-fast mode,感兴趣的同学可以自行查阅UM10204。
二. I2C电路结构
I2C最常见的电路结构如下图所示。
虽然I2C规范是支持多主机多从机同时存在的,但在实际应用时,绝大部分情况是只有一个控制芯片作为主机,I2C总线上的其它芯片作为从机。这些从机芯片一般包括:传感器芯片、存储器芯片、显示屏控制器芯片、ADC、DAC、PWM控制器芯片等。
除超快模式外,I2C的工作模式中驱动均为开集(OC)或者开漏(OD),器件输出为三极管则为OC门,为MOS管则为OD门,两种输出功能是一样的,也可兼容在同一总线下。下面仅以OD门为例进行说明。
OD门在MOS管开通时,输出引脚被拉低到GND;在MOS管关断时,输出引脚与芯片内部断开连接,所以OD门只有低电平驱动能力,没有高电平驱动能力,故OD门需要外接上拉电阻,连接到VDD。
SCL in和SDA in会接入芯片内部的滤波器,规范上写的能抑制的脉冲宽度最大值为50ns,以50%占空比计算,对应可抑制信号的最小频率为10MHz。具体效果与芯片内部滤波器结构有关。I2C是单端信号,抗干扰能力较弱,此滤波器聊胜于无。
上图也画出了总线对地电容的示例,总线长度的增加与总线上设备数量的增加都会引入新的电容,电容的充放电速度决定了总线数据传输的速度。
总线上高低电平的驱动过程如下:
当总线需要低电平时,SCL out与SDA out控制MOS开通,电流从VDD经过上拉电阻Rp流经MOS管到GND,总线对地电容通过MOS管放电,因为MOS管导通电阻很小,所以这个放电速度是很快的,这意味着I2C总线有较强的低电平驱动能力。而且只要总线上任意一个设备的MOS管打开,总线电容就会放电,总线就是低电平,这意味着I2C的总线是线与结构。
当总线需要高电平时,SCL out与SDA out控制MOS关断,电流从VDD经过上拉电阻Rp给总线电容充电,具体的充电速度与Rp的阻值大小与总线电容的大小有关。
三. I2C IO口电气特性
I2C标准模式,快速模式与快速+模式的IO端口特性如下表所示(UM10204第43页,包含标注的翻译)。
[1] 一些传统的标准模式设备具有固定的输入电平,VIL = 1.5 V和VIH = 3.0 V。请参考组件的数据手册。
[2] 最大VIH = VDD(max) + 0.5 V或5.5 V,取两者中较低的值。请参考组件的数据手册。
[3] 使用相同的电阻值,在使用<2 V的VDD和较小的电流下,驱动3.0 V VDD时提供相同的RC时间常数。
[4] 为了在400 kHz时驱动满负载总线,需要在0.6 V VOL时提供6 mA的IOL。未满足此规格的部件仍然可以工作,但不能在400 kHz和400 pF下工作。
[5] 表10中引用的SDA和SCL总线线路的最大tf(300 ns)比输出级的最大tof(250 ns)长。这允许在SDA/SCL引脚和SDA/SCL总线线路之间连接串联保护电阻(Rs)(如图45所示),而不超过最大规定的tf。
[6] 必须与快速模式保持向后兼容。
[7] 在快速模式增强版中,下降时间的规定对输出级和总线时序是相同的。如果使用了串联电阻,设计人员在考虑总线时序时应考虑到这一点。
[8] SDA和SCL输入上的输入滤波器可以抑制小于50 ns的噪声尖峰。
[9] 如果VDD被关闭,快速模式和快速模式增强版设备的I/O引脚不能阻塞SDA和SCL线路。
[10] 特殊用途的设备,如多路复用器和开关,可能会超过这个电容值,因为它们将多个路径连接在一起。
IO电气特性关键点:
-
I2C低电平输入电压最大值为0.3VDD,高电平输入电压最小值为0.7VDD
-
I2C低电平输出电压最大值为min{0.4V,0.2VDD}
-
I2C低电平输出电流最小值为标准模式下3mA,快速模式下6mA,快速+模式下20mA
-
VDD的取值一般为3.3V或5V,两种不同电平的I2C芯片也可以挂载到同一总线上,但中间需要插入电平转换器
四. I2C总线时序特性
I2C标准模式,快速模式与快速+模式的总线时序特性如下表所示(UM10204第44页,包含标注的翻译)。
[1] tHD;DAT是从SCL下降沿开始测量的数据保持时间,适用于传输的数据和应答。
[2] 确保在SCL下降沿之前,SCL下降到0.3VDD以下,以使SDA进入不确定范围0.3 VDD至0.7 VDD之前。注意:对于无法观察到SCL下降沿的控制器,应使用独立测量SCL从静态高电平(VDD)到0.3 VDD的时间,以插入SDA过渡相对于SCL的延迟。
[3] 最大的tHD;DAT可以是3.45 μs和0.9 μs,分别适用于标准模式和快速模式,但必须小于tVD;DAT或tVD;ACK的最大值加上一个过渡时间。只有在设备不拉伸SCL信号的LOW期间(tLOW)时,才需要满足此最大值。如果时钟拉伸了SCL,数据必须在释放时钟之前的建立时间之前有效。
[4] 快速模式的I2C设备可以用于标准模式的I2C系统,但必须满足tSU;DAT 250 ns的要求。如果设备不拉伸SCL信号的LOW期间,则会自动满足此要求。如果这样的设备拉伸了SCL信号的LOW期间,它必须在SCL线路释放之前,根据标准模式I2C总线规范,在SDA线路上输出下一个数据位tr(max) + tSU;DAT = 1000 + 250 = 1250 ns。此外,应答的时序必须满足此建立时间。
[5] 如果与Hs模式设备混合使用,则允许更快的下降时间,根据表10。
[6] SDA和SCL总线线路的最大tf在300 ns规定。SDA输出级的最大下降时间tf在250 ns规定。这样可以在SDA和SCL引脚之间以及SDA/SCL总线线路之间连接串联保护电阻,而不超过最大规定的tf。
[7] 在快速模式增强版中,下降时间的规定对输出级和总线时序是相同的。如果使用了串联电阻,设计人员在考虑总线时序时应考虑到这一点。
[8] 必须与快速模式保持向后兼容。
[9] 允许的最大总线电容可能因应用的实际工作电压和频率而有所不同。第7.2节讨论了应对较高总线电容的技术。
[10] tVD;DAT = 从SCL LOW到SDA输出(HIGH或LOW,取决于哪个更差)的数据信号时间。
[11] tVD;ACK = 从SCL LOW到SDA输出(HIGH或LOW,取决于哪个更差)的应答信号时间。
I2C标准模式,快速模式与快速+模式的总线时序图如下图所示。
总线时序特性关键点:
-
SCL最高时钟频率,标准模式下100kHz(对应周期10us),快速模式下400kHz(对应周期2.5us),快速+模式下1MHz(对应周期1us) -
SCL低电平持续时间tLOW的最小值分别为4.7us,1.3us和0.5us;SCL高电平持续时间tHIGH的最小值分别为4.0us,0.6us和0.26us,对照SCL的周期,实际使用时注意产生的SCL时钟信号满足此要求,因为I2C有上拉电阻,所以只需驱动低电平,**实际应用时,可驱动各模式低电平持续时间分别为SCL周期的50%,60%和60%**,此比例较合适。 -
SCL与SDA的上升时间tr最大值分别为1000ns,300ns和120ns,分别对应SCL周期的10%,12%和12%。在总线设备与布局确定的情况下,此参数影响了上拉电阻阻值的选取 -
SCL与SDA的下降时间tf最大值分别为300ns,300ns和120ns,分别对应SCL周期的3%,12%和12%。I2C有较强的低电平驱动能力,所以下降时间通常无需担心,此参数对I2C设备IO口电流输入承受能力有要求 -
在SCL为高电平时,SDA拉低,视为I2C协议的开始标志,tHD;STA表示的是SDA拉低到SCL拉低之间的间隔时间,此时间需要足够长,才能被视为开始标志有效,分别为4.0us,0.6us和0.26us,这个SCL高电平持续时间的要求一样,但意义是完全不同的;对开始标志的另一个限制是tSU;STA,它表示的是SCL的高电平至少要持续多长时间,SDA再拉低才能被视为开始标志有效,分别为4.7us,0.6us和0.26us -
tHD;DAT数据保持时间,表示SCL下降沿到SDA数据改变的时间,最小值为0,意味着SCL下降沿后,SDA就可以马上变化了,没有限制;tSU;DAT数据建立时间,表示新数据改变完成到SCL上升沿的时间,最小值分别为250ns,100ns和50ns,相对于SCL低电平持续时间来说,此建立时间要求很宽松,只需要在SCL下降沿后延后50ns/100ns去输出新数据即可满足tHD;DAT和tSU;DAT的要求 -
在SCL为高电平时,SDA置高,视为I2C协议的停止标志,tSU;STO停止标志建立时间,最小值分别为4.0us,0.6us和0.26us,表示SCL上升沿之后,SDA还需要等待多长时间再去置高,才能被识别为停止标志 -
tBUF总线空闲时间,指的是SCL高电平时,SDA先置高停止上一次传输,再拉低开始下一次传输的时间间隔。最小值分别为4.7us,1.3us和0.5us -
tVD;DAT与tVD;ACK,表示SCL低电平后到数据/应答有效的时间,最大值分别为3.45us,0.9us和0.45us,对比SCL的低电平持续时间,可以发现数据/应答最迟会在SCL低电平的最后有效,所以可以在SCL的高电平期间去读取数据/应答,此时数据必然是稳定的,当然这是在不考虑干扰的前提下
五. 上拉电阻Rp计算
上拉电阻值的选取影响到I2C总线电平的上升速度,高电平的产生可视为VDD通过Rp给总线电容充电,上升过程可以看做是从电平从VIL(0.3VDD)到VIH(0.7VDD)。
参考总线时序特性,对于每个模式tr有最大值的限制,有:
可见,每种模式中,Rp的最大值是Cb的反比例函数,规范中给出了此反比例函数的曲线,如下图左所示。
上式代入各个模式的tr最大值(1000ns,300ns和120ns),得到如下表达式,注意tr的单位为ns,Cb的单位为pF,那么算出来的Rp的单位就为kΩ。
标准模式和快速模式下指定的最小接收电流为3mA,快速+模式下的最小接收电流为20mA,Rp的最小取值需要保证在I2C输出为低时,正常工作时输入电流不会超过最小接收电流的限制,进而保证设备IO口不会损坏。有:
一般来说,Rp取值不会超过20kΩ,Cb值不会超过550pF,VDD不会超过5.5V,因上图不便于观察选定Rp阻值,重新绘图如下:
Rp最大值曲线:
Rp最小值曲线:
对比这两张图可以发现:
-
标准模式,对应电流3mA,5V时Rp最小值1.53kΩ,400pF时Rp最大值2.95kΩ,所以始终用2kΩ的上拉电阻可满足所有要求,当总线电容<200pF时,选4.7kΩ也合适 -
快速模式,对应电流3mA/6mA,Rp最大值在400pF时为0.89kΩ,可见要在400pF时实现满速400kHz,上拉电阻很小,对比Rp最小值曲线,发现3.3V电压在3mA电流时Rp最小值为0.97kΩ>0.89kΩ,所以要么降低电压,要么增大电流,否则无法实现400pF时满速400kHz。一般来说3.3V电压是不会变的,芯片一般采取的都是增大IO耐受电流的方式,当电流增加到6mA时,Rp最小值为0.48kΩ,这时选择750Ω的电阻比较合适。 -
快速+模式,对应电流20mA,Rp最大值在400pF时为260Ω,在5V时最小值为230Ω,故Rp选择249Ω较合适
注意:因快速模式很难实现400pF满速,部分支持快速模式的器件会在芯片内部增加电流源来提高驱动能力,这时高电平驱动就不止Rp这一条通路了,此时Rp的取值就可以大一些了,具体需要看器件手册;除了增加电流源外,6.1节中介绍的外部开关上拉电阻也能用于总线大电容情况下,提高快速模式的高电平驱动能力。
六. I2C的其它细节
6.1 在总线电容超过最大允许电容时运行
总线电容限制规定限制上升时间减少,并允许在额定频率工作。虽然大多数设计可以很容易地保持在这个限制范围内,但一些应用程序可能会超过它。系统设计者有几种策略来应对过剩的总线电容。
-
降低SCL时钟频率,频率降低后,可允许更大的总线电容 -
更高的驱动输出电流,可通过增加额外电流源的方式,增加总线从低到高的驱动电流,如使用芯片PCA96xx -
总线缓冲器或总线开关,可将总线分段,使每段的电容低于允许的限制 -
开关上拉电路,使用额外的MOS管与上拉电阻,组成额外的电流通路。这时综合的上拉电阻更小,使得更大电容时总线上升速度可以更快;而当总线低电平时,额外的MOS管开通,电流通过额外的MOS管分流,保护芯片IO口电流不会超过限值
更详细的说明参考UM10204 7.2节。
6.2 串联保护电阻
如下图所示,使用串联电阻如Rs(如300Ω)可以保护I2C芯片免受SDA线和SCL线的电压尖峰的损害。
注意:
-
加入Rs会导致下降沿变缓,但Rs阻值一般较小(通常小于330Ω),即使变缓也能满足下降时间的要求
-
表11中规定的低电平噪声容限,有:
此条件一般很容易满足,因为MOS管的开通阻抗很小,所以I2C低电平可以拉得很低,但如果添加了端口串联电阻Rs,则要注意Rs的最大值,需满足Rs与Rp分压后,VOL < 0.2VDD的要求
通常不需要此电阻,因为板上的VDD通常是稳定的,没有尖峰。即使电路板工作的电磁环境很恶劣,一般也难以使VDD产生尖峰,因为VDD通常在PCB内层。
注意,网上有人认为串联电阻是为了阻抗匹配,此说法是错误的,I2C电路数据速度远远达不到高速电路的级别,完全没有阻抗匹配的必要。
6.3 输入漏电流
UM10204表10中规定了IO口在0.1VDD~0.9VDD时,输入的电流最大为10uA,这其实指的就是IO口在高电平时的漏电流。再结合表11中规定的高电平噪声容限的要求:
电路需要满足在输入电流10uA时,Rp上的压降需要小于0.1VDD,这样才能保证VOH大于0.9VDD。这也对Rp的最大值有限制,有:
可见在VDD确定时,Rp最大值与Ileak成反比例关系,画出函数图如下。
一个I2C设备的漏电流视为10uA,10个设备100uA,通常I2C上设备都在5个以下,选择Rp为4.7kΩ能满足漏电流要求;如果I2C上设备达到10个,选择Rp为2kΩ能满足漏电流要求。
七. 了解I3C
MIPI I3C(MIPI Improved Inter-Integrated Circuit)是一种新兴的串行总线标准,由MIPI联盟(MIPI Alliance)开发和推出。它是对传统I2C总线的改进和扩展,提供了更高的速度、更低的功耗和更丰富的功能。
MIPI I3C提供了一种高效的通信和控制接口,适用于各种移动设备、汽车电子、工业自动化和物联网等应用。它结合了I2C和SPI的优点,具有以下特点:
-
高速传输:MIPI I3C支持高达12.5 Mbps的传输速度,比传统的I2C总线更快。 -
低功耗:MIPI I3C通过使用低功耗模式和更高的数据传输效率,可以帮助延长设备的电池寿命。 -
多主机支持:MIPI I3C允许多个主机设备同时访问总线,提高了系统的灵活性和并行性。 -
更丰富的功能:MIPI I3C引入了一些新的功能,如动态地址分配、数据方向检测和多级中断等,为设备间的通信和控制提供更多选项。
MIPI I3C已经得到了广泛的应用和采用,许多芯片厂商、设备制造商和系统集成商已经开始支持和使用这一标准。随着时间的推移,预计MIPI I3C将在更多的应用领域中得到采用,并成为更多设备和系统中的首选总线接口之一。
UM10204中也有关于I3C的介绍。
八. 总结与分享
本文基于I2C总线规范,详细介绍了I2C的发展历史、工作模式、应用情况、电路结构、IO口电气特性、总线时序特性、上拉电阻Rp计算等方面的内容。简单来说,目前I2C器件主要的工作模式还是V2.0版本的标准模式和快速模式,快速+模式少有器件支持。I2C电路结构足够简单,需要注意的只有以下几点:
-
I2C总线传输距离很短,在PCB上通常不要超过30cm -
I2C总线有最大电容限制,超过此限制也可降速运行 -
I2C总线为OC或OD结构,没有高电平驱动能力,需要外接上拉电阻 -
上拉电阻阻值影响总线上升时间、低电平输入电流和高电平漏电流,需要综合考虑选取
总结一下I2C总线的特点:
优势:1.引脚数少,只需要两根线;2.支持多主机多从机。
劣势:1.速度慢,快速模式的速度上限也只到400kbps;2.传输距离短。
总的来说,I2C总线简单灵活,但速度慢传输距离短,适用于连接多个低速设备的应用,不适用于需要高速通信或长距离传输的场景。
本文只关注I2C的物理特性,对于I2C协议的介绍见下一篇博文。
分享:I2C规范文件——UM10204(I2C-bus specification and user manual) Rev. 7.0.pdf。
欢迎大家关注我的公众号:徐晓康的博客,回复以下四位数字获取。
0268
建议复制过去不会码错字!
如果本文对你有所帮助,欢迎点赞、转发、收藏、评论让更多人看到,赞赏支持就更好了。
如果对文章内容有疑问,请务必清楚描述问题,留言评论或私信告知我,我看到会回复。
徐晓康的博客持续分享高质量硬件、FPGA与嵌入式知识,软件,工具等内容,欢迎大家关注。