USB数据采集系统中DMA数据传输的实现
88内部缓存到计算机的DMA传输由USB高速设备控制器内部的DMA引擎和EP3批量传输配合完成。为了达到较高的数据传输速度,EP3批量传输采用自动传输模式。DMA引擎将LPC2888内部缓存数据传输到USB设备控制器内部FIFO缓存中,当FIFO获得的数据达到设定的大小时将自动封包由EP3传输到PC机。同时,当FIFO中数据为空时,控制器将自动启动DMA引擎继续传输数据。该环节的DMA传输过程完全由USB高速设备控制器硬件实现,程序中只需更改DMA源地址寄存器并设置使能控制寄存器即可启动一次DMA传输。
2.3 两个DMA传输环节的协调
系统中利用GPDMA控制器产生的半满和全满中断信号协调两个DMA对同一个缓存空间的操作,实现了LPC2888对整个数据传输过程的协调控制。当DMA通道3工作时,采样数据从CPLD传输到buffer1,同时USB高速设备控制器对buffer2中的数据进行DMA操作;当DMA通道5工作时,采样数据传输到buffer2,USB高速设备控制器对buffer1中的数据进行操作。如图5中LPC2888程序流程所示。
图5 LPC2888程序流程
3、上位机软件设计
系统上位机软件包括两个部分:设备驱动程序和系统应用程序。开发USB设备的一个关键问题在于设备驱动程序的编写。传统的开发工具是微软公司提供的设备驱动开发工具包:Windows DDK(Device Driver Kits),以及由第三方公司基于DDK开发的驱动程序开发工具包:WinDriver或DriverWorks。DDK基于汇编语言的编程方式和内核模式的调用,对于没有深厚的操作系统原理和编程水平的人员来说,任务相当艰巨。本文使用美国国家仪器NI (National Instruments)公司开发的NI-VISA(Virtual Instrument Software Architecture)控制USB设备,直接配置VISA生成设备驱动程序,避开了以往开发USB设备驱动程序的复杂性,同时直接使用虚拟仪器软件设计平台LabWindows CVI开发系统应用程序,缩短了开发周期。
3.1 使用NI-VISA开发USB设备驱动程序
NI-VISA是NI公司开发的一种用来与各种仪器总线进行通信的高级应用编程接口。VISA总线I/O软件是一个综合软件包,它不受平台、总线和环境的限制,可用来对USB、GPIB、串口、PCI、VXI、PXI和以太网系统进行配置、编程和调试。使用VISA可以很容易地实现计算机应用程序和USB设备之间的连接,降低了设备驱动的开发难度。
VISA提供了两类函数供应用软件调用,USB INSTR设备与USB RAW设备。USB INSTR设备是符合USBTMC(USB测试测量类)协议的USB设备,可以通过使用USB INSTR类函数控制,通信时无需配置NI-VISA;而USB RAW设备是指除了明确符合USBTMC规格的仪器之外的任何USB设备,通信时要配置NI-VISA。经过配置后,VISA自动创建好设备驱动文件:inf文件和PNF文件。当相应的USB设备连接到计算机时,操作系统将自动安装该设备驱动并识别该设备。
3.2 系统应用程序设计
使用NI-VISA开发的USB设备可以在LabVIEW和LabWindows CVI中直接调用,其中有相应的VI子节点和库函数对设备进行操作。本系统采用LabWindows CVI开发数据采集系统应用程序。对设备的操作遵循下面的原则:首先打开设备,然后可以对设备进行读写、设置设备属性等操作,最后要关闭设备。目前应用程序设置有两种工作模式:示波器模式和连续采集存储模式。示波器模式每隔一定的时间间隔启动一次采集,采用模拟电平触发,采样长度固定,采样结果波形实时显示。连续采集存储模式启动采集后,系统将采样结果实时地存储到数据文件中。停止采集后,应用程序打开数据文件对采样结果进行波形显示、数据处理等操作。系统应用程序界面如图6所示。
4、系统测试结果
本文对该系统主要从以下四个方面进行了测试。
1)将CPLD内部逻辑设定为传输固定数据,如0xAA55。系统在连续采集存储模式下工作,获得数据文件。采用二进制文件编辑软件UltraEdit查看数据文件,其中所有采样点结果均为0xAA55。验证了数据传输过程的正确性。
2)将CPLD内部逻辑设定为传输每次增1的数据,获得采样数据文件进行查看。得到采样点结果为递增的数据,每次增量为1。验证了数据传输过程没有丢失采样点,保证了数据传输过程的可靠性。
3)将CPLD内部逻辑设定为传输AD采样结果。系统工作在示波器模式下,实时查看采样结果波形。调整输入模拟信号幅值、频率和波形,分别得到相应的采样结果波形。验证了AD转换环节的正确性。图6所显示被采样信号为250Hz正弦信号,峰峰值5V,采样速率1MS/s。
图6 系统应用程序界面
4)USB接口数据传输速度测试。这里采用总线分析测试软件Bus Hound测试系统的数据传输速度。该软件可以观察USB设备的工作情况,读取
- 实现WUSB设备控制器的设计考虑因素(09-12)
- 基于USB2.0的高速无线数传接收设备的数据接收存储方法(09-09)
- 四种短距离无线监控解决方案的性能对比(09-16)
- Wibree:一个可供选择的新无线联网技术(11-07)
- TI 单芯片手机多媒体电话解决方案(12-01)
- 蓝牙技术硬件实现模式分析(01-11)