一、数据传输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 的全部功能。本手册中没有提供CH375在USB设备方式下的说明,相关资料可以参考 CH372 手册 CH372DS1.PDF。CH375的 USB主机方式支持常用的USB全速备,外部单片机可以通过CH375按照相应的 USB 协议与 USB 设备通讯。CH375 还内置了处理 Mass-Storage 海量存储设备的专用通讯协议的固件,外部单片机可以直接以扇区为基本单位读写常用的USB 存储设备。
1.2特点
● 低速和全速USB-HOST 主机接口,兼容USB V2.0,外围元器件只需要晶体和电容。
● 低速和全速USB设备接口,完全兼容 CH372 芯片,支持动态切换主机与设备方式。
● 主机端点输入和输出缓冲区各字节,支持 12Mbps 全速 USB 设备和 1.5Mbps 低速设备。
● 支持USB 设备的控制传输、批量传输、中断传输。
● 自动检测USB设备的连接和断开,提供设备连接和断开的事件通知。
● 内置控制传输的协议处理器,简化常用的控制传输。
● 内置固件处理海量存储设备的专用通讯协议,支持 Bulk-Only传输协议和 SCSI、UFI、RBC 或等效命令集的USB存储设备(包括 USB 硬盘/USB 闪存盘/U 盘/USB 读卡器)。
● 通过U 盘文件级子程序库实现单片机读写USB 存储设备中的文件。
● 并行接口包含8位数据总线,4线控制:读选通、写选通、片选输入、中断输出。
● 串行接口包含串行输入、串行输出、中断输出,支持通讯波特率动态调整。
● 支持5V 电源电压和3.3V电源电压,支持低功耗模式。
● 采用SOP-28无铅封装,兼容RoHS,提供 SOP28到 DIP28的转换板,引脚基本兼容CH374芯片。
1.3封装
封装形式 | 塑体宽度 | 引脚间距 | 封装说明 | 订货型号 | ||
SOP-28 | 7.62mm | 300mil | 1.27mm | 50mil | 标准的28脚贴片 | CH375B |
1.4 USB硬件电路图
其中USB设备采用5V供电,其他采用3.3V供电,DE0板子上I/O口处有5V和3.3V,因此直接用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 NiosII的软件开发
USB 分主机模式和设备模式,这两种模式的硬件部分是相同的,只是在软件编程方面有些不同。这里我们应用USB的设备模式,也就是DE0开发板通过USB接口与主机(电脑)相连,实现开发板与电脑的数据通信。我们首先打开NIOS II IDE 软件,在Quartus的工程目录下建立USB的NiosII的工程。下面是CH375B的时序图:
依据时序图在NiosII下编程:建立usb.h的头文件,然后建立usb.c文件,最后建立mian.c的文件,建立完成后编译、下载、运行。
至此,USB模块设置完成。
二、LabVIEW的上位机
2.1 数据采集概述
数据采集是获取信息的重要手段,数据采集技术作为信息科学的一个重要分支,是以传感器、信号测量与处理、微型计算机技术等为基础形成的一门综合性应用技术,它主要研究信息数据的采集、存储及处理,具有很强的实用性。如今,数据采集已在工业生产和科学技术研究等众多领域得到了广泛应用并取得了良好效果。在工业生产过程中,数据采集系统可以对生产现场的工艺参数进行采集、监视和记录,以提高质量、降低成本。在科学研究中,通过数据采集可以获得大量的动态信息,是获取科学奥秘的重要手段之一。在图像处理、瞬态信号检测、软件无线电等一些领域,更是需要高速度、高精度、高实时性的数据采集与处理系统。因此,随着科学技术的发展,尤其是计算机技术的发展与普及,数据采集技术将有更加广阔的发展前景。
高速的数据采集产品多通过PCI或PXI等总线实现与PC机之间的通信。PCI总线的数据采集卡易受PC机机箱内高频干扰的影响,无法消除高频电磁干扰,从而降低了采样精度。此外,计算机主板上的插槽个数有限、安装不便且插入到PC机箱内的数据采集卡必须进行资源重新配置以避免冲突,而此项工作专业性很强,以上这些问题都遏制了基于PCI总线的数据采集产品的进一步开发和应用。
目前的数据采集产品在速度和接口方式上已经有了很大的改进,数据采集产品广泛应用在科研、教育、工业、水利、医疗等各行各业,很多已经具有PCI、PXI总线或USB接口。USB数据采集技术在国外已处于高速发展阶段,具有雄厚的技术实力,很多企业已经推出了很多适应不同条件与精度要求的具有USB接口的数据采集产品,典型的如美国Data1Transl-
ation公司的DT9834系列、美国国家仪器公司(NI)公司的DAQPad系列、M系列等。这些产品不但提供高速的数据采集功能而且提供了功能强大的测量服务软件以简化系统设置和程序设计,以便实现高速的数据采集、分析及显示。例如DT9810是一种基于USB接口的经济型袖珍测试仪,它配备应用软件,可以为用户提供非常容易使用的示波器、图表记录器、电压表、文件阅读器、数字I/O和计数/定时器等功能。简单的安装软件后将采集模块连到计算机USB接口并将测量信号连接到采集模块的输入端,最后运行应用软件即可。但是国外USB接口的数据采集产品价格普遍比较昂贵。
2.2 NI-VISA简介
NI-VISA(Virtual Instrument Software Architec-ture,以下简称为“VISA”)是美国国家仪器NI(NationalInstrument)公司开发的一种用来与各种仪器总线进行通信的高级应用编程接口。VISA总线I/O软件是一个综合软件包,不受平台、总线和环境的,可用来对USB、GPIB、串口、VXI、PXI和以太网系统进行配置、编程和调试。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设备是指除了明确符合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 resource name的设备的连接;
ViProperty,VISA设备的属性子节点,可以设置端点或传输方式;
ViWrite,向VISA resource name指定的设备写入数据;
ViRead,从VISA resource name指定的设备读出数据;
ViClose,结束设备读写并关闭与指定设备的连接。
(3)USB RAW设备读写的操作
对于USB控制芯片CH375B,其USB\\VID_4348&PID_5537,Model Name:wch.cn,Manufacture Name:wch.cn。依据芯片资料运用NI的DDW创建inf文件,调试、安装程序后设备显示正常,为USB-RAW:
2.3 LabVIEW及其调用VISA的条件
LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是NI公司开发的一种基于图形程序的程语言。用户利用创建和调用子程序的方法编写程序,使创建的程序模块化,而且程序编制简单、直观。一个LabVIEW程序分为3部分:前面板、框图程序和图标/线端口。前面板用于模拟真实仪器的前面板;框图程序利用图形语言对前面板上的控件对象(分为控制量和指量两种)进行控制;图标/接线端口用于把LabVIEW程定义成一个子程序,从而实现模块化编程。
2.4 USB-RAW设备读写的操作次序
USB RAW设备的读写次序如下图所示:
图USB-RAW读写时序
2.5 LabVIEW上位机设计
整个应用程序的主框架使用了WHILE循环来进行不断的查询。在程序的编写过程中,采用了类似Windows程序中的事件驱动机制, LabVIEW提供了这样的结构---事件结构。各个消息的产生利用了各种界面控件并由Event Structure事件结构给出。程序基本框图如下图所示:
对于数据接收区作如下设计:
数据波形显示模块如下:
为了便于说明USB操作次序,把上图中事件结构展开,有下图所示的具体USB操作次序。
打开VISA设备:VISA resource name选择VISA设备接口;发送数据:首先判断是否为USB Raw设备,是则从USB RAW设备发送数据;接收数据:向USB RAW写入数据,同时通过数据接收区写入数据,在数据接收区显示数据;关闭VISA:即数据发送接收完毕后关闭VISA设备。这里在发送数据阶段设置了USB RAW属性节点,Select Property选择的是Interface Type,与下面的结合达到判断设备的类型。
如下图,为基于LabVIEW的USB接口上位机前面板:
前面板的左上角是打开/关闭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)。