微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于USB的LDT实时数据采集系统设计

基于USB的LDT实时数据采集系统设计

时间:04-14 来源:互联网 点击:

  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等,完成了高精度数据采集和高速数据传送。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top