彻底搞懂I2C总线(一)什么是I2C?什么是总线?什么是I2C总线?什么是I2C标准?I2C总线特点?I2C标准发展历史?

 

本文由德力威尔王术平原创,转载、引用请注明出处,否则侵权。

 

目录

 

 

 

 

摘要

本文能帮助电子技术爱好者彻底搞明白I2C的由来、I2C的读法、总线BuS的来源、总线Bus的定义、总线Bus的主要特点、什么是I2C总线、什么是规范、什么是I2C总线规范等知识原理,为全面掌握I2C总线规范打好基础。

 

一. 什么是I2C

 

 图1-1  I2C Logo

 

1.1 I2C的由来

在电视机内部电路中,众多功能需要用到许多集成电路IC来实现,包括主控器件微控制器和众多外围设备器件,如:PLL合成器、非易失性存储器、音频处理器、视频处理器、屏幕显示器等。这些器件相互之间要传递数据信息,那么就需要用导线相互连接,如此众多IC器件的互连,势必导致芯片引脚、PCB走线以及连接导线变得数量庞大,错综复杂,这会导致IC芯片体积增大、功耗增大、成本增加,给IC芯片设计制造厂商带来不利影响,同时也给IC芯片应用厂商和应用工程师们造成极大不便。

 

1982年,从事电灯泡、电剃刀、电唱机、收音机、电视机等研发制造已久的荷兰飞利浦公司,为解决电视机的上述问题,从而发明了一种集成电路互连通信电路,该电路的优点就是仅用两条线就可以实现芯片之间的互连通信,使硬件电路最简化,硬件效益最大化,给芯片设计制造者和芯片应用者带来极大益处。

 

飞利浦公司给这种集成电路互连通信电路命名为Inter-Integrated Circuit,简称为Inter-IC,或I2C(数字“2”为上标)。

 

1.2 I2C的读法

在“Inter-Integrated Circuit” 中,“Inter-” 表示“在……之间,相互”的意思;“Integrated Circuit” 简称“IC”,表示“集成电路”的意思。 “Inter-Integrated Circuit”,直接翻译过来就是内部集成电路(DeepL翻译为互联电路,微软翻译为内部集成电路,百度翻译为内置集成电路)。德力威尔王术平认为,应该把“Inter-Integrated Circuit”翻译为集成电路互连或者芯片互连,更符合国人习惯,更为贴切。

 

在中国正式的书面场合,全称写作Inter-Integrated Circuit,简写Inter-IC或者I2C(数字“2”书写为上标,,英文读作“I squared C”,中文读作“I平方C”)。

 

在非正式场合或者数字“2”无法书写为上标时,有人就书写为“IIC”或者“I2C”,把“IIC”读作“I-I-C”,把“I2C”读作“I-two-C”或“I二C”。这些书写方式或叫法,其实没有对错,只是不同习惯而已,就像普通话和地方话一样。但是,我们在严谨的正式场合,还是要统一标准,规范书写为“I2C”(数字“2”书写为上标),规范读作“I平方C”。

 

在本文中,德力威尔王术平对相关术语的中文解释做出如下约定:

I2C:读作“I平方C”(尽量不读作“I方C”,避免和I3C混淆)。

I2C:集成电路互连。

I2C Bus:I2C总线或集成电路互连总线。

I2C Specification:I2C规范或集成电路互连规范。

I2C Communication Interface:I2C通信接口或集成电路互连通信接口。

I2C Communication Protocol:I2C通信协议或集成电路互连通信协议。

I2C:在无法书写上标数字“2”时,可书写为“IIC”或“I2C”。

 

二. 什么是总线(Bus)

2.1 计算机中Bus术语的来源

 

图1-2 早期的ENIAC计算机

 

 

 

图1-3 有序排列的线束

 

早期的计算机体积庞大,连线复杂(如图1-2),所有数据都通过实际的电缆传输,这变得非常混乱。把这些大捆的杂乱的电缆线,有序的布置在一个公共线排上,这些规则排列在一起的公共线束(如图1-3),就是术语“总线”的早期来源,用BUS表示。下面这段话来自https://study.com官网,揭示了“BUS”的来源:

In early computer systems, all the data traveled across actual cables, which got pretty messy. Large bundles of wires were organized using bus bars, which is where the term 'bus' comes from.

 

