引 言
USB(Universal Serial Bus)接口是近年来运用在PC范畴的新式接口技能。它根据单一的总线接口技能来满意多种运用范畴的需求;它的即插即用、支撑热插拔、易于扩展等特性极大当地便了用户的运用,已逐步成为现代数据传输的发展趋势。
传统的开发USB运用体系的进程是,先用windowsDDK(设备驱动程序开发包)或第三方开发东西(如DriverSt LJdic))开发LJSB驱动程序,然后用Visual C++编写DLL(动态衔接库),最终再调有DLL来开发运用程序。明显,这对windows编程不熟悉的人来说有必定的难度,况且USB驱动程序的开发难度很大。本文介绍一种简略、快速开发USB接口运用体系的办法。它直接在LabVIEW环境下经过NI-VISA开发能驱动用户USB体系的运用程序,彻底避开了曾经开发USB驱动程序的杂乱性,大大缩短了开发周期。
1 N1-VISA简介
NI-VISA(VirtualInstrumentSoftwareArchitecture,以下简称为”VISA”)是美国国家仪器NI(National1nstrLlrnent)公司开发的一种用来与各种仪器总线进行通讯的高档运用编程接口。VISA总线1/()软件是一个归纳软件包,不受渠道、总线和环境的约束,可用来对USB、GPIB、串口、VXI、PXI和以太网体系进行装备、编程和调试。VISA是虚拟仪器体系I/O接口软件。根据自底向上结构模型的VISA发明了一个一致方法的I/O操控函数集。一方面,对初学者或是简略使命的规划者来说, VISA供给了简略易用的操控函数集,在运用方法上适当简略;另一方面,对杂乱体系的组成者来说,VISA供给了十分强壮的仪器操控功能与资源管理。
2 LabVIEW及其调用VISA的条件
LabVIEW(Laboratory Virtual InstrumentEngineeringWorkbench)是NI公司开发的一种根据图形程序的编程言语。用户运用创立和调用子程序的办法编写程序,使创立的程序模块化,并且程序编制简略、直观。一个LabVIEW程序分为3部分:前面板、框图程序和图标/接线端口。前面板用于模仿实在仪器的前面板;框图程序是运用图形言语对前面板上的控件目标(分为操控量和指示量两种)进行操控;图标/接线端口用于把LabVlEW程序界说成一个子程序,然后完成模块化编程。
当进行USB通讯时,VISA供给了两类函数供LabVIEW调用,USB INSTR设备与USB RAW设备。USB INSTR设备是契合USBTMC协议的USB设备,能够经过运用USB INSTR类函数操控,通讯时无需装备NI-VISA;而USB RAW设备是指除了清晰契合USBTMC标准的仪器之外的任何USB设备,通讯时要装备NI-VISA。
(1)装备NI-VISA的进程
①运用Driver Development wizard(驱动程序开发导游)创立INF文档;
②装置INF文档,并装置运用INF文档的USB设备
③运用NI-VISA InteractiveControl(NI-VISA互动操控东西)对设备进行测验,以证明USB设备已正确装置,并取得USB设备的各特点值。
具体进程可参阅NI官方网站上免费供给的文档《运用NI-VISA操控USB设备》。
(2)与Nl-VISA相配合的LabVIEW模板中VI子节点
ViOpen,翻开并指定VISA resource name的设备的衔接。
ViProperty,VISA设备的特点子节点,能够设置端点或传输方法。
ViWrite,向VISA resource name指定的设备写入数据。
ViRead,从VISA resource name指定的设备读出数据。
ViClose,完毕设备读写并封闭与指定设备的衔接。
(3)USB RAW设备读写的操作次第
USB RAW设备的读写次第如图1所示。
下面以一个USB接口的温度收集体系为例,阐明根据NI-VISA驱动的USB接口运用体系的规划与完成。
3体系硬件结构
体系以Philips公司的增强型80C51单片机为中心,如图2所示。这是一个多点温度收集体系,中心器材是含有8 KB非易失Flash程序存储器的P89C52,与标准80C51彻底兼容。USB通讯操控芯片选用Philips公司的PDIUSBDl2芯片(简称”D12″)。它是一款较新式的专用 USB通讯操控芯片,契合通用串行总线USBl.1版标准,内部集成有串行接口引擎SIE、320字节FIFO存储器、收发器和电压调节器。前端温度传感器选用Dallas公司出产的DSl8B20。它是一线式数字温度传感器,直接以数字量输出给微处理器,可节约很多的引线和信号调度电路。DSl8B20内部有一个光刻ROM。这个ROM中存有64位序列号。它能够看作是该DS18B20的地址序列码,所以多路温度传感器能够挂在1条总线上,一起占用单片机的1条I/O线即可完成接口。在提高单片机I/O线驱动才能的前提下,理论上能够恣意扩大检测的温度点数。
D12与单片机的接口共有两种方法:多路地址/数据总线方法和单地址/数据总线方法。这儿挑选了单地址/数据总线方法,因而,D12的ALE接为低电平,而A0脚与P89C52X2的端口P3.3相连。该端口操控D12的指令和数据状况:A0=1,表明数据总线上是指令;A0=O,表明数据总线上是数据。D12的数据总线直接与P0口相连,D12的中止引脚INT_N与:P89C52X2的INTO相连。当D12的外部中止有一位为1时,INT_N输出低电平,触发P89C52X2的外部中止。由于体系未选用DMA,所以D12的DMACK_N引脚接高电平,EOT_N引脚经过电阻接到USB的+5V,以正确检测到USB衔接;INT_N引脚加一个上拉电阻。由于D12有片内上电复位电路,故引脚RESET_N直接与电源引脚VCC相连。温度传感器DSl8B20作业在外接电源作业方法,DQ引脚直接和P89C52X2的P1.O相连。