1、基于 LabVIEW 的 USB 接口上位机设计一、数据传输 USB 模块1.1 概述CH375 是一个 USB 总线的通用接口芯片,支持 USB-HOST 主机方式和 USB-DEVICE/SLAVE 设备方式。在本地端,CH375 具有 8 位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU 等控制器的系统总线上。在 USB 主机方式下,CH375 还提供了串行通讯方式,通过串行输入、串行输出和中断输出与单片机/DSP/MCU/MPU 等相连接。 CH375 的 USB 设备方式与 CH372 芯片完全兼容,CH375 包含了 CH372 的全部功能
2、。本手册中没有提供 CH375 在 USB 设备方式下的说明,相关资料可以参考 CH372 手册 CH372DS1.PDF。CH375 的 USB 主机方式支持常用的 USB 全速备,外部单片机可以通过 CH375 按照相应的 USB 协议与 USB 设备通讯。CH375 还内置了处理 Mass-Storage 海量存储设备的专用通讯协议的固件,外部单片机可以直接以扇区为基本单位读写常用的 USB 存储设备。1.2 特点 低速和全速 USB-HOST 主机接口,兼容 USB V2.0,外围元器件只需要晶体和电容。 低速和全速 USB 设备接口,完全兼容 CH372 芯片,支持动态切换主机与设备
3、方式。 主机端点输入和输出缓冲区各 64 字节,支持 12Mbps 全速 USB 设备和 1.5Mbps 低速设备。 支持 USB 设备的控制传输、批量传输、中断传输。 自动检测 USB 设备的连接和断开,提供设备连接和断开的事件通知。 内置控制传输的协议处理器,简化常用的控制传输。 内置固件处理海量存储设备的专用通讯协议,支持 Bulk-Only 传输协议和 SCSI、UFI、RBC 或等效命令集的 USB 存储设备(包括 USB 硬盘/USB 闪存盘/U 盘/USB 读卡器) 。 通过 U 盘文件级子程序库实现单片机读写 USB 存储设备中的文件。 并行接口包含 8 位数据总线,4 线控制
4、:读选通、写选通、片选输入、中断输出。 串行接口包含串行输入、串行输出、中断输出,支持通讯波特率动态调整。 支持 5V 电源电压和 3.3V 电源电压,支持低功耗模式。 采用 SOP-28 无铅封装,兼容 RoHS,提供 SOP28 到 DIP28 的转换板,引脚基本兼容CH374 芯片。 1.3 封装 封装形式 塑体宽度 引脚间距 封装说明 订货型号SOP-28 762mm 300mil 1.27mm 50mil 标准的 28 脚贴片 CH375B1.4 USB 硬件电路图其中 USB 设备采用 5V 供电,其他采用 3.3V 供电,DE0 板子上 I/O 口处有 5V 和 3.3V,因此直
5、接用 DE0 板子上供电。1.5 SOPC Builder 软核在 SOPC Builder 软核中添加 USB 部分的模块,其实都是通过 PIO 模块控制的。添加后如下图所示,其中 USB_WR,USB_RD,USB_A0 都是 1 位输出 PIO;而 USB_DB 为 8 位输出双向 PIO , 故 。 USB_nINT 为输入 PIO,而且是低电平中断。完成 SOPC Builder 的编译,在 Quartus 界面,整理得如下原理图:对于 USB_nINT 的中断,设计的为低电平中断,而 NiosII 电平中断只支持高电平中断,因此在 USB_nINT 前面加一个非门。1.6 Nios
6、II 的软件开发USB 分主机模式和设备模式,这两种模式的硬件部分是相同的,只是在软件编程方面有些不同。这里我们应用 USB 的设备模式,也就是 DE0 开发板通过 USB 接口与主机(电脑)相连,实现开发板与电脑的数据通信。我们首先打开 NIOS II IDE 软件,在 Quartus 的工程目录下建立 USB 的 NiosII 的工程。下面是 CH375B 的时序图:依据时序图在 NiosII 下编程:建立 usb.h 的头文件,然后建立 usb.c 文件,最后建立mian.c 的文件,建立完成后编译、下载、运行。至此,USB 模块设置完成。二、LabVIEW 的上位机2.1 数据采集概述
7、数据采集是获取信息的重要手段,数据采集技术作为信息科学的一个重要分支,是以传感器、信号测量与处理、微型计算机技术等为基础形成的一门综合性应用技术,它主要研究信息数据的采集、存储及处理,具有很强的实用性。如今,数据采集已在工业生产和科学技术研究等众多领域得到了广泛应用并取得了良好效果。在工业生产过程中,数据采集系统可以对生产现场的工艺参数进行采集、监视和记录,以提高质量、降低成本。在科学研究中,通过数据采集可以获得大量的动态信息,是获取科学奥秘的重要手段之一。在图像处理、瞬态信号检测、软件无线电等一些领域,更是需要高速度、高精度、高实时性的数据采集与处理系统。因此,随着科学技术的发展,尤其是计算
8、机技术的发展与普及,数据采集技术将有更加广阔的发展前景。高速的数据采集产品多通过 PCI 或 PXI 等总线实现与 PC 机之间的通信。PCI 总线的数据采集卡易受 PC 机机箱内高频干扰的影响,无法消除高频电磁干扰,从而降低了采样精度。此外,计算机主板上的插槽个数有限、安装不便且插入到 PC 机箱内的数据采集卡必须进行资源重新配置以避免冲突,而此项工作专业性很强,以上这些问题都遏制了基于 PCI 总线的数据采集产品的进一步开发和应用。目前的数据采集产品在速度和接口方式上已经有了很大的改进,数据采集产品广泛应用在科研、教育、工业、水利、医疗等各行各业,很多已经具有 PCI、PXI 总线或 US
9、B 接口。USB 数据采集技术在国外已处于高速发展阶段,具有雄厚的技术实力,很多企业已经推出了很多适应不同条件与精度要求的具有 USB 接口的数据采集产品,典型的如美国Data1Transl-ation 公司的 DT9834 系列、美国国家仪器公司(NI)公司的 DAQPad 系列、M 系列等。这些产品不但提供高速的数据采集功能而且提供了功能强大的测量服务软件以简化系统设置和程序设计,以便实现高速的数据采集、分析及显示。例如 DT9810 是一种基于 USB 接口的经济型袖珍测试仪,它配备应用软件,可以为用户提供非常容易使用的示波器、图表记录器、电压表、文件阅读器、数字 I/O 和计数/定时器
10、等功能。简单的安装软件后将采集模块连到计算机 USB 接口并将测量信号连接到采集模块的输入端,最后运行应用软件即可。但是国外 USB 接口的数据采集产品价格普遍比较昂贵。2.2 NI-VISA 简介NI-VISA(Virtual Instrument Software Architec-ture,以下简称为“VISA”)是美国国家仪器 NI(NationalInstrument)公司开发的一种用来与各种仪器总线进行通信的高级应用编程接口。VISA 总线 I/O 软件是一个综合软件包,不受平台、总线和环境的限制,可用来对 USB、GPIB、串口、VXI、PXI 和以太网系统进行配置、编程和调试。
11、VISA 是虚拟仪器系统 I/ O 接口软件。基于自底向上结构模型的 VISA 创造了一个统一形式的 I/ O 控制函数集。一方面,对初学者或是简单任务的设计者来说,VISA 提供了简单易用的控制函数集,在应用形式上相当简单;另一方面,对复杂系统的组建者来说,VISA 提供了非常强大的仪器控制功能与资源管理。当进行 USB 通信时,VISA 提供了两类函数供 LABVIEW 调用:USB INSTR 设备与 USB RAW 设备。USB INSTR 设备是符合 USBTMC 协议的 USB 设备,可以通过使用 USB INSTR 类函数控制,通信时无需配置 NI-VISA;而 USB RAW
12、设备是指除了明确符合 USBTMC 规格的仪器之外的任何 USB 设备,通信时要配置 NI-VISA。 (1)配置 NI-VISA 的步骤 使用 Driver Development wizard(驱动程序开发向导)创建 INF 文档; 安装 INF 文档,并安装使用 INF 文档的 USB 设备; 使用 NI-VISA Interactive Control(NI-VISA 互动控制工具)对设备进行测试,以证实 USB 设备已正确安装,并获得 USB 设备的各属性值。 (2)与 NI-VISA 相配合的 LABVIEW 模板中 VI 子节点 ViOpen,打开并指定 VISA resourc
13、e name 的设备的连接; ViProperty,VISA 设备的属性子节点,可以设置端点或传输方式; ViWrite,向 VISA resource name 指定的设备写入数据; ViRead,从 VISA resource name 指定的设备读出数据; ViClose,结束设备读写并关闭与指定设备的连接。 (3)USB RAW 设备读写的操作对于 USB 控制芯片 CH375B,其 USBVID_4348&PID_5537,Model Name:,Manufacture Name:。依据芯片资料运用 NI 的 DDW 创建 inf 文件,调试、安装程序后设备显示正常,为 USB-RA
14、W:2.3 LabVIEW 及其调用 VISA 的条件LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是 NI 公司开发的一种基于图形程序的程语言。用户利用创建和调用子程序的方法编写程序,使创建的程序模块化,而且程序编制简单、直观。一个 LabVIEW 程序分为 3 部分:前面板、框图程序和图标/线端口。前面板用于模拟真实仪器的前面板;框图程序利用图形语言对前面板上的控件对象(分为控制量和指量两种)进行控制;图标/接线端口用于把 LabVIEW 程定义成一个子程序,从而实现模块化编程。2.4 USB-RAW 设备读写的操作
15、次序USB RAW 设备的读写次序如下图所示:图 USB-RAW 读写时序2.5 LabVIEW 上位机设计整个应用程序的主框架使用了 WHILE 循环来进行不断的查询。在程序的编写过程中,采用了类似 Windows 程序中的事件驱动机制, LabVIEW 提供了这样的结构-事件结构。各个消息的产生利用了各种界面控件并由 Event Structure 事件结构给出。程序基本框图如下图所示:打开 VISA 设备设定 VISA 设备的属性节点参数(指定断点和传输方式)读写 USB RAW(发送命令或设定字节数)关闭 VISA(释放 VISA 设备所占的资源)对于数据接收区作如下设计:数据波形显示
16、模块如下:为了便于说明 USB 操作次序,把上图中事件结构展开,有下图所示的具体 USB 操作次序。打开 VISA 设备:VISA resource name 选择 VISA 设备接口;发送数据:首先判断是否为 USB Raw 设备,是则从 USB RAW 设备发送数据;接收数据:向 USB RAW 写入数据,同时通过数据接收区写入数据,在数据接收区显示数据;关闭 VISA:即数据发送接收完毕后关闭 VISA 设备。这里在发送数据阶段设置了 USB RAW 属性节点,Select Property 选择的是Interface Type,与下面的 结合达到判断设备的类型。 前面板的左上角是打开/
17、关闭 NI-VISA 设备:Open Session/Close session,往下依次有程序读出、读入(Bulk-Out/Bulk-In) 、清空数据接收区、向 txt 文件读写数据、以及退出程序;中间的空白栏为数据接收区;右边是数据波形显示以及波形调节按钮,整个上位机设计上兼顾虚拟示波器的功能。三、参考文献1林静、林振宇、郑福仁。LabVIEW 虚拟仪器程序设计从入门到精通 M 北京:人民邮电出版社,2010。2薛圆圆,赵建领。USB 应用开发实例详解 M 北京:人民邮电出版社,2010。3李英伟,王成儒 练秋生,胡正平。USB2.0 原理与工程开发(第二版) M 北京:国防工业出版社,2010。4余志荣,杨莉,上海交通大学。基于 NI-VISA 与 LabVIEW 的 USB 接口应用设计J。Microcontrollers & Embedded Systems,2007, (1) 。