2.2 计算机中Bus术语的定义

在计算体系结构中, 总线(Bus)是计算机内部组件之间或计算机之间传送信息的公共通信干线,它是由导线组成的传输路径。

 

总线(Bus)是一种电路,它是cpu、RAM、ROM、输入、输出等设备传递信息的公用通道,充当数据在计算机内传输的高速公路(如图1-4所示)。

 

 

图1-4 计算机中的总线(Bus)

 

 

按照计算机所传输的信息种类,计算机的总线可以划分为数据总线地址总线控制总线,分别用来传输数据信息、地址信息和控制信号

 

2.3 深入理解Bus

2.3.1  单根导线构成的Bus

 

图1-5  1-Wire总线(BUS)示意图

 

 

如图1-5所示的1-Wire总线中,仅用一根线将MCU和N个温度传感器连接起来,就构成了一个单线总线。

 

主控器件MCU通过一根线分别和N个传感器设备传输信息,每个传感器分时轮流占用并控制这根线和MCU通信,也就是说,同一个时刻,只能有一个传感器设备占用总线,其它传感器设备必须排队,分时轮流占用控制,不能有两个及以上的传感器设备同时占用控制总线。

 

从图1-5中,我们可以总结出Bus的一些特点:

①一根线供两个以上的器件共同使用;

②一根总线由一根导线构成;

③总线连接的器件,必须多于两个,其中不少于一个主机,也就是必须是一主多从、多主一从以及多主多从;

④总线通信时,无论是主机器件还是从机器件,同一个时刻,只能有一个器件占用并控制总线对外发送数据,一个器件从外接收数据,也就是一发一收的模式进行数据传输(某些广播信息、握手协议等可以一发多收)。

 

2.3.2  多根导线构成的Bus

 

 

图1-6多根导线构成一组总线(来源:德力威尔实训案例)

 

 

一根导线把每个器件相对应的某个数据引脚都连在一起,因此这根导线就成为了一根数据线;所有器件都分时轮流占用并控制这根数据线来传输数据,因此这根数据线就成为了一根数据总线;像这样的数据线有多根,多根数据线构成多根数据总线,多个数据总线被称之为一组(束)数据总线(如图1-6)。

 

一根导线把每个器件相对应的某个地址引脚都连在一起,因此这根导线就成为了一根地址线;所有器件都分时轮流占用并控制这根地址线来传输地址,因此这根地址线就成为了一根地址总线;像这样的地址线有多根,多根地址线构成多根地址总线,多个地址总线被称之为一组(束)地址总线(如图1-6)。

 

一根导线把每个器件相对应的某个控制引脚都连在一起,因此这根导线就成为了一根控制线;所有器件都分时轮流占用并控制这根控制线来传输控制信号,因此这根控制线就成为了一根控制总线;像这样的控制线有多根,多根地控制线构成多根控制总线,多个控制总线被称之为一组(束)控制总线(如图1-6)。

 

 

图1-7计算机中的总线连接示意图

 

 

在图1-7中,计算机的中央处理器CPU要实现对存储器、显示器、键盘、鼠标、硬盘等外围设备的控制和管理,就必须用导线将它们互相连接起来,但这些互连导线是有严格规定的。

中央处理器和外围设备所有数据线全部连接在一组线上,所有的地址线全部连在一组线上,所有控制线全部连在一组线上,这就构成了数据总线、地址总线和控制总线,这三路总线是相互独立的。

 

每一个外围设备分时轮流占用数据总线和中央处理器进行数据传输;也就是说,同一个时刻,只能有一个外围设备占用数据总线与中央处理器传输数据,其他外围设备必须排队,分时轮流使用,不能有两个及以上的外围设备同时占用数据总线。

 

每一个外围设备分时轮流占用地址总线和中央处理器进行地址传输;也就是说,同一个时刻,只能有一个外围设备占用地址总线与中央处理器传输地址,其他外围设备必须排队,分时轮流使用,不能有两个及以上的外围设备同时占用地址总线。

 

每一个外围设备分时轮流占用控制总线和中央处理器进行控制信号传输;也就是说,同一个时刻,只能有一个外围设备占用控制总线与中央处理器传输控制信号,其他外围设备必须排队,分时轮流使用,不能有两个及以上的外围设备同时占用控制总线。

 

2.3.3  Bus的主要特点

Bus(总线)具有以下特点:

①总线是一种电路,是多于两个器件互连的传输电信号的导线;是多于两个器件共同使用的公共线路。

②一根导线可以构成一根总线,一根总线只有一根导线;多根导线就构成多根总线,相同作用的多根总线,可称之为一组总线。

③总线连接的器件,必须多于两个,其中不少于一个主机,也就是必须是一主多从、多主一从以及多主多从(只有两个器件的互连线不能成为总线)。

④总线通信时,无论是主机器件还是从机器件,同一个时刻,只能有一个器件占用并控制总线对外发送数据,一个器件从外接收数据,也就是一发一收的模式进行数据传输(某些广播信息、握手协议等可以一发多收)。

⑤总线能简化硬件,如简化芯片的引脚数量,简化导线的数量,简化布线空间等;从而能节约成本、提高性能。

⑥构成总线的导线可以是常规导线及线束、印刷电路板上的铜走线、以及硅芯片内部的微小走线等导体。

 

国外把总线命名为“Bus”而非“Car”,是有其道理的。总线命名为“Bus”,真的非常贴切,总线好比公交车一样,人们可以通过坐公交车到达城市的各个地方,人就如电信号,汽车内部容纳人的座位就如导线,只有一个座位的公交车就如只有一根导线构成的总线,多个座位的公交车就如多根导线构成的一组总线,人们可以分时轮流占用一个座位,但同一个时刻不能有两个及以上的人坐在同一个座位上。

 

为方便记忆,德力威尔王术平用八个字来刻画总线的本质:一线多连轮流占用

 

三. 什么是I2C总线(I2C-bus)

图1-8  I2C Bus Logo

 

 

如图1-9,在I2C电路中,多个主机器件和从机器件之间通信时只需要用到两根导线互连,这两根导线分别为串行数据线(SDA)和串行时钟线(SCL)。

 

图1-9  I2C Bus 连线示意图

 

 

如图1-9,所有主从器件的SDA线全部连在一根线上,这些器件分时占用这根公共数据线,来实现两两互传数据,那么SDA符合了数据总线的特征;所有主从器件的SCL线全部连在一根线上,它们分时占用这根公共时钟线,来实现两两互传时钟,那么SCL符合了时钟总线的特征。

 

因为I2C中的两根导线(SDA和SCL)构成了两根Bus,实现了Bus的功能;由于I2C电路能实现Bus的功能,故把I2C 电路称为 I2C-bus,中文叫I2C总线(I2C总线是一个两线总线)。

 

四. 什么是规范(Specification)

Specification就是规范,规范就是标准或准则的意思。

 

国际标准化组织(ISO)的标准化原理委员会(STACO)一直致力于标准化概念的研究,先后以“指南”的形式给“标准”的定义作出统一规定:

 

标准是由一个公认的机构制定和批准的文件。它对活动或活动的结果规定了规则、导则或特殊值,供共同和反复使用,以实现在预定领域内最佳秩序的效果。

 

五. 什么是I2C总线规范(I2C-bus Specification)

Philips公司发明I2C-bus后,一方面,利用该项技术,研发出许多带有I2C-bus功能的芯片。这些带有I2C-bus功能的芯片,一部分用于自己使用,一部分出售给其他芯片应用厂商;另一方面,将I2C-bus专利技术授权提供给其他芯片制造厂商,获得专利技术授权的其他芯片制造厂商把该项技术应用集成到自家的芯片中,使自家的芯片也具有I2C-bus功能。

 

Philips公司无论是对外出售I2C-bus芯片,还是对外出售I2C-bus专利技术,都要同时对外提供一套完整的技术文档和应用细则,使得具有I2C-bus功能的器件有一个统一的标准,这就是I2C总线规范(I2C-bus Specification)。

 

最初,I2C 总线规范由飞利浦半导体公司编写。后来被IEEE(电气电子工程师协会)引用采纳,成为全世界的行业标准。2016年, Philips(飞利浦)公司旗下的半导体事业部独立成为一个新公司,取名NXP(恩智浦)公司,NXP(恩智浦)公司现在是I2C总线规范的利益相关者。

自2006年10月10日起,I2C原始专利已过期,因此I2C总线可以自由使用,不需要支付专利费,但制造商获取NXP分配的I²C从设备地址仍然需要付费。

