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

发布者:鑫森淼焱最新更新时间:2012-03-14 来源: dzsc关键字:USB总  数据采集 手机看文章 扫描二维码
随时随地手机看文章

随着医学信息网络化的需要,经常需要将各种医学仪器(如脑电图、心电图等)与主机相连,以便于从这些医学仪器获得所需的各种医学信息。同时,在需要的时侯还可以通过主机对这些医学仪器的操作进行控制。

传统的外设与主机的通讯接口一般是基于PCI总线、ISA总线或者是RS-232C串行总线。PCI总线虽具有高的传输速度(132Mbps),支持"即插即用"功能,但其缺点是插拔麻烦,且扩展槽有限(一般为5~6个)。ISA总线显然存在着同样的问题。RS-232C串行总线虽然连接简单,但其缺点是传输速度慢(56kbps),且主机的串行口数目有限。

USB(Universal Serial Bus,通用串行总线)是由Intel、Microsoft、IBM及NEC等共同制定的微机总线接口规范1。由于USB具有较高的传输速度(USB协议1.1支持的最高传输速度为12Mbps,而USB协议2.0支持的最高传输速度更是高达480Mbps),支持即插即用和热插拔功能,USB设备的连接电缆最长可达5 m,且可通过USB集线器进行层式星形拓扑连接(一台主机最多可连接127个USB设备,且可实现最多5级的拓扑连接),因此其非常适合作为主机和医学仪器之间的通信接口。

为便于临床上采集病人的某些生理信号(如心电信号,脑电信号等)23,设计了基于USB总线的医学数据采集设备,其最多支持32个通道的同步数据采集,最高采样率为1kHz,采样精度为16bit,主机的操作系统为Win98。主要完成了四个方面的工作:硬件设计、firmware(固件)设计、设备驱动程序设计以及应用软件的设计。

1 硬件设计
USB数据采集设备的硬件构成见图1。

从图1可知,32路模拟输入信号由多路模拟开关控制将其中的某一路信号接入串行A/D(选用B-B公司的ADS7809),A/D转换的结果经光电隔离后串行输出到移位寄存器,移位寄存器将此结果转为并行数据并写入FIFO存储器,80C52系统将数据从FIFO存储器中读出并通过USB控制器送到主机。

当前可供选择的USB控制器很多,如朗讯公司的USS820、国家半导体公司的USBN9602。另外,还有将微控制器和USB控制器集成在一起的芯片,如Intel公司的8x930Hx和8x930Ax,其中8x930Hx支持USB集线器功能。在实际开发中选择了朗讯公司的USS820,其主要特点是完全遵循USB协议1.1,支持12Mbps的全速传输,支持四种传输方式,提供8个端点(Endpoint) 且每个端点的传输类型、传输方向均可自由配置。另外,它还为每个端点提供两套FIFO数据缓冲区,总的数据缓冲区大小可达2240字节。

2 firmware设计

此处firmware(固件)是指被固化到89c52 E2PROM中的程序。firmware主要完成两个方面的工作:控制A/D的采样和通过USB控制器与主机通信。由于89C52系统控制A/D采样的工作非常简单,此处不做介绍。详细介绍89C52系统通过USB控制器与主机通信的工作。

因为89C52系统对USB控制器的操作是严格按照USB协议1.1进行的,因此先对USB协议1.1做一简单的介绍。按照USB协议1.1的规定,USB的传输方式分为4种:控制传输(Control transfer),块传输(Bulk transactiONs),中断传输(Interrupt transactions)和等时传输(Isochronous transactions)。控制传输主要用来完成主机对设备的各种控制操作(如获取设备的设备描述符,设置设备的USB地址等,也可以通过控制传输来定义自己对设备的控制操作,如设置采样参数、开始或停止采样等);块传输主要用来完成主机和设备之间的大批量数据传输,由于块传输在硬件级上对传输数据进行错误检测(若发生错误,它支持"重传"功能),因此它能保证数据传输的可靠性,块传输支持两个方向的数据传输(即主机到设备和设备到主机);中断传输用来完成设备到主机的少量数据传输,它只支持设备到主机方向的数据传输(中断传输跟实际的"中断"概念没有任何联系);等时传输主要用来完成主机和设备之间连续、实时数据的传输(如语音信号),同步传输不对传输数据进行错误检测,它主要保证数据的连续传输。另外,需要注意的是所有的USB传输事务均由主机启动,即USB总线采取主从式结构(master to slave)。

在实际开发中使用了两种传输方式:控制传输和块传输。控制传输用来实现位于主机上的USB总线驱动程序(USBD.SYS)以及编写的功能驱动程序对设备的各种控制操作,而块传输用来完成将采集数据从设备传送到主机。

USB控制器的工作原理可以简单地描述为:当USB控制器从USB总线检测到主机启动的某一传输请求时,USB控制器通过中断方式将此请求通知89C52系统。89C52系统通过访问USB控制器的状态寄存器和数据寄存器获得与此次传输有关的各种参数,并根据具体传输参数,对USB控制器的控制寄存器和数据寄存器进行相应的操作,以完成主机的传输请求。[page]

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

关键字:USB总  数据采集 引用地址:基于USB总线的数据采集设备的设计与实现

上一篇:DSP虚拟I2C总线软件包的设计及应用实例
下一篇:基于FPGA的PCI接口设计

推荐阅读最新更新时间:2024-05-02 21:57

