《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于LabVIEW NI-VISA实现PC与C8051F320的USB数据通信
基于LabVIEW NI-VISA实现PC与C8051F320的USB数据通信
来源:电子技术应用2013年第8期
段晋军,位恒曦,常晓明
太原理工大学 计算机科学与技术学院,山西 太原030024
摘要: 针对传统USB系统开发难度较大的问题,介绍了一种基于NI-VISA实现PC与USB裸设备——C8051F320单片机的USB通信系统的实现方案。该方案对开发PC外围USB设备以及基于USB的应用系统设计具有一定参考意义。
中图分类号: TN919
文献标识码: A
文章编号: 0258-7998(2013)08-0017-03
Realization of USB communication between PC and C8051F320 based on LabVIEW NI-VISA
Duan Jinjun,Wei Hengxi,Chang Xiaoming
College of Computer Science and Technology,Taiyuan University of Technology,Taiyuan 030024,China
Abstract: Tradional USB system has much difficulty in development.For this reason,an USB communication solution between PC and USB RAW device C8051F320 MCU based on LabVIEW NI-VISA is introduced in this paper,which can be a reference for the development of USB device and the design of USB application system.
Key words : USB;LabVIEW;NI-VISA;C8051F320

    随着当今电子技术的发展,人们对数据通信速度和操作安装的简易性等方面的要求日益提高,使得数据通信技术不可避免地成为一项关键技术。USB是一种通用串行总线,其发展速度非常迅猛,USB协议已由传输速度为12 Mb/s的USB1.1发展到传输速度支持低速、全速、高速和超高速的USB3.0,最大传输速度高达5 Gb/s。USB总线技术由于数据传输速度高、使用方便和能够连接多达127个外设,因此其在数据通信中的应用越来越广泛。

    Windows平台下传统的USB应用系统的开发步骤是:先用Windows DDK或第三方开发工具开发USB驱动程序,然后用Visual C++开发应用程序。若让不熟悉Windows编程的开发者用传统方法开发USB驱动程序和应用程序,将会非常困难[1]。因此,本文介绍了一种难度较低的USB应用系统实现方案,即在LabVIEW环境下基于NI-VISA实现PC与C8051F320单片机的USB通信系统。
1 系统总体设计
    本系统选用具有USB接口的C8051F320-TBC开发板实现数据的双向通信。该设计完成两项任务:(1)采集单片机上温度传感器的数据,通过USB上传至PC;(2)PC通过USB发送指令至单片机,控制单片机执行相应的动作。
    本系统的硬件平台结构如图1所示。

    本系统的软件平台设计包括单片机端的固件(Firmware)程序设计、PC端的驱动程序设计和PC端的应用程序设计3方面。
    单片机端固件程序的任务是处理来自USB主机端的标准请求和完成与USB主机的数据交换;PC端的驱动程序作为USB主机(PC)和USB从机(单片机)的桥梁,其主要任务是让USB主机可以识别USB设备,并将硬件本身的功能告诉USB主机;PC端的应用程序的任务是通过驱动程序与USB设备进行通信并对USB数据进行处理。
    本文采用LabVIEW平台开发PC端的驱动程序和应用程序,采用Silicon Laboratories IDE集成开发环境开发固件程序。本系统软件平台结构如图2所示。

2 模块设计
2.1 固件程序设计

    单片机端固件程序设计的目的是使USB主机能够识别USB设备(本系统为C8051F320设备),并正确与USB设备进行双向通信。
    固件程序完成的任务有三项:(1)使得USB主机可识别USB设备,并建立二者之间的通信;(2)接收由USB主机发送来的控制指令,在本设计中为点亮单片机的LED灯;(3)将采集的温度数据传送给USB主机。
    本设计将固件程序划分为USB描述符声明程序(usb_desc.c)、中断服务程序(usb_isr.c)、标准设备请求程序(usb_stdreq.c)、主程序(main.c)4个子模块。
    USB描述符声明程序(usb_desc.c)用来描述设备的USB信息。该文件包含有USB协议中规定的5种标准描述符信息:设备描述符信息、配置描述符信息、接口描述符信息、端点描述符信息和字符串描述符信息。USB主机通过访问这些描述符即可实现对设备类型的识别和配置。
    中断服务程序(usb_isr.c)用来处理所有与USB相关的中断事件,当有任何类型的USB中断事件发生时,固件程序都会调用这个中断服务程序。
    标准设备请求程序(usb_stdreq.c)包括所有标准设备请求的处理例程,这些处理例程都是通过控制端点的处理来调用,该文件主要用来处理USB主机发送的标准请求。
    主程序(main.c)的功能是响应USB主机发送的控制指令并将采集的温度数据传送给USB主机。
    固件程序流程图如图3所示。

    由图3可知,该固件程序首先进行设备列举[2],其目的是使USB主机能够识别USB设备。USB主机根据设备的描述符信息对USB设备进行配置并分配资源,待通信建立后,USB设备可接收由USB主机发来的控制指令,并将采集的温度数据通过USB传给USB主机。
2.2 驱动程序设计
    驱动程序的设计采用虚拟仪器软件架构NI-VISA实现,NI-VISA(Virtual Instrument Software Architecture)是由美国NI公司开发的一种用来与各种仪器总线进行通信的高级应用编程接口。VISA是一个综合软件包,可在任何平台、总线和环境下对USB、串口、GPIB、VXI、PXI及以太网等进行配置、编程和调试。
    USB设备有USB INSTR设备与USB RAW设备两类。符合USB测试和测量类(USBTMC)协议的设备称为USB INSTR设备;不符合USBTMC协议的设备称为USB RAW设备。
    NI-VISA有USB INSTR类函数与USB RAW类函数两种VISA类函数,它们可分别控制USB INSTR与USB RAW两种设备。USB INSTR设备可通过LabVIEW直接调用USB INSTR类函数实现对其控制;而USB RAW设备则需先使用NI-VISA来创建USB设备的驱动程序[3],创建正确后才能利用LabVIEW调用USB RAW类函数实现对其控制。
    使用NI-VISA软件包中的VISA Interactive Control测试可知,本设计中的USB设备属于USB RAW类设备,因此需要通过NI-VISA来创建驱动程序。驱动程序设计的任务是制作INF文件、配置USB设备及安装驱动程序并验证其正确安装,可分为以下3个步骤[4]:(1)使用VISA驱动开发向导(Driver Development Wizard)创建INF文件;(2)使用INF文件安装驱动程序和USB设备;(3)使用NI-VISA交互式控制测试设备。
2.3 应用程序设计
    当正确安装VISA驱动程序之后,便可通过LabVIEW程序调用USB RAW类函数来完成与USB设备的通信[5]。本应用程序设计的主要任务有两个:(1)PC接收由单片机采集的温度数据,并通过LabVIEW显示;(2)PC通过LabVIEW软件发送指定的指令点亮单片机的LED灯。
    由于本设计中的RAW设备编程较为复杂,不像INSTR设备那样可以使用USBTMC协议直接调用VISA常用函数,故需重新编写程序。编写本设计主要用到的控件为:VISA打开、VISA启用事件、VISA等待事件、VISA获取USB中断数据、VISA写和VISA关闭。
    PC通过USB向单片机发送指令的流程图如图4所示,PC接收单片机通过USB传送来的数据的流程图如图5所示。
    根据图4和图5的流程图进行LabVIEW编程,其后面板的核心代码分别如图6和7所示。

 

 


3 系统功能测试
    在完成各个模块的设计后,需进行系统集成。结合硬件框图进行实物连接,依次完成固件程序下载、驱动程序安装和应用程序整合。
    (1)单片机将所采集的温度信息通过USB将数据传送给PC,其LabVIEW前面板及测试结果如图8所示。

    单片机的核心代码如下:
    In_Packet[0] = Switch1State;
    In_Packet[1] = Switch2State;
    In_Packet[2] = (P0 & 0x0F);
    In_Packet[3] = Potentiometer;
    In_Packet[4] = Temperature;
    通过与单片机发送数据的格式对比可知,所传送数据的格式正确,使用“Bus Hound”软件验证了所传送的数据正确无误。
    (2)PC机通过USB将指定的数据传送给单片机,可观察到正常点亮单片机的LED灯。
    本文介绍了如何在LabVIEW环境下基于NI-VISA实现PC与单片机C8051F320的USB通信,并给出系统实现方案。实验测试表明,该方案能够实现USB通信,且方案实现难度较低。本系统可为USB应用系统的设计提供参考。
参考文献
[1] 佘志荣,杨莉.基于NI-VISA与LabVIEW的USB接口应用设计[J].单片机与嵌入式系统应用,2007(1):66-68.
[2] 赵宏斌,全厚德.基于C8051F320的数据采集系统USB接口设计[J].单片机开发与应用,2009,25(9):92-94.
[3] 蔡共宣.基于LabVIEW的单片机USB数据采集系统设计[J].实验科学与技术,2009,8(1):58-59.
[4] National Instruments.USB仪器控制教程[Z],2009.
[5] 张桐,陈国顺.精通LabVIEW程序设计[M].北京:电子工业出版社,2008.

此内容为AET网站原创,未经授权禁止转载。