基于NI-VISA与LabVIEW的 USB接口应用设计

2015-07-21 10:48:52   来源:dzsc   

关键字: NI-VISA  LabVIEW  USB接口

引 言

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(Virtual Instrument Software Architecture,以下简称为"VISA")是美国国家仪器NI(National1nstrLlrnent)公司开发的一种用来与各种仪器总线进行通信的高级应用编程接口。VISA总线1/()软件是一个综合软件包,不受平台、总线和环境的限制,可用来对USB、GPIB、串口、VXI、PXI和以太网系统进行配置、编程和调试。VISA是虚拟仪器系统I/O接口软件。基于自底向上结构模型的VISA创造了一个统一形式的I/O控制函数集。一方面,对初学者或是简单任务的设计者来说, VISA提供了简单易用的控制函数集,在应用形式上相当简单;另一方面,对复杂系统的组建者来说,VISA提供了非常强大的仪器控制功能与资源管理。

2 LabVIEW及其调用VISA的条件

LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是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 Interactive Control(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相连。

[1] [2]
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

推荐阅读

编辑:什么鱼
本文引用地址: http://www.eeworld.com.cn/Test_and_measurement/2015/0721/article_12396.html
[发表评论]
[加入收藏]
[打印本页]
[关闭窗口]
[返回顶部]
[RSS订阅]
小广播
每日新闻
    Error

    An error occurred.

    Sorry, the page you are looking for is currently unavailable.
    Please try again later.

    If you are the system administrator of this resource then you should check the error log for details.

    Faithfully yours, nginx.

最热点击
本周热门资源推荐
EEWORLD独家
论坛精华
精选博文