用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

基于USB接口的数据采集系统设计

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 22:39:18
2.4.2 驱动程序设计

驱动开发工具有DDK和第三方开发工具。其中DDK开发难度最大,第三方开发工具有DriverStudio和Windriver等。DriverStudio难度适中,而Windriver则属于应用层驱动开发,难度小,但效率低,并存在发布问题。

DDK驱动程序开发工作包括:开发环境设置(VC编译环境)[5]、驱动程序设计[6]、安装文件(INF文件)设计。

驱动程序设计采用WDM(Windows Drive Mode)。WDM设备驱动程序提供了一个参考框架,大大降低了由DDK书写驱动程序带来的难度。

D12驱动使用的例程包括:DriverEntry、AddDevice、DispatchPnp、DispatchRead、DispatchWrite和DispatchDeviceControl例程, 以下是D12的WDM驱动程序函数:

DriverObject->MajorFunction[IRP_MJ_CREATE] = D12_Create;

DriverObject->MajorFunction[IRP_MJ_CLOSE] = D12_Close;

DriverObject->DriverUnload = D12_Unload;

DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL;

=D12_ProcessIOCTL;

DriverObject->MajorFunction[IRP_MJ_WRITE] = D12_Write;

DriverObject->MajorFunction[IRP_MJ_READ] = D12_Read;

DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL;

DriverObject->MajorFunction[IRP_MJ_PNP]=D12_Dispatch;

DriverObject->MajorFunction[IRP_MJ_POWER]=D12_Process-PowerIrp;

DriverObject->DriverExtension->AddDevice=D12_PnPAddDevice;

驱动程序与应用程序和硬件之间通信都是IRP(I/O请求包)完成的。IRP_MJ_PNP主要是实现USB即插即用,例如设备的添加、删除和资源的分配;IRP_MJ_POWER实现电源管理,例如设备的挂起和唤醒;IRP_MJ_CREATE(创建)、IRP_MJ_CLOSE(关闭)、IRP_MJ_

DEVICE_CONTROL(设备控制)、IRP_MJ_WRITE(读)和IRP_MJ_READ?穴写?雪是主要完成数据通信的函数,实现管道的创建、关闭和数据读写。其中设备控制具有输入输出缓冲区,可实现读和写功能;AddDevice和DriverUnload实现设备管理,在设备添加和卸载时,创建和删除设备,以及管理资源分配。

驱动程序通过安装文件(.inf文件)中PID(产品识别号)和VID(厂商识别号)识别USB设备。

2.4.3 应用程序设计

主机应用程序的编写使用VC编译环境中的API函数实现。

应用程序的编程方法与串口编程类似。首先必须查找设备,打开设备的句柄;然后进行读写和控制操作;最后是关闭设备句柄。为了提高效率,可使用多线程技术实现读写。

应用程序通过GUID(注册表驱动唯一识别号)查找驱动程序。javascript:window.open(this.src);" style="cursor:pointer;"/>

2.5 调 试

首先是固件调试,可用仿真机完成,驱动开发工具Windriver也是很好的固件调试工具,例如测试标准请求、厂商请求和管道读写。其次是驱动调试,这是USB接口开发最困难的部分,调试工具可用DriverStudio中Softice工具和文献[6]中DebugPrint跟踪工具,监视工具Bus Hound可监视USB的实际数据传输情况。需要注意的是,驱动调试必须在应用程序正确调用的前提下。

2.6 USB传输速度

主机每过1ms发出一个SOF(起始帧),四种USB传输类型都分布在1ms的帧内。所以为了提高传输速度,可加大端点缓冲区的大小和使用双缓冲(有些芯片还有四缓冲),在1ms内尽量多传输数据;采用DMA传输方式,USB设备不通过微控制器直接完成数据传输,当然相应硬件和软件开发的难度增加;如果单片机数据加载速度较慢,则可考虑使用高速指令的单片机;如果速度要求在1MB/s以上,则考虑采用USB2.0接口芯片。

本文以USB接口程序在16路温度采集系统中的应用为例,介绍了USB的接口标准和程序设计。该系统经过一段时间运行,稳定可靠,目前已广泛应用于航空电子设备的测温系统。




上一页  [1] [2] 

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:609.37500 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号