I2C总线在多机通信中的应用
2008-09-23
作者:唐红文, 陈少平
摘 要: 介绍了I2C总线的结构、工作原理、数据传输方式,讨论了基于I2C总线的多机通信" title="多机通信">多机通信软硬件设计" title="软硬件设计">软硬件设计,实现了程控交换多机通信调度指挥系统。
关键词: I2C总线 多机通信 软硬件设计
I2C(Inter Integrated Circuit)总线是Philips公司开发的一种双向两线多主机总线,它能方便地实现芯片间的数据传输与控制。通过两线缓冲接口和内部控制与状态寄存器,可方便地完成多机间的非主从通信或主从通信。基于I2C总线的多机通信电路结构简单、程序编写方便,易于实现系统软硬件的模块化和标准化。
本文给出了基于I2C总线的多机通信调度指挥系统方案,讨论了系统的软硬件设计。
1 系统硬件设计
本调度指挥系统由主机和调度操作台两部分组成,工作原理如图1所示,两者间通过RS422总线实现较长距离的数据传送" title="数据传送">数据传送。主机和操作台内部均采用分散多处理器控制,处理器间采用I2C总线进行数据通信。
主机内部采用分散控制方式,整个交换系统被分割成多个用户子系统及1个通信子系统,每个子系统由一个CPU处理单元负责128个用户的呼叫控制和管理,多个子系统之间通过I2C组成一个无主通信总线" title="通信总线">通信总线进行信息交互(如呼叫处理信息、维护信息等),构成一个完整的交换系统。
调度操作台由操作台控制CPU、显示屏及多个用户键板构成,支持128~1024个操作按键和256~2048个LED指示灯,每个操作按键可缩位一组电话号码对应主机内的一个电话用户,双灯组合指示该电话用户状态,并支持LCD中文显示。操作台内部主控CPU与用户键板控制CPU之间通过I2C总线组成主从通信总线进行信息交互(按键信息、LED显示信息)。
1.1 主机I2C总线构成
子系统的CPU处理单元由Philips-80C652单片机配合外围电路(如EPROM、RAM、EEPROM、译码和I/O驱动等)构成,80C652具有一个支持双向数据传送的I2C总线串行接口,I2C总线逻辑根据路径自动地进行数据传送。CPU对I2C总线的访问通过以下四个特殊功能寄存器完成:
S1CON(D8H) SIO1控制寄存器
S1STA(D9H) SIO1状态寄存器
S1DAT(DAH) SIO1数据寄存器
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。单片机的SIO0通过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驱动器、存储器或键盘接口)都要设置一个独特的地址码以示区别。根据通讯需要,器件可以工作于发送或接收方式,并允许有多个设备作为主站控制总线。总线上主和从、发送和接收的关系仅取决于每次数据传送的方向。
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向P87LPC764发送LED灯显示数据:目址、源址、55H(消息编码),键地址、左灯状态、右灯状态、#0EEH、#0EEH。
目址:即P87LPC764地址、40H~7FH;
源址:即80C652地址,01H;
键地址:每片P87LPC764所处理的按键地址,00H~3FH(64键);
灯状态:即让对应灯处于灭、常亮、闪烁等状态值。
3 通信软件设计
主机和调度台80C652单片机上电时首先装载本机从地址和通用地址,设置I2C总线为高中断。由中断处理程序" title="中断处理程序">中断处理程序自动接收数据存入数据缓冲区并查询是否有数据发送,若有,进行相应发送处理;系统设置50ms定时中断处理,集中处理接收到的信息,按要求进行相关处理,并查询是否有数据需发送,若有填入发送缓冲区,设置待发送S1CON标志,由中断处理程序发送。流程如图5所示。
键板I2C总线软件处理过程为:键板P87LPC764初始化,装载本机从地址,设置定时器I为高中断,I2C总线普通中断。主程序中进行I2C总线数据发送检查,进行重发处理;接收数据处理;待发送数据处理及设置主站待发。定时器I负责监视I2C总线,计时溢出复位I2C接口硬件。I2C中断处理程序完成数据的接收和发送工作。流程如图6所示。
本设计采用I2C总线实现调度指挥系统中多模块间的双向通信,电路设计简单,易于模块化及扩展。
参考文献
1 陈秀玲, 周 欣,陈黎平.I2C总线数据传输系统的设计及其应用.微型电脑应用, 2003;19(5):42~45
2 蒋伟宏,习 勇,魏急波.基于MPC850嵌入式通信平台的I2C接口设计. 通信技术与设备,2002;28(10):20~22
3 何立民. I2C总线应用系统设计.北京:北京航空航天大学出版社,1995