I²C

✍ dations ◷ 2025-04-03 17:02:38 #串行总线


I²C(Inter-Integrated Circuit)字面上的意思是集成电路之间,它其实是I²C Bus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。I²C的正确读法为“I平方C”("I-squared-C"),而“I二C”("I-two-C")则是另一种错误但被广泛使用的读法。自2006年10月1日起,使用I²C协议已经不需要支付专利费,但制造商仍然需要付费以获取I²C从属设备地址。

I²C只使用两条双向漏极开路(Open Drain)(串行数据(SDA)及串行时脉(SCL))并利用电阻将电位上拉。I²C允许相当大的工作电压范围,但典型的电压准位为+3.3V或+5v。

I²C的参考设计使用一个7比特长度的地址空间但保留了16个地址,所以在一组总线最多可和112个节点通信。常见的I²C总线依传输速率的不同而有不同的模式:(100 kbit/s)、(10 kbit/s),但时钟频率可被允许下降至零,这代表可以暂停通信。而新一代的I²C总线可以和更多的节点(支持10比特长度的地址空间)以更快的速率通信:(400 kbit/s)、(1 Mbit/s)(3.4 Mbit/s)(5 Mbit/s)。

虽然最大的节点数目是被地址空间所限制住,但实际上也会被总线上的总电容所限制住,一般而言为400 pF。

I²C仅使用两个双向开漏线,串行数据线(SDA)和串行时钟线(SCL),上拉了电阻。使用的典型电压是+5 V或+3.3 V(虽然其他电压系统也是允许的)。

在I²C参考设计中,使用7位或10位(取决于所使用的设备)地址空间。普通I²C总线速度为100 kbit / s的标准模式和10 kbit / s的低速模式,但任意低时钟频率也是允许的。 I²C的最新修订可以承载更多的节点,并以更快的速度运行。这些速度被更广泛地使用在嵌入式系统中而不是PC上。I²C也有其他的特性,例如16位寻址。

请注意,这里引用的比特率为主节点和从节点之间没有时钟延长或其他硬件开销的传输比特率。协议开销包括一个字节从地址(或许还有从设备内部寄存器地址)以及每个字节的ACK / NACK比特。因此这意味着,用户数据的实际传输速率要低于峰值比特率。例如,如果与从设备以低效的每次仅一个字节数据进行传输,数据率将比峰值比特率少于一半(因为其余的时钟需要发送一个字节地址和ACK比特)。

节点的最大数量受限于地址空间以及400 pF的总的总线电容。400 pF总电容也限制了实际通信距离只有几米。

如上所述,参考设计为使用串行数据线(SDA)和串行时钟线(SCL)、拥有7bit寻址空间的总线。总线上有两种类型角色的节点:

该总线是一种多主控总线,即可以在总线上放置任意多主节点。此外,在停止位(STOP)发出后,一个主节点也可以成为从节点,反之亦然。

总线上有四种不同的操作模式,虽然大部分设备只作为一种角色和使用其中两种操作模式:

一开始,主节点处于主节点发送模式,发送起始位(START),跟着发送希望与之通信的从节点的7bit位地址,最后再发送一个bit读写位,该数据位表示主节点想要与从节点进行读(1)还是写(0)操作。

如果从节点在总线上,它将以ACK字符比特位应答(低有效)该地址。主节点收到应答后,根据它发送的读写位,处于发送模式或者接收模式,从节点则处于对应的相反模式(接收或发送)。

地址和数据首先发送最高有效位。起始位在SCL位高时,由SDA上电平从高变低表示;停止位在SCL为高时,由SDA上电平从低变高表示。其他SDA上的电平变化在SCL为低时发生。

如果主节点想要向从节点写数据,它将发送一个字节,然后从节点以ACK位应答,如此重复。此时,主节点处于主节点发送模式,从节点处于从节点接收模式。

如果主节点想要读取从节点数据,它将不断接收从节点发送的一个个字节,在收到每个字节后发送ACK进行应答,除了接收到的最后一个字节。此时,主节点处于主节点接收模式,从节点处于从节点发送模式。

