一种I2C接口扩展器的设计

2012-07-03 03:57:50邱永华
电子产品可靠性与环境试验 2012年6期
关键词:扩展性嵌入式总线

邱永华

(广东女子职业技术学院,广东 广州 510450)

0 引言

嵌入式系统是当前最热门、最有发展前途的IT应用技术之一,从随身携带的MP3、语言复读机、手机和PDA到家庭中的智能电视、智能冰箱和机顶盒,再到工业生产、娱乐中的机器人,无不采用嵌入式技术。

串行扩展总线技术是嵌入式技术发展的一个显著特点[1]。其中Philips公司推出的I2C总线最为著名。与并行扩展总线相比,串行扩展总线有突出的优点:电路结构简单,程序编写方便,易以实现用户系统软硬件的模块比、标准化等。目前I2C总线技术已为许多著名公司所采用,并广泛地应用于各种嵌入式系统中。

1 I2C总线简介

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

1)只要求两条总线线路:一条串行数据线(SDA),一条串行时钟线(SCL);

2)每个连接到总线的器件都可以通过唯一的地址和一直存在的、简单的主机/从机关系软件所设定的地址来识别,主机可以作为主机发送器或主机接收器来使用;

3)它是一个真正的多主机总线,如果两个或更多的主机同时初始化,数据传输就可以通过冲突检测和仲裁来防止数据被破坏;

4)串行的8位双向数据传输位速率在标准模式下可达100 kbit/s,快速模式下可达400 kbit/s,高速模式下可达3.4 Mbit/s;

5)连接到相同总线的IC数量仅受到总线的最大电容400 pF的限制。

I2C总线实现了两个芯片之间控制和数据信号的传输,它的应用将芯片之间的连接线减小到了最少,大大提高了芯片之间连接的可靠性、稳定性以及系统的抗干扰能力。拥有I2C总线的新型芯片几乎可以不加任何外设就轻易地实现和总线的连接。嵌入式系统中常见的I2C总线连接方式如图1所示。

图1 I2C总线系统连接图

2 I2C扩展器的设计

为了提高系统的兼容性及可扩展性,目前越来越多的嵌入式系统都采用模块化设计,即不再将所有的芯片都集成在一个嵌入式模块上,而是把核心控制系统与外围接口芯片分离成多个模块,根据系统的不同需求来进行组装和连接。模块化的设计可以减少新产品的开发周期,节约开发成本,大大提升系统的兼容性和扩展性,能让系统更好地适应现场应用的各种需求[3]。

带有I2C总线的嵌入式系统也常常把I2C总线扩展出去,控制模块与I2C其它模块间通过外部线缆进行连接,并可以通过连接不同的模块来实现各种不同的功能。例如:对于一个温度采集系统,由于采集模块常处于高温或者低温环境,为了保证控制模块能够长期稳定地工作,常通过如图2所示的方式将控制模块与采集模块进行连接,同时也可以根据现场系统的需求,方便地减少或者增加采集模块来完成不同的功能。

图2 温度采集系统连接图

采集模块和控制模块的分离可以很好地解决不同的应用中采集模块扩展的问题,但在扩展中同时也引出了新的问题:如接口数量,I2C器件地址冲突等。如果控制模块上的接口数量过少,该模块就不能应用于大的系统;如果接口数量过多,则在应用于小系统时控制模块又显得过于臃肿。同时I2C器件的访问是根据地址来区分的,即,如果一个系统中存在多个相同的模块,并且这些模块的I2C器件的地址相同,就会造成系统I2C通信异常[4]。

为了解决上述问题,可以在控制模块与采集模块之间加一个I2C接口扩展器,这样不仅可以缩小控制模块,即可以将其I2C接口减少为一个,也可以解决I2C器件的地址冲突等问题,如图3所示。

图3 I2C接口扩展器连接图

为了满足各种系统的需求,可以根据系统的规模来选择不同规格和接口数量的I2C接口扩展器[5]。I2C接口扩展器与系统控制模块之间只有两条I2C通信线进行连接,所以I2C模块之间的切换必须通过I2C进行。I2C接口扩展器的简单原理设计框图如图4所示:

图4 I2C接口扩展器原理图

如图4所示,PCF8574是一种I2C数据串行转并行的扩展器件,即可以将输入的8位串行数据并行输出。所以可以通过对PCF8574写入不同数据控制PCF8574 8个并行IO的输出状态。SN74CBT3257是一种带两个双输入双向的数字开关,通过外部的控制信号可以随意地切换输入与输出配对关系。

将 PCF8574的并行输出 IO连接到SN74CBT3257的开关控制信号上,即实现了通过I2C控制PCF8574来进行I2C端口的切换。如对PCF8574先后写入 0×00和 0×80,就可以将PCF8574的最高位先拉低再置高,其它低7位状态保持不变,即实现对SN74CBT3257的输出口从A输入口到B输入口的切换。

由于1片PCF8574有8个IO口,即可以输出8个控制信号,所以最多可以控制8片SN74CBT3257,而1片 SN74CBT3257可以连接 4个不同的I2C接口,所以一片PCF8574最多可以连接32个I2C接口,在I2C地址都相同的情况下,最少也可以连接8个I2C地址相同的模块。PCF8574本身的地址是通过外部电阻上下拉而选择的,其地址配置管脚有3个,根据组合关系,在一条I2C总线上最多可以连接9片PCF8574,所以这种扩展器最大规模时最多可以连接288个不同地址的I2C器件,即使模块的地址一样,最少也可以连接72个I2C模块。因此,可以根据系统大小设计出不同规格相适应的I2C接口扩展器[6]。

3 结束语

基于PCF8574控制和SN74CBT3257切换开关的I2C接口扩展器的结构简单,扩展性强,具有非常高的实用性。唯一的缺点是需要修改控制软件,切换时需要对PCF8574进行单独控制,对软件架构比较完整的系统影响较大。此时,如果对于系统要求扩展性和速度不高的场所则可以用1片单片机进行转换,而如果不计较系统成本则可以选择CPLD,CPLD具有更好的扩展性及控制优势,这也是将I2C扩展器应用于高端系统的研究方向。

[1]牟浩.I2C总线控制器的设计 [J].科协论坛(下半月),2010,(10): 25.

[2]龚向东,黄虹宾,刘春平.主从可配置I2C总线接口IP及其应用 [J].电讯技术,2010,(1):36.

[3]邱永华,贺文健.开放式运动控制器人机界面的研究与设计 [J].计算机系统应用,2011,(4):28-30.

[4]陈穗光,葛建华.I2C总线接口协议设计及FPGA的实现[J].山西电子技术,2006,(6):55-56.

[5]谭平,刘建新.基于I2C总线的PIC单片机端口扩展技术 [J].微计算机信息,2006,(17):21-23.

[6]邱永华.智能跷跷板小车控制系统的设计 [J].电子产品可靠性与环境试验,2011,29(1):10-12.

猜你喜欢
扩展性嵌入式总线
基于PCI Express总线的xHC与FPGA的直接通信
测控技术(2018年6期)2018-11-25 09:50:12
机载飞控1553B总线转以太网总线设计
测控技术(2018年8期)2018-11-25 07:42:08
搭建基于Qt的嵌入式开发平台
提高初中阶段学生英语扩展性阅读能力策略分析
嵌入式软PLC在电镀生产流程控制系统中的应用
电镀与环保(2016年3期)2017-01-20 08:15:32
高中物理如何充分利用扩展性栏目
学周刊(2016年26期)2016-09-08 09:02:56
比ITX还小华擎推首款Mini—STX主板
电脑爱好者(2016年8期)2016-04-28 20:54:47
网络教学平台的扩展性研究
多通道ARINC429总线检查仪
Altera加入嵌入式视觉联盟