用Labview基于NI VISA控制USB接口.docx

上传人:b****6 文档编号:6646123 上传时间:2023-01-08 格式:DOCX 页数:22 大小:720.05KB
下载 相关 举报
用Labview基于NI VISA控制USB接口.docx_第1页
第1页 / 共22页
用Labview基于NI VISA控制USB接口.docx_第2页
第2页 / 共22页
用Labview基于NI VISA控制USB接口.docx_第3页
第3页 / 共22页
用Labview基于NI VISA控制USB接口.docx_第4页
第4页 / 共22页
用Labview基于NI VISA控制USB接口.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

用Labview基于NI VISA控制USB接口.docx

《用Labview基于NI VISA控制USB接口.docx》由会员分享,可在线阅读,更多相关《用Labview基于NI VISA控制USB接口.docx(22页珍藏版)》请在冰豆网上搜索。

用Labview基于NI VISA控制USB接口.docx

用Labview基于NIVISA控制USB接口

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

2008-01-15    嵌入式在线    收藏|打印

      通用串行总线(USB)作为一种灵活的高速总线接口技术,非常适合作为主机和外设之问的通信接口,但其结构复杂。

      本文以一个采集多点温度的实际系统为倒,阐述USB接口应用系统的总体设计思想及其层次结构,在实现方法上避开传统的Windows编程技术,另辟蹊径地给出使用NI-VISA来驱动USB接口以应用LabVIEW进行应用编程的方法。

       USB(UniversalSerialBus)接口是近年来应用在PC领域的新型接口技术。

它基于单一的总线接口技术来满足多种应用领域的需求;它的即插即用、支持热插拔、易于扩展等特性极大地方便了用户的使用,已逐渐成为现代数据传输的发展趋势。

   

       传统的开发USB应用系统的步骤是,先用WindowsDDK(设备驱动程序开发包)或第三方开发工具(如DriverStudio)开发USB驱动程序,然后用VisualC++编写DLL(动态连接库),最后再调有DLL来开发应用程序。

显然,这对Windows编程不熟悉的人来说有一定的难度,何况USB驱动程序的开发难度很大。

本文介绍一种简单、快速开发USB接口应用系统的方法。

它直接在LabVIEW环境下通过NI-VISA开发能驱动用户USB系统的应用程序,完全避开了以前开发USB驱动程序的复杂性,大大缩短了开发周期。

      1NI-VISA简介

   

      NI-VISA(VirtualInstrumentSoftwareArchitec-ture,以下简称为“VISA”)是美国国家仪器NI(NationalInstrument)公司开发的一种用来与各种仪器总线进行通信的高级应用编程接口。

VISA总线I/O软件是一个综合软件包,不受平台、总线和环境的限制,可用来对USB、GPIB、串口、VXI、PXI和以太网系统进行配置、编程和调试。

VISA是虚拟仪器系统I/O接口软件。

基于自底向上结构模型的VISA创造了一个统一形式的I/O控制函数集。

一方面,对初学者或是简单任务的设计者来说,VISA提供了简单易用的控制函数集,在应用形式上相当简单;另一方面,对复杂系统的组建者来说,VISA提供了非常强大的仪器控制功能与资源管理。

     2LabVIEW及其调用VISA的条件

   

       LabVIEW(LaboratoryVirtualInstrumentEngineeringWorkbench)是NI公司开发的一种基于图形程序的编程语言。

用户利用创建和调用子程序的方法编写程序,使创建的程序模块化,而且程序编制简单、直观。

一个LabVIEW程序分为3部分:

前面板、框图程序和图标/接线端口。

前面板用于模拟真实仪器的前面板;框图程序是利用图形语言对前面板上的控件对象(分为控制量和指示量两种)进行控制;图标/接线端口用于把LabVIEW程序定义成一一个子程序,从而实现模块化编程。

   

      当进行USB通信时,VISA提供了两类函数供Lab-VIEW调用,USBINSTR设备与USBRAW设备。

USBINSTR设备是符合USBTMC协议的USB设备,可以通过使用USBINSTR类函数控制,通信时无需配置NI-VISA;而USBRAW设备是指除了明确符合USBTMC规格的仪器之外的任何USB设备,通信时要配置NI-VISA。

      

(1)配置NI-VISA的步骤

   

        ①使用DriverDevelopineIntWizard(驱动程序开发向导)创建INF文档;

       ②安装INF文档,并安装使用INF文档的USB设备;

       ③使用NI-VISAInteractiveControl(NI-VISA互动控制工具)对设备进行测试,以证实USB设备已正确安装,并获得USB设备的各属性值。

