关键词:GPIB总线 TNT4882 微处理器 程控电源
GPIB(General Purpose Interface Bus)接口总线最早由美国HP公司倡导实施,命名为HPIB。由于它良好的接口特性,很快在国际范围内得到广泛的应用,并被美国电气与电子工程学会命名为IEEE488,在英国和日本等国家则称为GPIB。虽然有多种叫法,但实际上除了机械标准有所不同外,其实质完全相同。它犹如一座桥梁,将配置GPIB总线接口的仪器与计算机紧密地结合起来。用它组成的系统方便、灵活、功能强及适应性好,可方便地应用到科研、工程、医药工程、医药及测试等领域。
美国NI公司生产的GPIB专用芯片TNT4882具有功能强、体积小、传输速度快及易与微处理器接口等特点,备受用户的青睐。笔者运用TNT4882成功地开发了具备GPIB总线接口的多路程控电源。
图1 TNT4882引脚图
1 TNT4882芯片简介
1.1 TNT4882引脚说明
TNT4882是NT公司开发的100脚PQFQ封装的GPIB专用集成芯片,是IEEE488.2标准和GPIB收发功能的集成,且具有HS488增强功能。它的引脚如图1所示。
VDD:电源,接+5V;
GND:电源地;
XTAL0、XTAL1:外接时钟振荡器引脚;
DATA15~DATA8(ABUS)、DATA7~DATA0(BBUS):数据线,是TNT4882与外部CPU进行数据输入/输出的双向总线,分为ABUS和BBUS,便于进行8位或16位数据操作;
ABUSN:ABUS使能;
BBUSN:BBUS使能;
ABUS_OEN:当前正在通过ABUS读数据;
BBUS_OEN:当前正在通过BBUS读数据;
CSN:片选;
ADDR4~0:内部寄存器地址线;
RDN:读信号;
WRN:写信号;
CPUACC:指示TNT4882可以进行总线操作延时;
RDY1:指示TNT4882完成当前总线操作;
DRQ:DMA申请信号;
DACKN:DMA申请应答信号;
BURST_RDN:连续读信号;
FIFO_RDY:当前TNT4882内部FIFO至少已有8个有效数据;
INTR:中断申请信号;
RAGED:地址映射选择,有效则映射内部寄存器到不同的地址;
MODE:TNT4882工作模式选择;
SWAPN:模式切换;
RESETN:复位;
TADCS:指示当前TNT4882选中为讲者;
LADCS:指示当前TNT4882选中为听者;
TRIG:指示当前TNT4882接收到外部触发信号;
DCAS:指示当前TNT4882接收到设备清零信号;
REM:指示当前TNT4882进入遥控状态;
GPIB数据线8根:DIO8N~DIO1N,用于GPIB发布地址和命令,传递数据;
GPIB管理总线5根:ATNN(ATTENTION,注意)线、IFCN(INTERFACE-CLEAR,接口清除)线、RENN(REMOTE ENABLE,程控使能)线、SRQN(SERVICE REQUEST,服务请求)线、NDACN(NOT DATA ACCEPTED,未接收到数据)线;
GPIB挂钩总线3根:DAVN(DATA VALID,数据有效)线、NRFDN(NOT READY FOR DATA,未准备好接收)线、NDACN(NOT DATA ACCEPTED,未接收到数据)线。TNT4882利用以上3条总线进行握手信息和数据传送,以确保信息和数据的发布与传送准确无误。
1.2 TNT4882内部结构
TNT4882有三种模式:单片模式、Turbo+7210模式及Turbo+9914模式,而且Turbo+7210模式和Turbo+9914模式可以转换到单片模式。单片模式是最简单、最快速的结构。在设计中,选用单片模式。单片模式内部组成模块如图2所示。
单片模式内部结构由1个片内ISA逻辑接口,1个片内读/写控制器,1个片内先进先出的缓冲区,1个定时/计数器,1个片内中断控制器,1个可配置状态寄存器,1个IEEE488总线监视器,1个IEEE488总线功能接口,1个HS488电路功能接口,1个IEEE488收发器及1个IEEE488总线组成。
2 TNT4882功能控制和数据传送/接收方式
2.1 TNT4882功能控制
TNT4882功能控制是通过写命令字的方式实现的。这些命令字包括TNT4882复位、初始化、寄存器的读/写及中断请求等命令。TNT4882内部有40多个用户可访问的8位寄存器。对这些寄存器的访问是通过填在寄存器的读/写命令的地址进行的。这些寄存器包括基本配置、FIFO、中断控制、定时/计数器、状态寄存器、挂钩和管理寄存器等。
2.2 TNT4882数据传送/接收方式
当传送数据开始时,TNT4882完成初始化。TNT4882初始化结束后,上位机和TNT4882进行数据传送。上位机传送计数器用来寄存上位机和FIFO之间所要传送和接收的字节数。由NTN4882计数GPIB接口传送和接收的字节。在上位机和FIFO间每传送一个数据,上位机接口便将上位机传送计数器的传送计数值减一,并查询计数值是否等于零。如果计数值等于零,上位机开始检测结束条件,判断是否结束。如果结束,数据传送完成;否则,等待。
图4 TNT4882与微控制器接口原理图
3 TNT4882在多路程控电源中的应用及软件流程
多路程控电源是为航空航天电子设备及系统的自动测试设备(ATE)的技术需要而设计和研制的,是目前在高性能的航空航天自测系统中不可缺少的配套设备之一。该程控电源的输出不但可满足目前国内、国外不同供电体系的技术需要,而且还配套输出多路的辅助电源,以满足用户的特殊需要。考虑到多路程控电源的通用性,且适于国际接口标准,在研制中加一GPIB总线接口,以使我们的多路程控电源能用在不同的控制系统中。多路程控电源硬件图如图3所示。
多路程控电源由数据采集、微控制器、电源模块、GPIB总线接口及上位机组成。多路程控电源输出的模拟量经变换后送到A/D转换器进行转换,转换成数字量送到微控制器处理,同时微控制器还采集开关信号。微控制器对采集的信号处理后,通过GPIB总线送至上位机,实现上位机对电源状态的实时监控;同时,上位机可以通过GPIB总线发送控制命令到微控制器,实现上位机对多路程控电源的程控。
3.1 TNT4882与微控制器接口及编程
TNT4882的D0~D7与89C51的P0口直接相连,ADDR0~ADDR5与微控制器的地址A0~A5相连,CS作TNT4882的片选信号,与在线可编程逻辑器件相接。WR、RD与微控制器的读、与直接相连,对读、写寄存器进行读、写操作。由于TNT4882的中断为高电平,与AT89C51的中断申请极性相反,故需要通过反向后,才可与微控制器的中断INT连接。
在本多路程控电源系统中,有两个晶振:一个用于产生微控制器工作时钟,一个用于产生TNT4882的工作时钟。图4是TNT4882与微控制器的接口原理图。
用MCS51汇编语言编写的GPIB收、发数据子程序见网络补充版。
3.2 上位机编程
采用面向仪器与测控过程的交互式C/C++开发平台——LabWindows/CVI(C for Virtual Instrumentation)语言。它是一种将C语言平台与测控专业工具库有机结合起来的开发平台。它不仅具有集成开发平台、交互式编程方法、功能面板和库函数,而且还有简单明了的友好图形设计界面、完善的开发系统兼容性以及灵活的程序调试手段,为熟悉C/C++语言的开发人员建立数据采集系统、测量系统、检测和过程监控系统提供了极大的便利。图5是上位机控制程序流程图。
多路程控电源与上位机通信的一个应用程序见网络补充版。
结语
新一代具备GPIB接口总线的多路程控电源,符合IEEE-488.2数据接口标准。只要用标准的GPIB接口电缆与系统连接,就可以灵活地应用到任何系统中去,不受型号等因素的限制,并且具有很好的可扩展性,显示了它特有的优越性。