微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 弹上通信系统的LabVIEW与单片机的通信技术

弹上通信系统的LabVIEW与单片机的通信技术

时间:04-12 来源:互联网 点击:

LabVIEW通过调用dll文件大大缩减了实现USB通信开发工作量,但最关键也是最难的一步在于给函数配置参数。通常来讲,DLL主要用C/C++等文本语言开发,有些参数类型和LabVIEW不匹配,直接调用无法正常使用。为了解决这个问题,需要用户对参数进行修改或者对原有的dll文件进行二次开发,加大了工作量。
值得一提的是,USBXpress开发套件除了包含面向主机的dll文件,还包括面向USB器件的驱动文件和USBX_F34X LIB及USB_API.h文件,封装了USB协议的细节,大大简化了USB固件编程。一个典型的利用API函数实现USB通信的程序流程如图2所示。程序是在SiliconLabs集成开发环境下编译调试的。

不管利用CIN,还是调用DLL,都可以实现LabVIEW访问USB设备,但并不能很好地体现LabVIEW的优势。因为通过CIN和DLL,不用LabVIEW也可以实现上位机编程。实际上,LabVIEW还有独特的访问USB设备的方法,即通过VISA访问USB设备。

3 通过VISA访问USB设备
VISA(Virtual Instrument Software Architecture,虚拟仪器软件架构)是一种用来与各种仪器总线进行通信的高级应用编程接口(API),包括GPIB、USB、串口、PXI/PCI、VXI、火线和以太网。它是计算机与仪器的软件连接层,本身不具备编写仪器驱动的能力,通过调用特定仪器驱动与仪器的通信。
NI-VISA从3.0版开始支持USB通信,它有两种VISA类函数(Resource Class),可以控制两类USB设备:USB INSTR设备与USB RAW设备。U-SB INSTR设备是符合USBTMC协议的USB设备,可以通过使用USB INSTR类函数控制,通信时无需配置NI-VISA;而USB RAw设备是指除了明确符合USBTMC规格的仪器之外的任何USB设备,通信时要配置NI-VISA。C8051F340是USB RAW设备,故欲实现与LabVIEW进行USB通信,可通过NI公司提供的VISA Driver Wizard进行配置。步骤如下:
①按照“程序”一“National Instruments”一“VISA”一“Driver Wizard”选择USB并点击Next,进入USB-DeviceInformation界面。
②在USB Vendor ID栏和USB Product ID栏分别填写USB设备的PID号和VID号。另外两栏分别是Manufacturer Name和Mode Name栏,选填。每一个USB设备都有唯一的PID号和VID号,它们是主机识别不同USB设备的根据。
③生成并安装inf文件,为USB设备创建PNF文档。持续点击Next,并为文件命名。高版本的VISA可发自动创建PNF文档。
④连接USB设备。USB具有热拔插功能,所以Windows能够探测到USB设备,并立即会打开“添加新硬件向导”,很快完成USB设备驱动程序的安装。
至此,主机已将NI-VISA作为访问USB设备的底层驱动,在LabVIEW程序中即可利用VISA选板的VI设计通信程序。
图3是一个基于NI-VISA编写的LabVIEW与C8051F340进行USB通信的程序框图。设备的PID和VID分别是0x10C4和0x0005,单片机使用端点2IN,采用中断传输方式;LabVIEW程序中用VISA事件处理和获取USB中断等VI。

通过NI-VISA实现LabVIEW与单片机进行USB通信,大大减小了工作量,同时很好地发挥了LabVIEW的特点。

结语
对实现LabVIEW与C8051F340单片机USB通信的3种方式进行比较,结论如下:
①通过CIN节点访问USB可以充分利用设备生产厂家提供的C语言编写的驱动程序及源程序,发挥C语言的优势;但要求用户非常熟悉USB协议,这种实现方法相当于在LabVIEW下用CIN对USB设备编写驱动程序,使用较为麻烦。
②通过调用DLL实现USB通信,可以利用生产厂家提供的dll文件,发挥dll文件的优势;但由于dll文件的数据格式通常和LabVIEW不完全匹配,往往需要修改参数或者对dll文件进行二次开发,需要具备开发dll文件的能力,也比较麻烦。
③通过NI-VISA可以充分发挥LabVIEW的优势,无需熟悉传统文本语言编程,极大方便上位机的编程。
④就单片机在USB设备固件编程的工作量而言,通过NI-VISA方式与通过CIN方式相当,比通过USBXpress开发套件的工作量大。
结合实现LabVIEW与C8051F340USB通信总体软件编程任务,从工程应用角度进行比较,如表1所列。

对于一般情况下基于LabVIEW的上下位机USB通信,建议通过调用DLL或者使用VISA实现USB通信,具体采用哪种方式,还要结合系统具体要求而定。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top