I2C总线在多机通信中的应用

发布者:彩虹微笑最新更新时间:2014-08-21 来源: eefocus关键字:I2C总线  多机通信  软硬件设计 手机看文章 扫描二维码
随时随地手机看文章
       I2C(Inter Integrated Circuit)总线是Philips公司开发的一种双向两线主机总线,它能方便地实现芯片间的数据传输与控制。通过两线缓冲接口和内部控制与状态寄存器,可方便地完成多机间的非主从通信或主从通信。基于I2C总线的多机通信电路结构简单、程序编写方便,易于实现系统软硬件的模块化和标准化。 

       本文给出了基于I2C总线的多机通信调度指挥系统方案,讨论了系统的软硬件设计。

1 系统硬件设计 

       本调度指挥系统由主机和调度操作台两部分组成,工作原理如图1所示,两者间通过RS422总线实现较长距离的数据传送。主机和操行台内部均采用分散多处理器控制,处理器间采用I2C总线进行数据通信。



       主机内部采用分散控制方式,整个交换系统被分割成多个用户子系统及1个通信子系统,每个子系统由一个CPU处理单元负责128个用户的呼叫控制和管理,多个子系统之间通信I2C组成一个无主通信总线进行信息交互(如呼叫处理信息、维护信息等),构成一个完整的交换系统。 

       调度操作台由操作台控制CPU、显示屏及多个用户键板构成,支持128~1024个操作按键和256~2048个LED指示灯,每个操作按键可缩位一组电话号码对应主机内的一个电话用户,双灯组合指示该电话用户状态,并支持LCD中文显示。操作台内部主控CPU与用户键板控制CPU之间通过I2CU叫线组成主从通信总线进行信息交互(按键信息、LED显示信息)。

1.1 主机I2C总线构成 

       子系统的CPU处理单元由Philips-80C652单片机配合外围电路(如EPROM、RAM、EEPROM、译码和I/O驱动等)构成,80C652具有一个支持双向数据传送的I2C总线串行接口,I2C总线逻辑根据路径自动地进行数据传送。CPU对I2CU总线的访问通过以下四个特殊功能寄存器完成: 

       S1CON(D8H) SIO1控制寄存器 

       S1STA(D9H) SIO1状态寄存器 

       S1DAT(DAH) SIS1数据寄存器 

       S1ADR(DBH) SIO1从地址寄存器 

       SIO1逻辑通过P1.6/SCL和P1.7/SDA两个引脚连接到外部I2C总线,可工作于以下四种模式:主发送模式、主接收模式、从接收模式、从发送模式。各子系统间的I2C接口复接即构成了主机I2C通信总线,通票用无主通信方式,每个CPU既可以响应通用地址的广播呼叫,也可以进行点对点的通信,完全满足程控交换的信息传送要求且结构简单。连接示意图如图2所示。



1.2 调度台I2C总线构成 

       操作台控制CPU板由Philips-80C652单片机配合外围电路(如EPROM、RAM、EEPROM、译码和显示驱动电路等)构成,其P1.6-SCL、P1.7-SDA为I2C总线接口SIO1。单片机的SIO1通过MC3486/3487与主机通过RS422接口通信,SIO1与用户键板的P87LPC764通信,最多可支持63块用户键板的通信连接。 

       每个用户键板均采用Philips-P87LPC764单片机控制,每块链板提供64个用户按键及128个用户键灯。P87LPC764是51LPC系列OTP单片机,其最大特点是改进型80C51系列,增加了WDT看门狗、I2C总线、三个模拟量比较器、上电复位检测,保证I/O口驱动电流达到20mA,运行速度为标准80C51的2倍,而且温度范围达到了工业级标准(-40℃~+85℃)。该芯片的I2C总线系统包括一个可简化软件驱动的I2C总线硬件。除了必要总线仲裁、错误检测、时钟扩展和总线超时定时器外,包括一个一位接口,这个接口通过循环查询或中断同步软件。 

       采用该设计的优点在于系统扩充性强,软件功能分担:由P87LPC764进行按键扫描和LED显示处理,大大减轻了主CPU-80C652的负担;由于P87LPC764性价比优越,比专用键盘电路更便宜,功能上也可灵活改变;键板可按需配置,只需简单的4线连接(SDA、SCL、+5V、GND)。调度台I2C总线连接示意图如图3所示。



2 I2C总线的数据传送方式 

       I2C总线器件之间通信串行数据线SDA和串行时钟线SCL传送数据,交换信息。每个器件(微控制器、LCD驱动器、存储器或键盘接口)都要设置一个独特的地址码以示驱别。根据通讯要求,器件可以工作于发送或接收方式,并允许有多个设备作为主站控制总线。总线上主和从、发送和接收的关系仅取决于每次数据传送的方向。 [page]

