介绍了 I2C 总线的结构、工作原理、数据传输方式,讨论了基于 I2C 总线的多机通信软硬件设计,实现了程控交换多机通信调度指挥系统。I2C(Inter Integrated Circuit)总线是 Philips 公司开发的一种双向两线主机总线,它能方便地实现芯片间的数据传输与控制。通过两线缓冲接口和内部控制与状态寄存器,可方便地完成多机间的非主从通信或主从通信。基于 I2C 总线的多机通信电路结构简单、程序编写方便,易于实现系统软硬件的模块化和标准化。
本调度指挥系统由主机和调度操作台两部分组成,工作原理如图 1 所示,两者间通过 RS422 总线实现较长距离的数据传送。主机和操行台内部均采用分散多处理器控制,处理器间采用 I2C 总线进行数据通信。
图 1
主机内部采用分散控制方式,整个交换系统被分割成多个用户子系统及 1 个通信子系统,每个子系统由一个 CPU 处理单元负责 128 个用户的呼叫控制和管理,多个子系统之间通信 I2C 组成一个无主通信总线进行信息交互(如呼叫处理信息、维护信息等),构成一个完整的交换系统。 调度操作台由操作台控制 CPU、显示屏及多个用户键板构成,支持 128~1024 个操作按键和 256~2048 个 LED 指示灯,每个操作按键可缩位一组电话号码对应主机内的一个电话用户,双灯组合指示该电话用户状态,并支持 LCD 中文显示。操作台内部主控 CPU 与用户键板控制 CPU 之间通过 I2CU 叫线组成主从通信总线进行信息交互(按键信息、LED 显示信息)。
1.2 主机 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 所示。
图 2
1.3 调度台 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 所示。
图 3
2.1 I2C 总线的数据传送方式
I2C 总线器件之间通信串行数据线 SDA 和串行时钟线 SCL 传送数据,交换信息。每个器件(微控制器、LCD 驱动器、存储器或键盘接口)都要设置一个独特的地址码以示驱别。根据通讯要求,器件可以工作于发送或接收方式,并允许有多个设备作为主站控制总线。总线上主和从、发送和接收的关系仅取决于每次数据传送的方向。
2.2 I2C 总线传输数据格式
I2C 总线的数据传送格式如图 4 所示。 S:start 信号; SLA:从机地址,也可以是通用地址; R/W:读写控制位; A:ACK 响应; DATA0~DATA7:每组传送 8 个数据字节; S/P:下一个 start 或 stop 信号。
图 4
首先发送开始(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 键); 灯状态:即让对应灯处于灭、常亮、闪烁等状态值。
3 通信软件设计
主机和调度台 80C652 单片机上电时首先装载本机从地址和通用地址,设置 I2C 总线为高中断。由中断处理程序自动接收数据存入数据缓冲区并查询是否有数据发送,若有,进行相应发送信息,按要求进行相关处理,并查询是否有数据需发送,若有填入发送缓冲区,设置待发送 S1CON 标志,由中断处理程序发送。键板 I2C 总线软件处理过程为:键板 P87LPC764 初始化,装载本机从地址,设置定时器 I 为高中断,PIC 总线普通中断。主程序中进行 I2CU 总线数据发送检查,进行重发处理;接收数据处理;待发送数据处理及设置主站待发。定时器 I 负责监视 I2C 总线,计时溢出复位 I2C 接口硬件。I2C 中断处理程序完成数据的接收和发送工作。本设计采用 I2C 总线实现调度指挥系统中多模块间的双向通信,电路设计简单,易于模块化及扩展。
|