2017年由MIPI联盟推出的I3C规范,NXP参与并做出了贡献。MIPI I3C提供了与I2C的向后兼容性、更高的速度和更低的功耗,并且提供了免版税版本。

I2C总线是一种全世界遵循的行业标准,目前已在50多家公司生产的1000多种不同IC中应用实施。此外,通用的I2C总线用于各种控制体系结构,如系统管理总线(SMBus)、电源管理总线(PMBus)、智能平台管理接口(IPMI)、显示数据通道(DDC)和高级电信计算体系结构(ATCA)。

 

六. I2C总线规范版本发展历史

①  首发版本:1982年Philips原创首发。

 

②  V1.0-1992: 删除了从机地址软件编程的内容;删除了低速模式(Low-speed mode )的详细说明;增加了快速模式(Fast-mode),位速率达400Kbit/s,并向下兼容标准模式(Standard-mode)的0~100Kbit/s位速率。

 

③  V2.0-1998:I2C总线已经成为世界标准,已授权给50多家公司,并在1000多种不同的IC中应用实现。增加了高速模式(High-speed),位速率达3.4Mbit/s,并向下兼容快速模式和标准模式;增加了对低电压2V或更低器件的支持,并兼容高电压器件;删除了快速模式输出级的0.6V/6mA的要求;增加了新的器件用总线电压相关电平替代固定电平的内容;增加了双向电平转换器的应用。

 

④  V2.1-2000:增加了在高速模式下的重复起始条件后,可以延长时钟信号SCLH;放宽了高速模式下的一些时序参数要求。

 

⑤  V3.0-20070619:增加了快速模式增强版(Fast-mode Plus),它将驱动强度提高了10倍,并将位速率从快速模式的400Kbit/s,提高到1 Mbit/s,以满足更长的总线和或更快的速度的应用需求。

 

⑥  V4.0-20120213:增加单向I2C总线和超快模式(Ultra Fast-mode),位速率达5Mbit/s。

 

⑦  V5.0-20121009:纠正了一些错误。

 

⑧   V6.0-2014:修改了上拉电阻的计算方法。

 

⑨  V7.0-2021:更新了I2C芯片制造商名称ID清单表;将术语“主/从”更新为“控制器/目标”;增加了MIPI I3C规范内容,I3C位速率达10Mbit/s,为I2C和SPI提供灵活的升级方案。

 

七. I2C总线的特点

 

 

图1-10 I2C总线应用示例

 

 

I2C具有如下特点:

 

①只需要两条总线;串行数据线(SDA)和串行时钟线(SCL)。

 

②连接到总线的每个设备都是可通过唯一地址进行软件寻址的,并且始终存在简单的控制器/目标关系;控制器可以作为控制器发送器或控制器接收器运行。

 

③这是一种真正的多控制器总线,包括冲突检测和仲裁,以防止两个或更多控制器同时启动数据传输时出现数据损坏。

 

④面向8位的串行双向数据传输速率在标准模式下最高可达100 kbit/s,在快速模式下最高可达400 kbit/s,在快速增强模式下最高可达1 Mbit/s,在高速模式下最高可达3.4 Mbit/s。

 

⑤串行、面向8位、单向数据传输,在超快速模式下最高可达5 Mbit/s。

 

⑥片内滤波可抑制总线数据线上的尖峰信号,以保持数据完整性。

 

⑦可以连接到同一总线的IC数量仅受最大总线电容的限制。在某些条件下(如简化SCL时钟频率、增加输出驱动力、增加缓冲器件、改进上拉电阻等),可以允许更大的电容。

 

⑧极低的电流消耗,高抗扰度,宽电源电压范围,宽工作温度范围。

 

⑨硬件的最简化,给芯片设计师减轻了节省输出引脚的压力,给芯片应用商带来了成本降低、空间减小、测试方便、易于升级等诸多好处,为芯片应用工程师的产品开发带来灵活多样的选择方案、方便快捷的调试手段、开发周期的缩短、开发效率的提高等好处。

 

 

未完待续,敬请关注《彻底搞懂I2C总线(二)》。

 

 

本文由德力威尔王术平原创,转载、引用请注明出处,否则侵权。

 

posted @ 2022-04-19 23:06  德力威尔王术平  阅读(5697)  评论(0编辑  收藏  举报