此后,主节点要么发送停止位终止传输,要么发送另一个START比特以发起另一次传输(即“组合消息”)。

原始的I²C系统是在1980年代所创建的一种简单的内部总线系统,当时主要的用途在于控制由飞利浦所生产的芯片。

I²C被应用在简单且其制造成本较传输速度更为重要的外设上。一些常见的应用如下:

I²C的另一个强大用途在于微控制器的应用,利用两根通用的输入输出接脚及软件的规划,可以让微控制器控制一个小型网络。

外设可以在系统仍然在运作的同时加入或移出总线,这代表对于有热插拔需求的设备而言是个理想的总线。

像I²C这样的总线之所以流行起来,是因为电脑工程师发现到对于集成电路设计而言,许多的制造成本源自于封装尺寸及接脚数量。更小的包装通常能够减少重量及电源的消耗,这对于移动电话及手持式电脑而言格外重要。

在Linux中,I²C已经列入了内核模块的支持了,更进一步的说明可以参考内核相关的文件及位于/usr/include/linux/i2c.h 的这个头文件。OpenBSD则在最近的更新中加入了I²C的架构(framework)以支持一些常见的主控端控制器及传感器。

相关

  • 幻数幻数(英语:Magic Number),又称魔数,是指原子核中质子数和中子数的某个特定数值。当质子数或中子数为幻数,或者二者取值均为幻数时,原子核会显示出较高的稳定性。目前已经确认的幻数
  • 辉格党英国辉格党(Whig)是英国历史上的一个政党。辉格一词的来源是“驱赶牲畜的乡巴佬”(whiggamore),用以消遣“好勇斗狠的苏格兰长老会信徒”,是政敌托利党对辉格党员的歧视语,但后来约
  • 替身替身,俗称替死鬼,闽南、台湾称交替。在道教、中国民间信仰中,枉死的鬼魂,为了能再投胎转世,必须找一个顶替自己的人,并使之身亡,称为“替身”。 如清朝袁枚小说《续子不语》:李生夜
  • 第零热力学第零定律(英语:Zeroth Law of Thermodynamics),又称热平衡定律,是热力学的四条基本定律之一,是一个关于互相接触的物体于热平衡时的描述,并为温度提供了理论基础。最常用的定
  • 黑暗浪漫主义黑暗浪漫主义(英语:Dark romanticism)又称美国浪漫主义,是一种19世纪的文学流派,以爱伦·坡、纳撒尼尔·霍桑及赫尔曼·梅尔维尔等一批新英格兰地区的作家为中心。与完美主义的超
  • 欧亚语系亚欧语门(英语:Eurasiatic languages)为一个认为其语言分类范围扩及亚欧大陆北部地区的总语系,然而对于这项假设绝大部分主流的历史语言学学者并未给予大力支持。各个专家对于亚
  • 石城县石城县在中国江西省东南部,是赣州市下辖的一个县。早在新石器时期,石城境内就有人类活动。三国·吴嘉禾五年(公元236年),析雩都地置揭阳县,为石城建县之始,先后属庐陵郡、南康郡。
  • 库莱诺维奇收藏馆库莱诺维奇收藏馆(瑞典语:The Kulenovic Collection)是瑞典卡尔斯克鲁纳的一座博物馆,开放于2007年。时至今日,它已经被关注了将近80年。收藏馆馆主是里扎赫·库莱诺维奇,他是著名
  • 宽颚狐蝠宽颚狐蝠(学名: 或 ),哺乳纲、翼手目、狐蝠科宽颚狐蝠属下的单属种,而与宽颚狐蝠同科的动物尚有短颚果蝠、黑冠果蝠、斑翅果蝠、豕果蝠等之数种哺乳动物。
  • 蜡笔小新:风起云涌 光荣烧肉之路《蜡笔小新:风起云涌 光荣烧肉之路》(日语:映画クレヨンしんちゃん 嵐を呼ぶ 栄光のヤキニクロード),是蜡笔小新系列的第十一部动画电影,于2003年4月19日在日本上映。某个野原家的