基于ADμC812的在系统可编程数据采集电路的设计
1在系统可编程   在系统可编程(In System Programmable,ISP)技术使得使用者能够在目标系统中,或者在电路板上对可编程器件进行编程或反复编程。这个编程过程可在系统的开发、制造过程中甚至在应用现场进行。   在系统可编程器件的编程通常通过PC机实现。在编程过程中,器件无需从电路板上拔除,所需要的编程电压与器件的工作电压相同,不需要专门的编程器支持。 2ADμC812介绍 2.1ADμC812的总体介绍   ADμC812是一种把8位微控制器(指令集与8051微控制器兼容)和12位A/D转换器以及12位D/A转换器等外围电路集成在一块芯片上的12位数据采集集成电路,他的结构框图如图1所示。   
[单片机]
51单片机不适合做数据采集
想做一个简易数据采集卡。包含一个TLC1543(10位串行AD转换),一个51单片机以及其他一些小零件。关键是使用串行通信发送给计算机。由于我没有基础,是通过做这个设计来学习单片机的,所以对结果的预料不足。在我花费了很长时间做,到现在接近尾声时发现,要走自定协议的话51串行通信的速度跟不上!! 以下是我做过的两个通信测试实验: (1)不使用协议 我正确地把AD转换器与单片机相连,采集一个电压(例如3.2V)。我的程序大概如下: while(1) { TLC1543(); //进行AD转换 sent(); //把转换结果发送给计算机 } TLC1543是10位转换器,所以要用2个字节来保存。但我只发送高8
[单片机]
基于高精度数据采集板在LabVIEW平台实现VTE-MED海水淡化系统的设计
为了研究竖直蒸发管高温多效海水淡化(VTEMED)系统的工艺流程和关键工艺技术及稳定运行时的热工水力学参数影响等,清华大学核能与新能源技术研究院建立了大型双塔4效高温多效海水淡化实验装置。为了测量各部位的温度、压强及流量等热工参数,建立了基于虚拟仪器的海水淡化实验测控平台。使用高精度数据采集板及计算机等并在LabVIEW平台中实现了将传感器及热电偶的电压信号采集、输出、存储和分析。 1、 测量系统组成 VTE-MED海水淡化系统的实验回路是一个十分复杂的热工回路。需要测量和监控的热工水力学参数有流量、压力、温度等,共56通道,分布于系统的各个部位。图1就是用LabVIEW做的测量系统的示意以及部分热工参数分布图。 整个热工
[测试测量]
基于高精度<font color='red'>数据采集</font>板在LabVIEW平台实现VTE-MED海水淡化系统的设计
Profibus总线在增压器生产线中的应用
1 引言   现场总线是信息技术、网络技术的发展在控制领域的体现,是自动化技术发展的热点之一。因其具有数字化、开放性、分散性以及对现场环境的适应性等特点而获得了非常广泛的应用。目前,已逐渐成熟并对工业自动化进程形成影响的主要有PROFIBUS,HART,LONWORKS,FF等等。其中PROFIBUS总线是最为流行的现场总线技术之一,其产品广泛应用于工业、电力、能源、交通等自动化领域。PROFIBUS是德国于90年代初制订的国家工业现场总线协议标准,代号DIN19245。它是一种国际化的开放式现场总线标准,即EN50170欧洲现场总线标准。该标准为供应商和用户的投资提供了最佳的保护并确保供应商的独立自主性。PROFIBUS具体规
[工业控制]
数据采集系统基于AD转换芯片AD0809
提起LABVIEW,就不能不涉及到数据采集和控制。 曾经在网上辩论过LV是不是通用编程语言,NI的创始人的一篇文章的标题就是“LV是通用语言吗”,这的确很难说,说它是通用语言,因为它的确具备了通用语言的基本能力,但是只能说是基本的,但是对很多VC容易实现的东西,在LV中却是个问题,尤其是系统相关的一些操作,所以,我个人更愿意认为,LABVIEW是倾向于测量和控制的硬件工程师的语言,它是语言,而不是一般意义上的专用软件,所以,LABVIEW逐渐成为工科院校学生的基本课程。 数据采集是LV最擅长的领域,对于开发过 单片机 的人来说,数据采集是再熟悉不过的了,如果想真正了解数据采集,就必须从AD,DA,COUNTER等转换芯片开始,数据
[单片机]
<font color='red'>数据采集</font>系统基于AD转换芯片AD0809
智能传感器接口在数据采集中的优势
大多数模拟测量系统的系统架构都相对比较直接。这种架构的核心通常是主机处理器,用于控制并检索来自一个或多个 ADC 的数据。在信号链一端向 ADC 馈送数据的是主机控制的传感器。对上述系统进行分析,并明确在不影响性能的情况下需进行哪些优化,其实对我们来说可做的事情并不多。要确定功能块中需要集成哪些功能并不容易,很难直接控制传感器前端。此外,我们通常要根据一系列其他要求预先确定主机处理器,这主要是由存储器大小、CPU 速度等软件要求决定的。 对负责系统后端的模拟设计人员而言,通常只能对 ADC 进行优化。不过,这时数字接口基本已经不能变更了,这主要也是由主机处理器的要求决定的。当然,目前非常多的主机处理器都能实现极高的性能且具备
[工业控制]
带有红外接口的移动式温度数据采集仪的研制
    摘要: 介绍了基于单片机的移动式温度数据采集仪的硬件设计,串行红外接口的应用及用可视化编程工具VB6.0实现的WINDOWS界面的数据接收、处理软件。     关键词: 热电耦 温度测量 数据采集 红外串口通信 在电子工业中,随着整机集成度的提高和元器件的微型化、复杂化,在印制板上焊接元件时对各种焊接设备(波峰焊、回流焊、SMT等)内的温度工艺要求越来越高。这就需要一种可移动的温度数据采集仪器,能随传送带进入焊炉内,测量记录下不同焊点(印制板上的焊盘孔、过孔等)在焊炉内不同位置时的温度参数,并能将测量数据方便地传送给电脑,进行数据曲线的显示、分析和打印,以便制定和执行合适的工艺流程。 无线通信可以去
[网络通信]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved