分享

历史悠久的I2C总线

 zsok 2016-04-13
今天,我们来重温一下历史悠久的I2C总线。

I2C(Inter-Integrated Circuit, 内部集成电路总线)是由Philips公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是微电子通信控制领域广泛采用的一种总线标准,是同步 通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。

第一代具有I2C总线功能的集成电路出现于30多年前,1982年由飞利浦半导体公司 (Philips Semiconductor)开发,它是简单的串行总线,用于控制电视机内的各种芯片。

虽然I2C历史悠久,但现在它仍在不断改进中,出现了很多改进之处,例如,使用差分信号以改进抗噪声能力,改进总线仲裁以便更容易将总线连接在一起。


I2C总线版本演进
I2C总线代表了全行业的规范,共经历了4个版本。最新版本于2012年推出,总线的运行速度已经由原来的100kHz升至5MHz。

我们先对I2C总线的历史作一个简短回顾。1.0版本的规范发布于1992年,运行速度可达400KHz。1998年的2.0版本增加了一个高速模式和若干节能选项。2007年的主要规范将运行速度升至1MHz(快速模式Plus或Fm+)。2012年最近的一次版本升级引入了一个单向5MHz的可选项,称之为超快速模式(UFm)。

I2C总线发生了许多变化。有一些名称的更改是出于对飞利浦半导体公司在总线某些关键技术上的专利权保护。原专利已于2004年过期,所有商标和知识产权转移到NXP半导体公司(2006年从飞利浦公司分拆出来)。I2C总线是ACCESS.总线、VESA显示数据信道(DDC)接口、系统管理总线(SMBus)、电源管理总线(PMBus)和智能平台管理总线(智能平台管理接口)的通信协议。

I2C总线的构成及信号类型
I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在IC与IC之间进行双向传送,最高传送速率100kbps。对于并联在一条总线上的每个IC都有唯一的地址。

 
I2C总线有两根信号线,一根为SDA(数据线),一根为SCL(时钟线),时钟信号是由主控器件产生。I2C总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。

开始信号:SCL为高电平时,SDA由高电平转变为低电平跳变,表示开始通信。

结束信号:SCL为高电平时,SDA由低电平转变为高电平跳变,结束结束通信。

应答信号:接收数据的IC在接收到一个字节数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。
  
开始和结束信号都是由主机发出的,应答信号是由从机发出的,开始和结束通信过程的时序如图所示。

 
这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。

辉煌的历史和光明的未来
为什么会对I2C总线协议和接口有兴趣?目前几乎所有研发出来的IC传感器都使用I2C总线作为通信信道。这种简单的两线式接口节省了引脚数目,高效的载荷利用率确保了足够的数据传输的带宽。最重要的是,I2C总线接口在微控制器中的大量应用使得接入传感器变得很容易——确保了其广泛的应用基础。
现在的智能手机设计使人们对I2C总线设备的使用有深入了解。现代智能手机需要大量的人为和环境投入,举例来说:罗盘、陀螺仪、高度计、温度计、湿度计、指纹、加速计、环境光线、接近程度、触感、力度。总的来说,每款智能手机的设计中有超过10个不同的I2C总线传感器,每升级到新一代的平台,其数目还会增加。计算部分也依赖于I2C总线。服务器系统需要保持高度可靠和最大的正常工作时间。I2C总线可以对环境变量包括电源电压,功耗,风扇转速和温度提供一个独立的报告结构。实际上,内存DIMMs和CPU也由I2C总线信道来连接,用于向CPU提供内存速度,配置和其他工作参数。

 I2C总线用于连接许多设备

是什么促进了I2C总线的发展
I2C总线的运行速度不断递增,外围芯片数量不断增长,半导体厂商们是如何使得总线更容易使用的?一个主要问题是现代系统中不同的供电电平。CPU 使用的电压最低以减少其功耗,而传感器使用较高的电压以增加模拟信号的摆幅。由于不同的供电电压,I2C总线需要一个高速、双向、稳健的电压电平转换器。 需要注意的是,I2C总线是双向的,但是它并没有方向引脚,转换器必须检测出要往哪个方向传递并做出相应的调整——在高速运行的状况下这个任务并不容易。

在某些情况下,I2C总线必须从处于相对安全的设备外壳中脱离出来,面对严酷的、不可预测的外界环境。即使是处于设备外壳中,当PCB信号线过长时,可能造成电容性负载增加,进而将导致信号成倍增长,不再符合规范。这两种状况都可以用I2C缓冲器和信号放大器来解决。而在缓冲器设计方面,所有电压 电平转换器的设计依然面临挑战,而且还增加了对高速放大器的需要。

现在的系统使用大量的I2C外设,所以容易导致设备地址冲突。解决办法是采用一个多路复用器芯片将上游总线分为2个、4个或8个独立的下游总线,以作为各个部分独立运作。这些分部可以作为冗余分支,也可以简单地为I2C外设划分地址空间。

新一代I2C总线的发展方向
半导体器件公司正在积极地开展对总线的改进和扩大应用。许多人关心的问题是其抗噪声能力。虽然I2C高度可靠,但是并没有协议方法来丢弃错误的数据包,因为总线本身设计简单,以便于应用。

NXP公司推出了一个硬件的解决方案,可以直接将I2C总线由单端切换为差分配置。这极大地增强了抗噪声能力,并且克服了由于不同电源域而导致的接地偏移问题。当然为了确保当前软件可以使用,并没有改变协议。

I2C总线规范对于多个主机也做出了规定,但是有许多地方可能会引发问题。N X P的解决方案明确了协议以及在需要仲裁之前要发送什么消息。这使得主机之间的无缝切换成为可能,并且不会出现丢包或畸形数据包——增加了整个系统的可靠性和安全性。

另一个开发领域是关于多主机的仲裁。有127个I2C地址,而每个设备有一个基址是固化的,许多设备使用引脚来改变地址,还有许多设备只有一个地址。假设你有一个设备只有1个I2C地址,但是你必须在系统中使用4个设备。你可以使用多路复用器将上游总线分为4个独立的下游总线。你可以在每个下游总线上使用相同的I2C地址而不会引起冲突。

I2C会被SPI取代吗
由于具备工作系统所需的简单的硬件和软件,I2C总线被广泛接受。在许多年的“精简系统”之后,似乎有人怀疑另一种总线可以取代I2C总线,这就是SPI。
S P I经常被视为I2C的可行的替代方案。因为S P I的接口更加面向数字化,这使得将S P I纳入系统似乎更简单。但是S P I只是一个硬件接口,而其协议是完全开放的,这意味着每个新的S P I外设的使用需要新的软件支持。而I2C总线是完全指定的,所有的外设都可以在任何主机上工作。但是I2C总线属于模拟密集型,需要细致的系统设计以维持其最佳性能。我们都应该重温I2C总线的细节,投入所需的资源进行设计,以实现总线可靠性最大化。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多