《电子技术应用》
您所在的位置:首页 > 模拟设计 > 业界动态 > 基于USB总线的实时数据采集系统设计

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

2009-04-13
作者:周振宇 谷海颖

    摘  要: 基于通用串行总线(USB)的实时数据采集系统的设计严格遵循USB1.1协议,充分体现USB便捷、易扩展、低成本、低干扰的特点。详细介绍系统的USB设备驱动程序、设备固件、应用程序的具体设计。 

    关键词: 通用串行总线  实时数据采集  设备驱动程序

 

    现代工业生产和科学研究对数据采集的要求日益提高。目前比较通用的是在PC或工控机内安装数据采集板卡,如A/D卡及422、485卡。这些数据采集设备存在以下缺陷:安装麻烦;价格昂贵;受计算机插槽数量、地址、中断资源限制,可扩展性差;在一些电磁干扰性强的测试现场,无法专门对其做电磁屏蔽,导致采集的数据失真。 

    通用串行总线(Universal Serial Bus,简称USB)是1995年康柏、微软、IBM、DEC等公司为了解决传统总线的不足推广的一种新型串行通信标准。该总线接口具有安装方便、高带宽、易扩展等优点,已经逐渐成为现代数据传输的发展趋势。基于USB的数据采集系统充分利用USB总线的上述优点,有效解决了传统数据采集系统的缺陷。 

1 系统硬件设计 

1.1 硬件总体结构 

    USB实时数据采集系统硬件模块包括A/D转换器、微控制器、USB通信接口和多路模拟开关。硬件总体结构如图1所示。 

1.2 USBN9602芯片 

    USB接口芯片采用National Semiconductor公司的一种专用芯片USBN9602。该芯片内部集成微处理器接口、FIFO存储器、时钟发生器、串行接口引擎(SIE)、收发器、3.3V电压转换器,支持DMA、微波接口,内部结构如图2所示。 

 

 

    微控制器通过8位的并行接口传送A/D采集的数据,存储在FIFO存储器中;一旦FIFO存满,SIE立刻对数据进行处理,其中包括:同步模式识别、并/串转换、位填充/解填充、CRC产生与校验、地址识别、握手响应与产生、USB特殊事件(Reset、Suspend、Resume)检测;最后由收发器通过数据线(D+、D-)传送数据至PC。上述过程严格遵守USB1.1协议。USBN9602与89C52的具体实现电路如图3所示。 

 

 

2 系统软件设计 

    系统软件包括USB设备驱动程序、设备固件、应用程序。 

2.1 USB设备驱动程序开发 

    USB系统驱动程序采用分层结构模型:较高级的USB设备驱动程序和较低级的USB 函数层。其中USB函数层由两部分组成:较高级的通用串行总线驱动程序模块(USBD)和较低级的主控制器驱动程序模块(HCD)。它们的层次关系如图4所示。 

 

 

    在上述USB分层模块中,USB函数层(USBD及HCD)由Windows98提供,负责管理USB设备驱动程序和USB控制器之间的通信;加载及卸载USB驱动程序;与USB设备通用端点(endpoint)建立通信来执行设备配置、数据与USB协议框架和打包格式的双向转换任务。目前Windows98提供了多种USB设备驱动程序,但并不针对实时数据采集设备,因此需采用DDK开发工具设计专用的USB设备驱动程序。可以由四个模块实现:初始化模块、即插即用管理模块、电源管理模块以及I/O功能实现模块。 

    初始化模块提供一个DriverEntry入口点来执行大量的初始化函数。 

    即插即用管理模块实现USB设备的热插拔及动态配置。当硬件检测到USB设备接入时,Windows98查找响应的驱动程序,并调用它的DriverEntry例程,PnP管理器调用驱动程序的AddDevice例程,告诉它添加了一个设备;然后,驱动程序为USB设备建立一个FDO(功能设备对象),在此处理过程中,驱动程序收到一个IRP_MN_START_DEVICE 的 IRP,包括设备分配的资源信息。至此,设备被正确配置,驱动程序开始与硬件进行对话。当然,在设备运行过程中,如果设备的状态发生变化(拔除、暂停等),PnP管理器也同样发出相应的IRP,由驱动程序进行相应的处理。 

    电源管理模块负责设备的挂起与唤醒。 

    I/O功能实现模块完成I/O请求的大部分工作。当应用程序提出I/O请求时,它调用Win32 API函数DeviceIoControl来向设备发出命令。然后,由I/O管理器构造一个IRP并设置其MajorFunction域为IRP_MJ_DEVICE_CONTROL。USB设备驱动程序收到该IRP后,取出其中的控制码,并利用一个开关语句来找到对应的例程入口。 

2.2 设备固件(firmware)设计 

    设备固件是设备运行的核心,采用汇编语言设计。其主要功能是控制芯片USB9602接受并处理USB驱动程序的请求(如请求设备描述符、请求或设置设备状态、请求设备设置、请求或设置设备接口等共10种USB1.1标准请求);控制芯片USB9602接受应用程序的控制指令;控制A/D模块的数据采集;通过USB9602存储数据并实时上传PC。其程序主框图如图5所示。

 

 

    在图5中,ALT事件表示硬件检测到USBN9602处于下列状态:Reset、Resume、Suspend,由ALTEV寄存器汇报并产生中断。 

2.3 应用程序设计 

    PC机或工控机应用程序是数据实时采集系统的中心,采用Visual C++ 5.0编程。其功能主要有:开启或关闭USB设备、检测USB设备、设置USB数据传输管道(pipe)、设置A/D状态和数据采集端口、实时从USB接口采集数据、显示并分析数据。USB程序主框图如图6所示。 

 

 

    由于USB9602提供的FIFO不超过64字节,当FIFO存满后,USB9602自动将数据打包即时请求读入数据,由SIE自动发送数据包。程序获得数据后,需延迟至下组数据包准备完毕,从而保证程序与设备采集频率同步。另外,当系统启动A/D模块后程序持续执行,并采用多线程编程发出停止采集和关闭USB设备的命令。 

3 基于USB总线的数据实时采集系统特点 

    基于USB总线的数据实时采集系统设计上严格遵循USB1.1协议,其性能特点如下: 

    (1)安装方便,支持即插即用。安装时可在不关机不打开机箱的情况下将设备插入USB插槽,运行驱动程序即可,以后可直接对设备热插拔。 

    (2)易扩展。最长传输距离5m,采用Hub或中继器可达30m;最多对外可接127个设备。 

    (3)供电方便。USB总线直接利用主机电源为外设提供最大5V 500mA的电流,系统无需另备电源。 

    (4)电磁干扰影响极小。由于本产品放置在计算机机箱外,不受箱内的板间电磁干扰。如在电磁干扰较严重的环境下,可以为该产品专门设计屏蔽方案。 

    (5)性价比高。远优于传统的实时数据采集系统。 

    (6)实时采集,实时显示。 

参考文献 

1 Compaq, Intel, Microsoft, NEC. Universal Serial Bus Specification. Revision 1.1, September 23, 1998 

2 National semiconductor. USBN9602 (Universal Serial Bus)Full Speed Function Controller With DMA Support.November 1998 

3 史 波,田 凯.通用串行总线USB技术概述.信息技术,2001; 4. 

4 毛德柱,周 凯.智能寻位加工技术中USB接口数据传输方式的应用研究.电子技术应用, 2000;26(3)

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。