2.1 I2C总线传输数据格式 

       I2C总线的数据传送格式如图4所示。 

       S:start信号; 

       SLA:从机地址,也可以是通用地址; 

       R/W:读写控制位; 

       A:ACK响应; 

       DATA0~DATA7:每组传送8个数据字节; 

       S/P:下一个start或stop信号。 



       首先发送开始(start)信号,然后传送第一个字节:高7位是从机地址,低位表示读/写(R/W)状态,“0”表示写操作,“1”表示读操作。由于CPU之间采用无主通信或主从通信,一般只采用主发送和从接收模式,因此该位均值0表示数据发送;总线上的每个物理器件判断接收的地址与本机地址是否一致,地址一致,返回ACK,进行正常的数据传送。每个地址或数据后必须跟应答信号,当一个正常的应答信号有效时,SCL时钟为高电平,接收模块数据线SDA置低,同时按字节传送数据,传送结束由发送端发送stop信号或下一个start信号。 

       从机地址由各CPU按统一原则进行分析,主机各子系统可按各自的系统号从01H开始编排,00H作为通用呼叫地址;调度台80C652地址取01H,P87LPC764地址范围为40H~7FH,其它地址待扩充。 

       处理器之间采用固定8字节数据通信:DATA0、DATA1、DATA2、DATA3、DATA4、DATA5、DATA6、DATA7。

DATA0:目的地址,发送时可根据该地址确定从机地址;

DATA1:源地址;

DATA2:消息编码,可按需分配;

DATA3~DATA7:该消息应携带的其它必要信息。 

       以调度台为例,80C652向P86LPC764发送LED灯显示数据:目址、源址、55H(消息编码),键地址、左灯状态、右灯状态、#0EEH、#0EEH。

目址:即P87LPC764地址、40H~7FH;

源址:即80C652地址,01H;

键地址:每片P86LPC764所处理的按键地址,00H~3FH(64键);

灯状态:即让对应灯处于灭、常亮、闪烁等状态值。 

       图5

3 通信软件设计 

       主机和调度台80C652单片机上电时首先装载本机从地址和通用地址,设置I2C总线为高中断。由中断处理程序自动接收数据存入数据缓冲区并查询是否有数据发送,若有,进行相应发送信息,按要求进行相关处理,并查询是否有数据需发送,若有填入发送缓冲区,设置待发送S1CON标志,由中断处理程序发送。流程如图5所示。 

       键板I2C总线软件处理过程为:键板P87LPC764初始化,装载本机从地址,设置定时器I为高中断,PIC总线普通中断。主程序中进行I2CU总线数据发送检查,进行重发处理;接收数据处理;待发送数据处理及设置主站待发。定时器I负责监视I2C总线,计时溢出复位I2C接口硬件。I2C中断处理程序完成数据的接收和发送工作。流程如图6所示。 

       本设计采用I2C总线实现调度指挥系统中多模块间的双向通信,电路设计简单,易于模块化及扩展。

关键字:I2C总线  多机通信  软硬件设计 引用地址:I2C总线在多机通信中的应用

上一篇:基于USB的CAN总线适配器设计
下一篇:模拟I2C总线多主通信研究与软件设计

推荐阅读最新更新时间:2024-03-16 13:40

单片通信原理简述
简述单片机多机通信的原理。 答:若置SM2=1,则允许多机通信。多机通信协议规定,第9位数据(D8)为1,说明本帧数据为地址帧;若第9位为0,则本帧为数据帧。当一片89C52(主机)与多片89C5l(从机)通信时,所有从机的SM2位都置l。主机首先发送的一帧数据为地址,即某从机机号,其中第9位为1,所有的从机接收到数据后,将其中第9位装入RB8中。各个从机根据收到的第9位数据(RB8中)的值来决定从机可否再接收主机的信息。若(RB8)=0,说明是数据帧,则使接收中断标志位RI=0,信息丢失;若(RB8)=1,说明是地址帧,数据装入SBUF并置RI=1,中断所有从机,被寻址的目标从机清除SM2,以接收主机发来的一帧数据。其他从机仍
[单片机]
I2C之知(五)--I2C总线的10bit地址以及通用广播地址
其实,10bit地址我没用过,通用广播地址更没用过.通用广播地址应该是在多个mcu之间用i2c进行通信时使用的.虽说没用到,但还是做了翻译,说不定以后有机会用到: 10bit地址 10bit的寻址扩展可能寻址的数目.有7bit地址和10bit地址的设备可以连接到相同的I2C总线上,而且7bit寻址和10bit寻址都可以用在所有的总线速度模式下.不过,10bit寻址用的不多. 10bit的从机地址由开始条件(S)或重复开始条件(Sr)后的两个字节组成.第一个字节的前7位是1111 0XX,XX是10bit地址的最高有效位的前两位.第一个字节的第8bit是读写位,决定传输方向. 尽管1111 XXX有8种可能的组合,然后只有1111 0
[嵌入式]
I2C总线控制的CD2518彩电
  I2C总线控制是由一连串二进制编码脉冲信号,通过程序指令方式实现微处理器对单元功能集成电路的控制和信息交换,以软件代替硬件,提高控制系统效率。从而实现电视信号的控制,以CPU为核心,存储器为记忆,经过TV信号处理,来完成彩色解码、图像中放、视放、伴音、遥控,使电路简化,功能增加,提高产品的可靠性。   利用I2C总线设计应用程序,简化了硬件设计,使用户“傻瓜化”,在生产中,可以省掉一大半可调电位器,大大地简化了调整工艺,产品一致性好,提高了产品的可靠性,并且具有故障自检功能,能够缩短检修时间,提高检修率。   一、CD2518彩电的I2C控制系统   彩电的I2C总线的控制系统是由硬件电路和软件数据系统组成的,硬件电路是
[嵌入式]
基于LTC4310设计的绝缘双向I2C总线通信技术
LTC4310是绝缘的双向I2C 总线 通信器件,每个器件可把I2C逻辑状态编码成信号,通过绝缘层传输到另一个器件.接收器件解码,并 驱动 I2C 总线 到适当的确逻辑状态.主要用在绝缘的I2C, SMBus和PMBus 接口 ,绝缘 电源 ,以太网供电和正到负 电源 通信.本文介绍了LTC4310主要特性,典型应用以及多种应用 电路 框图. The LTC®4310 provides bidirectional I2C communications between two I2C buses whose grounds are isolated from one another. Each LTC4310 encodes I2
[模拟电子]
C51IO口模拟I2C总线驱动AT24C16 (I2C协议部分)
/* 名称:C51IO口模拟I2C总线驱动EEPROM(AT24C16) 说明:I2C总线是由Philips公司开发的一种简单、半双工同步串行总线。它只需要两根线(SCL、SDA)即可在连接于总线上的器件之间传送信息。其中SCL时钟总线用于同步数据,SDA数据总线用来发送数据(或地址)。 和SPI总线不同的是,I2C总线通过在SDL上发送存储器的地址用来选中总线上对应的设备。关于具体的通信协议这里就不说了,无非是通过IO口模拟产生所需信号 (如通信开始信号是SCL为高时,SDA产生一个下降沿信号。) 驱动程序中有 具体的说明。 */ //定义I2C相关变量 sbit SCL=P2^1; //I2C 时钟
[单片机]
基于ADV202的嵌入式视频压缩系统软硬件设计
国际标准化组织ISO和国际电信联盟ITU于2000年12月正式推出了JPEG2000标准,该标准采用以离散小渡变换为主的多解析编码方法,具有许多优良的特性,然而一直未获得广泛的应用。AD公司于2004年推出了能实时压缩和解压缩高质量运动图像和静止数字图像的JPEG2000编解码芯片ADV202。本文基于ADV202设计一个完整的嵌入式视频压缩系统,其中包括硬件电路设计和软件流程设计,该系统具有USB接口,支持热插拔,无需主机控制。 1 ADV202芯片介绍 ADV202是美国AD公司新近推出的一款用于视频和高带宽静止图像压缩的单片IPEG2000(ISO/IECl5444-1图像压缩标准)编解码芯片,是当今市场上惟一具有实时压缩
[工业控制]
单片模拟I2C总线读写EEPROM(24CXX)程序二
昨天实现了字节的读写操作(前一篇程序一),今天实现了页写和连续读的操作。 电路不变,下面是仿真电路,只不过P2口的数码管由观测程序执行到哪一步改为查看接收缓冲区的数据。 程序如下: #include reg51.h #define unit unsigned int #define uchar unsigned char uchar num=4; uchar idata sendbuf ={0x96,0x84,0xd5,0x63}; uchar idata recivebuf ; sbit scl=P0^0; sbit sda=P0^1; sbit led0=P2^0; sbit led1=P2^1; sbi
[单片机]
单片<font color='red'>机</font>模拟<font color='red'>I2C总线</font>读写EEPROM(24CXX)程序二
I2C总线通信接口的CPLD实现
    摘要: 介绍采用ALTERA公司的可编程器件,实现I2C总线的通信接口的基本原理;给出部分VHDL语言描述。该通信接口号专用的接口芯片相比,具有使用灵活,系统配置方便的特点。     关键词: I2C总线 CPLD VHDL I2C总线是PHILIPS公司开发的一种简单、双向二线制同步串行总线。它只需要两根线(串行时钟线和串行数据线)即可在连接于总线上的器件之间传送信息。该总线是具备多主机系统所需要的包括裁决和高低速设备同步等功能的高性能串行总线,应用极为广泛。 目前,虽然市场上有专用I2C总线接口芯片,但是地址可选范围小,性能指标固定,功能单一,而且使用不方便。针对I2C总线的电气特性及其通信协
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved