微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于USB总线的数据采集设备的设计与实现

基于USB总线的数据采集设备的设计与实现

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

应的操作,以完成主机的传输请求。

3 设备驱动程序设计
USB设备驱动程序的设计是基于WDM(Windows Driver Model,Windows驱动程序模型)的4。WDM采用分层驱动程序模型,对于USB设备来说,可分为USB总线驱动程序和USB功能驱动程序(见图2)。

USB总线驱动程序由操作系统提供,它位于USB功能驱动程序的下面,负责与实际的硬件打交道,实现烦琐的低层通信。USB功能驱动程序由设备开发者编写,位于USB总线驱动程序的上面,不与实际的硬件打交道,而是通过向USB总线驱动程序发送包含URB(USB Request Block,USB请求块)的IRP(I/O Request Packet,I/O请求包),来实现对USB设备信息的发送或接收。采用这种分层驱动程序的设计方法有两个优点:(1)多个USB设备可以通过USB总线驱动程序来协调它们的工作;(2)编写分层驱动程序较之编写单一驱动程序相对简单,且可以节省内存和资源,不易出错。 USB设备驱动程序的工作原理可以通过图2简单描述。

若应用程序想对设备进行I/O操作,它便使用Windows API 函数(如DeviceloControl 函数)对WIN32子系统进行WIN32调用。此调用由I/O系统服务接收并通知I/O管理器,I/O管理器将此请求构造成一个合适的I/O请求包(I/O Request Packet,IRP)并把它传递给USB功能驱动程序。USB功能驱动程序接收到这个IRP以后,根据IRP中包含的具体操作代码,构造相应的USB请求块并把此URB放到一个新的IRP中,然后把此IRP传递到USB总线驱动程序,USB总线驱动程序根据IRP中所含的URB执行相应的操作(如从USB设备读取数据),并把操作结果通过IRP返还给USB功能驱动程序。USB功能驱动程序接收到此IRP后,将操作结果通过IRP返还给I/O管理器,最后I/O管理器将此IRP中操作结果返还给应用程序,至此应用程序对USB设备的一次I/O操作完成。

USB功能驱动程序除负责处理应用程序的I/O请求外,还要处理PnP管理器发送给它的PnP请求(如设备启动请求IRP_MN_START_DEVICE,设备删除请求IRP_MN_REMOVE_DEVICE等)。通过对这些PnP请求的处理,USB功能驱动程序可支持设备的热插拔和即插即用功能。
驱动程序的入口函数是DriverEntry( ),所有对各种IRP的处理例程都在此入口函数中做出定义。
开发USB设备驱动程序的工具有Microsoft公司的Win98DDK,Compuware公司的Numega DriverStudio等。笔者在实际开发中使用了Win98DDK。

4 应用软件的设计

用户态的软件设计由两个部分组成:动态链接库和应用程序。动态连接库负责与内核态的USB功能驱动程序通信并接受应用程序的各种操作请求,而应用程序负责对所采集的数据进行实时显示、分析和存盘。

动态链接库的工作原理如下:当它收到应用程序开始采样的请求后,便创建两个线程:采样线程和显示存盘线程。采样线程负责将采集数据写到应用程序提交的内存;而显示存盘线程由多媒体定时器控制(每隔一段时间多媒体定时器就调用一次此线程),此线程负责给应用程序发送显示和存盘消息。当应用程序接收到此消息后,便从它提交的内存中读取数据并显示和存盘。此处需要注意的是采样线程和显示存盘线程在读写应用程序提交的内存时要保持同步(如当采样线程正在向内存进行写操作时显示存盘线程就不能对此段内存进行读操作,否则就有可能导致读写错误)。保持线程同步的方法很多,如互斥量(Mutex)、信号量(Semiphore)和事件(Event)。此处使用了互斥量。

USB总线的特点使其非常适合于作为医疗仪器与主机之间的通讯接口,实现主机和医学仪器之间的简单、快速和可靠的连接。
基于USB总线的医学数据采集设备,在实际应用中取得了良好的效果。同时,它也为数据采集提供了一种新颖的、方便的和可靠的解决方案。

参考文献
1 USB1.1. Universal serial bus specification S
2 曾乐朋,高小榕,李明毅. 12导联同步心电采集测量系统及QT/QTd分析J. 清华大学学报2000;4095~8
3 李全政 高小榕 欧阳婧. 胸阻抗信号中的呼吸波的去除J. 清华大学学报200040 9 13~16
4 Chris Cant著,孙义译.Windows WDM 设备驱动程序开发指南M. 北京:机械工业出版社 2000

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

网站地图

Top