APP下载

基于TNT4882的RS485-GPIB转换器设计

2012-03-27梁芳芳李南安

电脑与电信 2012年5期
关键词:主程序中断串口

梁芳芳 李南安

(广东工程职业技术学院,广东广州510520)

1.引言

越来越多的测量仪器提供GPIB(General Purpose Intefface Bus)总线接口,通过该总线可以方便快捷地连接带有GPIB接口的仪器及计算机,组成一个GPlB网络。同时在工业控制领域支持485网络的仪器大量存在,为使支持485网络的仪器快速接入到GPIB网络,本文设计了一种性价比突出的RS485一GPIB转换器,该转换器利用计算机最常用的RS485接口,控制带有485接口的仪器,在计算机与仪器之间建立数据传输的通道。

RS485-GPIB转换器的设计,旨在使带有485接口的测量仪器,接入到GPIB网络中,并利用计算机的键盘和显示器来操控仪器进行程控测量。本设计中仪器端接口为RS485接口,所设计转换器的核心是单片机,它一端连接仪器仪表的RS485串口,一端连接GPIB网络接口,单片机接收来自计算机GPIB网络的指令,并转发给带有RS485接口的仪器执行。仪器执行完成指令后将执行结果发送给仪器,仪器再将所收到的数据通过GPIB接口传递给计算机,在主控制程序中显示。

2.硬件设计

单片机是RS485-GPIB控制器的核心,本设计选用winbond公司的w77c032A单片机。由于w77c032A应用领域广泛,拥有丰富的片上资源和总线式I/O口,支持高级语言编程,内部集成了符合RS485数据规范的异步串行控制单元。因此,使用Tx和Rx串行接口线与外部串行传输数据,只需在单片机外部使用SP485芯片进行电平转换,便可直接连接仪器仪表的串行端口(COM)。控制器的硬件结构如图1所示,其中,GPIB接口控制电路是控制器硬件设计的重点。

需要指出的是:使用智能化的GPIB接口芯片,可以大大简化GPIB接口电路的设计。目前最常用的芯片有两种,一种以美国国家仪器公司生产的TNT4882芯片为代表,将所有接口功能集成在芯片上,完全由硬件完成接口功能,不需要其它辅助芯片,并且直接连接GPIB总线;另一种是以美国德州仪器公司生产的TMS9914芯片为代表,依靠软件编程来完成GPIB接口功能,由接口芯片SN75160和SN75161进行电平转换后连接GPIB总线。这二种芯片的比较如表l所示。考虑到硬件可靠性,结构简单等因素,本设计选用以美国国家仪器公司生产的TNT4882芯片作为GPIB总线接口芯片。TNT4882是美国NI公司的一款单芯片、高速听/讲功能兼备的GPIB(General purpose interface bus)接口专用芯片。它内部集成了Turbo488(高速传输电路)以及NAT4882(IEEE488.2兼容电路),并拥有诸多新的特性,能够兼容ANSIIEEEStandard 488.1和ANSI IEEE Standard 488.2规范,因而可以为GPIB系统提供一套完整的解决方案。为了达到更高的传输速率,TNT4882采用了单芯片FIFO缓存电路设计其内置的16个增强型IEEE 488.1兼容收发器,可以直接连接GPIB总线,以实现HS488传输模式(一种新的GPIB高速传输模式)。在兼容性方面,它与以往使用的μPD7210、TMS9914A中的寄存器设置完全兼容,用户可以将以前所用的代码直接移植到TNT4882上。同时,它所包含的Turbo488电路及其诸多新特性也可以在一定程度上减少软件的开销。另外,TNT4882还具有灵活的CPU接口,可以方便地连接各种16位或8位微处理器,并将CPU发出的消息GPIB设备和CPU及内存之间的通信。

图1 转换器硬件结构框图

在图l中,采用w77c032的PO口连接tnt4882的数据接口,作为数据总线和GPIB进行双向数据交换;Pl的I/O口作为地址总线,对tnt4882内部寄存器寻址。tnt4882的中断输出连接在w77c032的外部中断接口上,采用中断触发的方式管理GPIB接口通信;tnt4882的时钟信号采用独立时钟源。

表1 GPIB常用接口芯片

3.软件设计

计算机端软件采用PCI-GPIB接口驱动自带的软件。本设计中转换器软件采用C51语言编写,编译后烧录在W77C032A单片机中运行。软件框架采用主程序加中断调用方式.以提高功能模块的内聚性。软件功能分为RS485串口通信程序和GPIB接口通信程序两部分,分别和两个中断相关:(1)串行通信中断。该中断负责RS485串口数据传输。(2)接收TNT4882中断信号的外部中断。该中断处理来自GPIB接口数据通信的各种事件。主程序在完成全部初始化后进入死循环状态,等待这两个中断的发生。其中,RS485串口数据发送在主程序中执行,而串口数据接收由串口中断处理程序完成。串口通信程序较为简单,这里主要给出GPIB通信程序结构。

TNT4882芯片开始工作之前需要对其进行初始化,这部分代码作为主程序中初始化程序的一部分运行,包括以下内容:(l)复位TNT4882中的Turbo488电路;(2)将TNT4882设置成Turbo+7210模式;(3)将TNT4882设置成单芯片模式;(4)使LocalPoer一On信号有效;(5)配置TNT4882,为GPIB操作作准备;(6)设置TNT4882的GPIB地址;(7)设置初始连续轮询响应;(8)设置初始并行轮询响应;(9)清除或设定中断;(10)设置GPIB握手参数;(11)清除localpower-on信号,开始GPIB操作。初始化流程如图2所示。

图2 TNT4882芯片初始化

GPIB控制部分的代码以中断方式运行,当TNT4882触发W 77C032A芯片的外部中断时,单片机中止正常工作,将现场数据压入堆栈保护,并调用外部中断处理函数,响应TNT4882芯片的中断申请,其中断处理程序流程如图3所示。引起TNT4882向单片机发出中断信号的事件主要有四种:发送数据事件、接收数据事件、接收GET命令事件和接收DCAS命令事件。中断频繁时会影响主程序运行效率,但考虑到所设计的转换器功能单一,主程序基本处于空转状态,四种事件的处理都在中断程序中完成,因此,对主程序运行影响不大。GPIB接收数据和发送数据流程如图4和图5所示。

图4 GPIB接受数据流程

图5 GPIB发送数据流程

每次GPIB接口数据接收中,TNT4882接收到第一个字节数据后,即置位寄存器ISR0中的BI位。触发单片机外部中断,单片机进入外部中断处理程序后,读取ISR0寄存器,判断TNT4882触发中断的原因是接收数据事件后,调用接收数据子程序的执行,开始接收来自GPIB仪器的数据。

在主程序中,TNT4882发送完第一个字节数据后,即置位寄存器ISR0中的BO位,触发单片机外部中断。单片机进入外部中断处理程序后,根据BO位判断事件类型为发送数据事件,则调用GPIB数据发送程序,将缓冲区中剩余的数据依次发送到GPIB总线上。

4.运行情况及结果

本文设计的RS485-GPIB转换器已成功用于计算机主控某环境设备公司的高温箱的GPIB总线连接中。图6是计算机控制设备的部分截图,使得该公司设备通过该转换器成功接入到GPIB网络中。

图6 计算机控制设备界面

[1] 黄崧,储飞黄.GPIB接口专用芯片TNT4882[J].国外电子元器件,2003,8:42-44.

[2] 黄奋,储飞黄,杨景.基于TNT4882GPIB接口设计[J].电子测量技术,2002,2:1-2.

[3] National Instruments CorPoration,TNT4882TMProgrammer Reference Manual.1995.

[4] 毕文辉,徐华,趣文淑.GPIB技术[J].计量与测试技术,2000,1:29-30.

[5] 黎源,李万昌.基于IEEE488.2标准的示波器控制系统开发[J].电子测量与仪器学报(2004年增刊):320-324.

猜你喜欢

主程序中断串口
自动升级程序在船舶监测系统中的应用
浅谈AB PLC串口跟RFID传感器的通讯应用
浅谈数控铣削技术代码程序的嵌套方式研究
电控冰箱软件模块化设计
基于FPGA的中断控制器设计*
跟踪导练(二)(5)
千里移防,卫勤保障不中断
时光倒流 换回PotPlayer老图标
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索