打印

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

[复制链接]
1598|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
米其林r|  楼主 | 2011-10-30 13:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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驱动器、存储器或键盘接口)都要设置一个独特的地址码以示驱别。根据通讯要求,器件可以工作于发送或接收方式,并允许有多个设备作为主站控制总线。总线上主和从、发送和接收的关系仅取决于每次数据传送的方向。
    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中断处理程序完成数据的接收和发送工作

相关帖子

沙发
相见欢喜| | 2011-10-30 13:22 | 只看该作者
I2C用处还是蛮多的

使用特权

评论回复
板凳
金鱼木鱼| | 2011-10-30 17:17 | 只看该作者
不懂的啊!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

340

主题

1587

帖子

3

粉丝