GPIB芯片TNT4882在多路程控电源中的应用
摘要:介绍一种GPIB总线接口芯片TNT4882及其在多路程控电源中的应用,包括TNT4882的引脚排列、内部结构、功能和通信方式、与微处理器的接口及与上位机的通信;同时给出在实际应用中的总体框图和各主要功能模块的软件流程及程控电源与上位机通信程序。
关键词: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:写信号;
javascript:window.open(this.src);" style="cursor:pointer;"/>
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选中为听者;
javascript:window.open(this.src);" style="cursor:pointer;"/>
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连接。javascript:window.open(this.src);" style="cursor:pointer;"/>
在本多路程控电源系统中,有两个晶振:一个用于产生微控制器工作时钟,一个用于产生TNT4882的工作时钟。图4是TNT4882与微控制器的接口原理图。
用MCS51汇编语言编写的GPIB收、发数据子程序见网络补充版。
3.2 上位机编程
采用面向仪器与测控过程的交互式C/C++开发平台——LabWindows/CVI(C for Virtual Instrumentation)语言。它是一种将C语言平台与测控专业工具库有机结合起来的开发平台。它不仅具有集成开发平台、交互式编程方法、功能面板和库函数,而且还有简单明了的友好图形设计界面、完善的开发系统兼容性以及灵活的程序调试手段,为熟悉C/C++语言的开发人员建立数据采集系统、测量系统、检测和过程监控系统提供了极大的便利。图5是上位机控制程序流程图。
多路程控电源与上位机通信的一个应用程序见网络补充版。
结语
新一代具备GPIB接口总线的多路程控电源,符合IEEE-488.2数据接口标准。只要用标准的GPIB接口电缆与系统连接,就可以灵活地应用到任何系统中去,不受型号等因素的限制,并且具有很好的可扩展性,显示了它特有的优越性。