奇巧的I\(^{2}\)C总线

🏠 首页 《无线电》杂志 1999年 🔗 第4期 🔗 第6页 分类:业余实验与制作 🔗 孙士华 🔗

大家可能从日益增多的电子产品广告中了解到“I\(^{2}\)C总线控制”这个名词(尤其是在电视产品中),知道它是一种先进的控制技术。它究竟是一种怎样的控制技术呢?现就笔者通过自己的工作对I2C总线认识,向大家作一简单的介绍。

目前被采用的I\(^{2}\)C总线主要有两个规范:一个是日本索尼公司提出的;另一个是荷兰飞利浦公司提出的。现在被广泛采用的是飞利浦公司的I2C总线技术规范,它已逐渐成为一个总线标准为微电子行业所认可,并广泛应用于消费类电子产品、通信系统产品及比较简单的自动化控制设备和仪器仪表中。

I\(^{2}\)C总线可以简单地理解为“完成集成电路或功能单元之间信息交换的规范或协议”。它的突出特点是将各电路单元划分为功能相对独立的模块,I2C总线的接口电路做在集成电路内部,可由软件进行系统的控制。中央微处理器可以把功能单元挂靠或摘离总线,可以完成对功能单元故障的检测,并给消费者以信息的提示。正由于I\(^{2}\)C总线上述的特点给整机生产厂家的产品设计、调试及更新换代创造了极为有利的条件,这也是它被电子行业广泛采用的重要原因之一。

一、I\(^{2}\)C总线的基本概念

I\(^{2}\)C总线是一种串行的时钟数据总线,能承受任何的IC制作工艺(NMOS、CMOS双极性等),与其相连的微处理器、集成电路和功能单元之间的通信仅通过两条线完成:一条是串行的时钟线SCL(Serial clock line),一条是串行的数据线SDA(Serial data line)。在一个整机产品中,微处理器、集成电路和功能单元等都有一个唯一的识别地址,它们既能充当主控器或被控器,又能充当发送器或接收器,这完全取决于软件设计人员的设计。串行总线虽然没有并行总线的输入输出能力,但它只需要很少的连线和引脚。

I\(^{2}\)C总线中的一些常用术语:

发送器:向总线上发送信息的功能单元。

接收器:从总线上接收信息的功能单元。

主控器:开始一次新的传输,产生时钟,并终止一次传输的功能单元。

被主控器:被主控器寻址的功能单元。

仲裁:当几个主控器都想发送数据时,它只允许一个主控器发送数据,并保证传输的正确性的过程。

同步:对多个主控器的时钟信号进行同步处理的过程。

I\(^{2}\)C总线是多主控器总线,这意味着可以有多个有主控能力的器件连接到总线上。但其上的时钟信号总是由一个主控器产生的,因此这就有多个主控器抢线的问题,即需要进行总线占用的仲裁,有关这方面的问题将在下面进行论述。

二、I\(^{2}\)C总线的接口特性

I\(^{2}\)C总线的数据线和时钟线都是双向传输的,经上拉电阻接到高电平。当总线处于空闲状态时,这两条线均保持高电平。连接到总线上的器件的输出级必须是集电极开路或漏极开路,用以产生“线与”功能,其参考原理图见图1。

图1
图1 🔍原图 (658×469)

三、I\(^{2}\)C总线的数据特性

数据合法性分析:在时钟信号(SCL)处于高电平期间,数据线(SDA)上的数据必须是稳定的;数据线(SDA)上的数据只有在时钟线为低电平状态时,才可以改变。其参考波形见图2。

图2
图2 🔍原图 (765×281)

数据状态分析:在I\(^{2}\)C总线的技术规范中,有两个特定状态分别被定义为“开始”和“终止”。当时钟线SCL为高电平时,数据线SDA从由高电平变为低电平,为开始状态;当时钟线为高电平时,数据线由低电平变为高电平,为终止状态,其参考波形见图3。

图3
图3 🔍原图 (769×229)

数据传输分析:在I\(^{2}\)C总线上的每一字节必须为8bit(至少目前是这样),每一次可传送的字节数从理论上说是没有限制的。每个传送的字节后必须跟随一个应答位(ACK),I2C总线的数据是以最高有效位(MSB)优先传送的。譬如说某个集成电路正忙于处理内部数据,而必须暂停主控器发来的数据,它可以通过保持时钟线处于低电平状态,从而迫使主控器暂时处于等待状态;当此集成电路完成内部处理准备接收新数据时,它可以释放时钟线使其处于高电平,进行数据的传输。

在标准工作方式下,I\(^{2}\)C总线上的传输速率为100kbit/s,在快速方式下,其传输速率可达400kbit/s,连接到系统总线上的元器件数量只受400pF的总线电容的限制。

四、I\(^{2}\)C总线的仲裁

由于I\(^{2}\)C总线具有多主控能力,因此就有多个主控器同时想占用总线的问题,这就需要进行总线的仲裁。在I2C串行数据总线上的仲裁原则是这样的:当多个主控器想同时占用总线时,假若其中有一个主控器发送低电平,另外发送高电子的主控器就应该关闭其数据输出级,因为此时SDA线上的电平与其不符。由此可见I\(^{2}\)C总线的控制完全取决于寻址和发送数据的竞争。因此严格来说,在I2C总线系统中,既无中央控制器又无任何优先级。(孙士华)