激光多普勒测量技术(LDT)具有精度高、动态响应快、测量范围大,非接触测量的特点,成为气体、流体测量的强有力的工具。近年来,它在固体测量领域得到了长足的发展,被广泛应用于固体表面的粗糙度、运动速度场、位移场、振动场等的精密测量。它的迅猛发展对信号的采集提出了越来越高的要求:高动态范围、低功耗、便于携带、能与计算机进行实时高速数据传输。针对这种要求,提出了一种基于USB的LDT实时数据采集系统。
USB(Universal Serial Bus)总线是由Intel,Com-paq,Microsoft,IBM,DEC,Northern Telecom等7家公司共同研制的一种针对PC的串行接口标准。它的热插拔、即插即用、连接简单、高带宽、可总线供电等优点几乎使其成为目前计算机外设的首选通信接口。
该文依据的是USB1.1协议规范,总线一共4根:5V电源线、地线及两根以差分形式驱动的数据线D+、D-。连接设备的电缆最长可达5 m,通过USB集线器以菊花链拓扑形式实现多达5级的拓扑连接,可外接127个USB设备。USB总线可以提供5V、500mA电流,并支持节约能源的挂机和唤醒模式。它规定的12Mbps传输速率,与一个标准的串行口相比,大约快出100倍,与一个标准并行口相比,大约快出10倍。
1、系统硬件设计
1.1硬件总体结构
USB实时数据采集系统硬件如图1-1所示。DSP控制器TMS320F240内部的模数转换模块包括两个独立的采样/保持电路和两个10位双积分型的转换器,16路vwin 输入通道,可同时转换2路信号。
16路模拟输入信号由多路模拟开关选择被检测信号接入A/D转换器,A/D转换的结果经TMS320F240写入FIFO存储器。
TMS320F240通过信号线IS选通USBN9603,将其作为DSP的I/O口访问。USBN9603的D+脚外接一个1.5K的上拉电阻,使其工作在全速方式下,USBN9603的MODE1、MODE2均接至地电位,设定USBN9603为非总线复用方式。操作时序是将地址线A0置高,将欲读写的地址从数据线D0~D7写入,然后将A0置低,读写D0~D7中的数据。
由DSP对A/D转换的结果进行FFT分析、小波分析等,并通过USBN9603与主机交换数据,接收控制命令。
1.2USBN9603控制器
目前市场上有两类USB接口控制器:一类是带USB接口的MCU,如Cypress的CY7C6xxxx第列、Intel的930xx系列等,嵌入了8051系列微控制器。其系统结构和指令集大家都比较熟悉,便于硬件开发和软件编程,然而开发工具较昂贵。另一类是专用接口控制器,如朗讯公司的USS820、国家半导体公司的USBN960x、PHILIPS公司的PDIUSBD11等,都留有与MCU、DSP的接口,搭配灵活。
USBN9603是一个支持USB1.1协议的节点控制器。具有静态模式和异步唤醒功能;5V/3.3V供电;具有一个双向的控制节点Endpoint0、3个发送端点、3个接收端点;具有两种模式的8位并行接口(复用模式和非复用模式);改进的DMA传输方式;串行接口引擎SIE,主要负责时钟恢复、EOP检测、位填充、位解填充、CRC编解码、组帧、拆帧、包类型识别及节点状态识别等。
2、系统软件设计
USB系统软件设计分为3个部分:USB外设端的固件、主机操作系统上的客户驱动程序以及应用程序。应用程序通过客户驱动程序与系统USBDI(USBDevice Interface)进行通信,由系统产生数据的传送动作,固件则响应各种来自系统的标准要求,完成各种数据的交换工作和事件处理。
2.1固件(firmware)设计
固件是指被固化到TMS320F240中的程序。它完成两个任务:控制A/D的采样和通过USB控制器与主机通信。USB有控制、中断、批量、等时等4种数据传输模式。其中控制传输用于传送一些系统控制命令,每个USB设备都必须有控制传输的通道;中断传输适用于鼠标等人工输入的设备使用;等时传输适用于对数据实时性要求较高的场合,如视频、音频数据,但其设备和进程的同步设计有较大难度,且它不能提供错误检查机制;批量传输能提供错误检查机制,适用于打印机、调制解调器等不定期传送大量数据的中速设备。
系统采用两种传输方式:控制传输和批量传输。控制传输用来实现位于主机上的USB总线驱动程序(USBD模块)以及编写的功能驱动程序对设备的各种控制操作;批量传输用来完成将采集数据从设备传送到主机。
2.2驱动程序设计
USB系统驱动程序采用分层驱动模型:USB设备驱动程序、USB函数层。其中函数层由通用串行总线驱动程序模块(USBD)和主控制器驱动程序模块(HCD)组成。它由Windows98提供,负责管理USB设备驱动程序和USB控制器之间的通信;加载及卸载USB驱动程序;与USB设备通用端点建立通信来执行设备配置、数据与USB协议框架和打包格式的双向转换任务。
USB设备驱动程序是开发USB外设的一个关键,它的设计是基于WDM(Win-dows Driver Model,Windows驱动程序模型)。目前,Win-dows98提供了多种USB设备驱动程序,但并不针对实时数据采集设备,需要Win-dows98/NT/2000 DDK开发包和SoftICE等调试工具。它可由4个模块实现:初始化模块、即插即用管理模块、电源管理模块以及I/O功能实现模块。
初始化模块提供一个Driver Entry入口函数,来对所有的I/O请求包IRP(I/ORequest Packet)处理例程作定义。电源管理模块负责设备的挂起与唤醒。
当USB设备上电时,主机会向USB控制器发送获得设备描述的命令,设备描述符是一个固定长度为18字节的数字序列,反映了该USB设备的基本属性。当USB控制器从USB总线检测到这一命令时,USB控制器以中断方式将此请求通知到TMS320F240。TMS320F240通过访问USB控制器的控制寄存器和数据寄存器,获得各种参数,向主机返回配置所包含的所有接口和接口所包含的所有端点的描述符。主机获得后,设备与主机的“握手”就初步完成了。
即插即用管理模块实现USB设备的热插拔及动态配置。当硬件检测到USB设备接入时,Win-dows98查找相应的驱动程序,并调用它的Driver En-try例程,即插即用管理器调用驱动程序的Add De-vice例程,告诉它添加了一个设备;然后,驱动程序为USB设备建立一个FDO(功能设备对象),在此处理工程中,驱动程序收到一个IRP-MN-START-DE-VICE的IRP,包括设备分配的资源信息。至此,设备被正确设置,驱动程序开始与硬件对话。当然,设备运行过程中,如果设备的状态发生变化(暂停、拔出等),即插即用管理器也同样发出相应的IRP,由驱动程序进行相应的处理。
I/O功能实现模块完成I/O请求的大部分工作。当应用程序提出I/O请求时,它调用Win32 API函数DeviceIoControl来向设备发出命令。然后,由I/O管理器构造一个IRP,并设置其MajorFunction域为IRP-MJ-DEVICE-CONTROL。USB设备驱动程序收到该IRP后,根据其中的控制码,构造相应的USB请求块,并把它放到一个新的IRP,此IRP被传递到USBD模块。USBD模块根据此IRP执行相应的操作,并把结果通过IRP返回给USB功能驱动程序。USB功能驱动程序接到此IRP后,将操作结果再通过IRP返回给I/O管理器。并由I/O管理器将结果最终返回给应用程序,至此,对USB设备的一次I/O操作完成。
2.3应用程序设计
PC主机是实时数据采集系统的中心,其基本功能有开启或闭合USB设备、检测USB设备、设置USB数据传输管道、设置A/D状态和数据采集端口、实时从USB接口采集数据、显示数据。
此外,具有数据分析功能包括数字滤波模块、线性化处理模块、解调模块、PLL锁相环倍频模块、标度变换模块、与下位机的通信模块、下位机的控制字生成模块和数据库的管理模块等几个部分。
3、结束语
为了提高设计质量,所设计的激光多普勒测量实时数据采集系统通过了测试USB外设功能的一系列软件如Bwqlinst,USBComp等,完成了高精度数据采集和高速数据传送。
责任编辑:gt
-
usb
+关注
关注
60文章
7936浏览量
264454 -
计算机
+关注
关注
19文章
7488浏览量
87847 -
数据采集
+关注
关注
38文章
6053浏览量
113618
发布评论请先 登录
相关推荐
评论