详细过程可参考NI官方网站上免费提供的文档《使用NI-VISA控制USB设备》。

      

(2)与NI-VISA相配合的LabVIEW横板中VI子节点

   

      ViOpen,打开并指定VISAresourcename的设备的连接。

     ViProperty,VISA设备的属性子节点,可以设置端点或传输方式。

     ViWnte,向VISAresourcename指定的设备写入数据。

     ViRead,从VISAresourcename指定的设备读出数据。

     ViClose,结束设备读写并关闭与指定设备的连接。

      (3)USBRAW设备读写的操作次序

   

     USBRAW设备的读写次序如图l所示。

      下面以一个USB接口的温度采集系统为例,说明基于NI-VISA驱动的USB接口应用系统的设计与实现。

      3系统硬件结构

   

      系统以Philips公司的增强型80C51单片机为核心,如图2所示。

这是一个多点温度采集系统,核心器件是含有8KB非易失Flash程序存储器的P89C52,与标准80C51完全兼容。

USB通信控制芯片采用Philips公司的PDIUSBD12芯片(简称“D12”)。

它是一款较新型的专用USB通信控制芯片,符合通用串行总线USBl.1版规范,内部集成有串行接口引擎SIE、320字节FIFO存储器、收发器和电压调节器。

前端温度传感器采用Dallas公司生产的DSl8820。

它是一线式数字温度传感器,直接以数字量输出给微处理器,可节省大量的引线和信号调理电路。

DSl8820内部有一个光刻ROM。

这个ROM中存有64位序列号。

它可以看作足该DS18820的地址序列码,所以多路温度传感器可以挂在l条总线上,共同占用单片机的1条I/O线即可实现接口。

在提升单片机I/O线驱动能力的前提下,理论上可以任意扩充检测的温度点数。

     D12与单片机的接口共有两种方式:

多路地址/数据总线方式和单地址/数据总线方式。

这里选择了单地址/数据总线方式,因此,D12的ALE接为低电平,而A0脚与P89C52X2的端口P3.3相连。

该端口控制D12的命令和数据状态:

A0=1,表示数据总线上是命令;A0=0,表示数据总线上是数据。

D12的数据总线直接与P0口相连,D12的中断引脚INT_N与P89C52X2的INT0相连。

当D12的外部巾断有一位为1时,INT_N输出低电平,触发P89C52X2的外部中断。

因为系统未采用DMA,所以D12的DMAcK_N引脚接高电平,EOT_N引脚通过电阻接到USB的+5V,以正确检测到USB连接;INT_N引脚加一个上拉电阻。

因为D12有片内上电复位电路,故引脚RESET_N直接与电源引脚VCC相连。

温度传感器DSl8820工作在外接电源工作方式,DQ引脚直接和P89C52X2的P1.0相连。

     3.1系统的工作原理

   

      根据USB协议,任何传输都是由主机(host)开始的,单片机的前台工作就是等待。

主机PC首先要发送令牌包给USB,D12接收到令牌包就给单片机发中断,单片机进入中断服务程序。

首先读D12的中断寄存器,判断USB令牌包的类型,然后执行相应的操作,因此,USB单片机程序主要就是中断服务程序的编写。

在USB单片机程序中要完成对各种令牌包的响应,主要是对端口的编程。

      3.2软件部分的设计

   

      系统的固件程序从功能上分为两部分,整个编程在KeilC环境下完成。

      

(1)温度传感器D818820的读取程序

   

      DSl8820单线通信功能是分时实现的。

它有很严格的时序要求,对它的操作必须按协议进行,即初始化→发ROM操作命令→发存储器操作命令→数据处理。

      

(2)MCU和USB接口的通信程序

   

       本程序使用D12的端点l和端点2进行上位汁算机与MCUP89C52之间的命令和数据的传输。

端点l和端点2设置成模式O(非同步方式)。

其中端点1以中断传输方式进行命令的传输和应答,端点2以批量传输方式进行数据的传输。

端点1接收上位机发送过来的读指令,端点2返回读成功数据。

   

      系统的固件程序编写以分层结构展开。

它是一种积木式结构,如图3所示。

    ①硬件提取层:

对单片机的I/O口、数据总线等硬件接口进行操作。

     ②PDIUSBD12命令接口:

对D12器件进行操作的模块子程序集。

     ③中断服务程序:

当D12向单片机发出中断请求时,读取D12中断传输来的数据,并设定事件标志“EPP-FLAGS”和Settup包数据缓冲区“CONROL_XFER”传输给主循环程序。

     ④标准设备请求处理程序:

对USB的标准设备请求进行处理。

     ⑤厂商请求处理程序:

对用户添加的厂商请求进行处理。

      ⑥主程序:

发出USB数据传输请求,处理总线事件和调用用户自定义功能子程序。

   

      以NI-VISA为驱动的主机LabVIEW应用程序的设计,NI-VISA采用3.2版本,LabVIEW采用7.1版本。

   

      整个应用程序的主框架使用了WHILF循环来进行不断的查询。

在程序的编写过程中,采用了类似Windows程序中的事件驱动机制,LabVIEW提供了这样的结构——事件结构。

各个消息的产生利用了各种界面控件并由Case选择结构给出。

程序框图如图4所示。

      为了便于说明USB操作次序,把图4中事件结构展开,有图5所示的具体USB操作次序。

      在图5中,USBRAW设备通信采用端点1以中断传输方式接收上位机操作命令,协议可以自己约定。

端点2以批量传输方式给上位机发回温度数据。

其中端点数“130”是对应十六进制数“0082”的十进制数,此数表示端点2批量输入;而端点数“1”则是对应十六进制数“0001”的十进制数,此数表示端点1中断输出。

   

      因为NI-VISA3.2版本不支持USB属性“中断输出”(interruptout),因此为了实现USB端点1的中断输出问题,这里把USB属性“批量输出”(bulkoutpipe)和“VIWrite”节点组合在一起,来实现端点l中断输出。

从NI-VISA3.3起,可以直接利用“中断输出”(interruptout)属性来实现。

      结语

   

      经实践证明,采用基于NI-VISA驱动的USB接口应用系统的设计非常容易,开发难度低,对开发者的要求不高;开发出的系统稳定可靠,即使对Windows编程不熟悉的人也可以开发出USB应用系统,它提供了另一种开发USB驱动应用程序的捷径。

本文来源:

单片机及嵌入式系统应用    作者:

上海交通大学余志荣杨莉

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

作者姓名:

 余志荣杨莉

作者单位:

 上海交通大学

  USB(UniversalSerialBus)接口是近年来应用在PC领域的新型接口技术。

它基于单一的总线接口技术来满足多种应用领域的需求;它的即插即用、支持热插拔、易于扩展等特性极大地方便了用户的使用,已逐渐成为现代数据传输的发展趋势。

  传统的开发USB应用系统的步骤是,先用WindowsDDK(设备驱动程序开发包)或第三方开发工具(如DriverStudio)开发USB驱动程序,然后用VisualC++编写DLL(动态连接库),最后再调有DLL来开发应用程序。

显然,这对Windows编程不熟悉的人来说有一定的难度,何况USB驱动程序的开发难度很大。

本文介绍一种简单、快速开发USB接口应用系统的方法。

它直接在LabVIEW环境下通过NI-VISA开发能驱动用户USB系统的应用程序,完全避开了以前开发USB驱动程序的复杂性,大大缩短了开发周期。

  1NI-VISA简介

  NI-VISA(VirtualInstrumentSoftwareArchitec-ture,以下简称为“VISA”)是美国国家仪器NI(NationalInstrument)公司开发 

的一种用来与各种仪器总线进行通信的高级应用编程接口。

VISA总线I/O软件是一个综合软件包,不受平台、总线和环境的限制,可用来对USB、GPIB、串口、VXI、PXI和以太网系统进行配置、编程和调试。

VISA是虚拟仪器系统I/O接口软件。

基于自底向上结构模型的VISA创造了一个统一形式的I/O控制函数集。

一方面,对初学者或是简单任务的设计者来说,VISA提供了简单易用的控制函数集,在应用形式上相当简单;另一方面,对复杂系统的组建者来说,VISA提供了非常强大的仪器控制功能与资源管理。

  2LabVIEW及其调用VISA的条件

  LabVIEW(LaboratoryVirtualInstrumentEngineeringWorkbench)是NI公司开发的一种基于图形程序的编程语言。

用户利用创建和调用子程序的方法编写程序,使创建的程序模块化,而且程序编制简单、直观。

一个LabVIEW程序分为3部分:

前面板、框图程序和图标/接线端口。

前面板用于模拟真实仪器的前面板;框图程序是利用图形语言对前面板上的控件对象(分为控制量和指示量两种)进行控制;图标/接线端口用于把LabVIEW程序定义成一一个子程序,从而实现模块化编程。

  当进行USB通信时,VISA提供了两类函数供Lab-VIEW调用,USBINSTR设备与USBRAW设备。

USBINSTR设备是符合USBTMC协议的USB设备,可以通过使用USBINSTR类函数控制,通信时无需配置NI-VISA;而USBRAW设备是指除了明确符合USBTMC规格的仪器之外的任何USB设备,通信时要配置NI-VISA。

  

(1)配置NI-VISA的步骤

  ①使用DriverDevelopineIntWizard(驱动程序开发向导)创建INF文档;

  ②安装INF文档,并安装使用INF文档的USB设备;

  ③使用NI-VISAInteractiveControl(NI-VISA互动控制工具)对设备进行测试,以证实USB设备已正确安装,并获得USB设备的各属性值。

  详细过程可参考NI官方网站上免费提供的文档《使用NI-VISA控制USB设备》。

  

(2)与NI-VISA相配合的LabVIEW横板中VI子节点

 ViOpen,打开并指定VISAresourcename的设备的连接。

   ViProperty,VISA设备的属性子节点,可以设置端点或传输方式。

   ViWnte,向VISAresourcename指定的设备写入数据。

   ViRead,从VISAresourcename指定的设备读出数据。

   ViClose,结束设备读写并关闭与指定设备的连接。

  (3)USBRAW设备读写的操作次序

  USBRAW设备的读写次序如图l所示。

  下面以一个USB接口的温度采集系统为例,说明基于NI-VISA驱动的USB接口应用系统的设计与实现。

  3系统硬件结构

  系统以Philips公司的增强型80C51单片机为核心,如图2所示。

这是一个多点温度采集系统,核心器件是含有8KB非易失Flash程序存储器的P89C52,与标准80C51完全兼容。

USB通信控制芯片采用Philips公司的PDIUSBD12芯片(简称“D12”)。

它是一款较新型的专用USB通信控制芯片,符合通用串行总线USBl.1版规范,内部集成有串行接口引擎SIE、320字节FIFO存储器、收发器和电压调节器。

前端温度传感器采用Dallas公司生产的DSl8820。

它是一线式数字温度传感器,直接以数字量输出给微处理器,可节省大量的引线和信号调理电路。

DSl8820内部有一个光刻ROM。

这个ROM中存有64位序列号。

它可以看作足该DS18820的地址序列码,所以多路温度传感器可以挂在l条总线上,共同占用单片机的1条I/O线即可实现接口。

在提升单片机I/O线驱动能力的前提下,理论上可以任意扩充检测的温度点数。

  D12与单片机的接口共有两种方式:

多路地址/数据总线方式和单地址/数据总线方式。

这里选择了单地址/数据总线方式,因此,D12的ALE接为低电平,而A0脚与P89C52X2的端口P3.3相连。

该端口控制D12的命令和数据状态:

A0=1,表示数据总线上是命令;A0=0,表示数据总线上是数据。

D12的数据总线直接与P0口相连,D12的中断引脚INT_N与P89C52X2的INT0相连。

当D12的外部巾断有一位为1时,INT_N输出低电平,触发P89C52X2的外部中断

因为系统未采用DMA,所以D12的DMAcK_N引脚接高电平,EOT_N引脚通过电阻接到USB的+5V,以正确检测到USB连接;INT_N引脚加一个上拉电阻。

因为D12有片内上电复位电路,故引脚RESET_N直接与电源引脚VCC相连。

温度传感器DSl8820工作在外接电源工作方式,DQ引脚直接和P89C52X2的P1.0相连。

  3.1系统的工作原理

  根据USB协议,任何传输都是由主机(host)开始的,单片机的前台工作就是等待。

主机PC首先要发送令牌包给USB,D12接收到令牌包就给单片机发中断,单片机进入中断服务程序。

首先读D12的中断寄存器,判断USB令牌包的类型,然后执行相应的操作,因此,USB单片机程序主要就是中断服务程序的编写。

在USB单片机程序中要完成对各种令牌包的响应,主要是对端口的编程。

  3.2软件部分的设计

  系统的固件程序从功能上分为两部分,整个编程在KeilC环境下完成。

  

(1)温度传感器D818820的读取程序

  DSl8820单线通信功能是分时实现的。

它有很严格的时序要求,对它的操作必须按协议进行,即初始化→发ROM操作命令→发存储器操作命令→数据处理。

  

(2)MCU和USB接口的通信程序

  本程序使用D12的端点l和端点2进行上位汁算机与MCUP89C52之间的命令和数据的传输。

端点l和端点2设置成模式O(非同步方式)。

其中端点1以中断传输方式进行命令的传输和应答,端点2以批量传输方式进行数据的传输。

端点1接收上位机发送过来的读指令,端点2返回读成功数据。

  系统的固件程序编写以分层结构展开。

它是一种积木式结构,如图3所示。

  ①硬件提取层:

对单片机的I/O口、数据总线等硬件接口进行操作。

  ②PDIUSBD12命令接口:

对D12器件进行操作的模块子程序集。

  ③中断服务程序:

当D12向单片机发出中断请求时,读取D12中断传输来的数据,并设定事件标志“EPP-FLAGS”和Settup包数据缓冲区“CONROL_XFER”传输给主循环程序。

  ④标准设备请求处理程序:

对USB的标准设备请求进行处理。

  ⑤厂商请求处理程序:

对用户添加的厂商请求进行处理。

  ⑥主程序:

发出USB数据传输请求,处理总线事件和调用用户自定义功能子程序。

  以NI-VISA为驱动的主机LabVIEW应用程序的设计,NI-VISA采用3.2版本,LabVIEW采用7.1版本。

  整个应用程序的主框架使用了WHILF循环来进行不断的查询。

在程序的编写过程中,采用了类似Windows程序中的事件驱动机制,LabVIEW提供了这样的结构——事件结构。

各个消息的产生利用了各种界面控件并由Case选择结构给出。

程序框图如图4所示。

    为了便于说明USB操作次序,把图4中事件结构展开,有图5所示的具体USB操作次序。

  在图5中,USBRAW设备通信采用端点1以中断传输方式接收上位机操作命令,协议可以自己约定。

端点2以批量传输方式给上位机发回温度数据。

其中端点数“130”是对应十六进制数“0082”的十进制数,此数表示端点2批量输入;而端点数“1”则是对应十六进制数“0001”的十进制数,此数表示端点1中断输出。

  因为NI-VISA3.2版本不支持USB属性“中断输出”(interruptout),因此为了实现USB端点1的中断输出问题,这里把USB属性“批量输出”(bulkoutpipe)和“VIWrite”节点组合在一起,来实现端点l中断输出。

从NI-VISA3.3起,可以直接利用“中断输出”(interruptout)属性来实现。

  结语

  经实践证明,采用基于NI-VISA驱动的USB接口应用系统的设计非常容易,开发难度低,对开发者的要求不高;开发出的系统稳定可靠,即使对Windows编程不熟悉的人也可以开发出USB应用系统,它提供了另一种开发USB驱动应用程序的捷径。

出处:

单片机及嵌入式系统应用  

页面功能【我来说两句】【字体:

大中小】【打印】【关闭】

 

■相关连接

·微型虚拟示波器的设计与实现

·基于虚拟仪器的频率测量软件系统设计

·基于嵌入式系统的虚拟仪器设计

·基于LabVIEW的相关滤波器的设计与改进

·基于虚拟仪器的热膨胀仪测试系统设计

·基于虚拟仪器的ARINC429总线信号仿真和测试方案

·基于虚拟仪器技术新型混沌信号产生器的设计

·基于虚拟仪器的胎儿心电图仪的研制

 

USB仪器控制教程

2评级|4.50outof5

打印

概览

本教程可作为通过NI-VISA与USB设备通信的起步指导。

本教程不作为学习USB构架或各种USB通信协议的起步指导。

读完本教程,只要您能理解设备通信协议,便可安装USB设备并利用NI-VISA实现与USB的通信。

目录

1. USB和VISA的背景

2. 通过配置NI-VISA,控制您的USB设备

3. 通过使用NI-VISA,与您的USB设备通信

4. Linux和Mac系统上的USB

 USB和VISA的背景

VISA是一款可与仪器总线通信的高级应用程序接口(API)。

VISA独立于平台、总线和环境。

换言之,无论是在运行Windows2000操作系统的计算机上借助LabVIEW创建与USB设备通信的程序,还是在运行MacOSX操作系统的计算机上借助C创建与GPIB设备通信的程序,均可使用相同的API。

通用序列总线(USB)是一款基于消息的通信总线。

这表示:

PC和USB设备通过在总线上发送文本或二进制数据格式的指令和数据,实现通信。

每款USB设备都有着各自的指令集。

您可通过“NI-VISA读写”函数将这些指令发送给仪器并从仪器上读取响应。

您可以和仪器制造商确认,获得关于自身仪器的有效指令列表。

NI-VISA自3.0版起,支持USB通信。

有2种类型的VISA资源参与支持:

USBINSTR和USBRAW。

USBINSTR资源类型用于符合“USB测试和测量类型(USBTMC)”协议的USB设备。

USBTMC设备符合VISAUSBINSTR资源类型可以理解的一项协议。

您无需配置即可实现与USBTMC设备的通信。

若您想了解和USBTMC仪器通信的内容,请参阅第3节。

更多关于USBTMC规范的信

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1