kaiyun官方注册
您所在的位置: 首页> 测试测量> 设计应用> 基于USB接口的数据采集系统设计
基于USB接口的数据采集系统设计
王宝珠, 杨 永, 林永峰, 常秀颖
河北工业大学 信息工程学院, 天津 300401
摘要:设计了基于USB2.0接口的数据采集系统。系统硬件主要由信号调理电路、USB2.0芯片CY7C68013及A/D转换器MAX125组成。软件部分主要包括固件设计、驱动程序设计和应用程序设计三部分。
中图分类号:TN919
文献标识码:B
Design of data acquisition system based on USB interface
WANG Bao Zhu, YANG Yong, LIN Yong Feng, CHANG Xiu Ying
College of Information Engineering, Hebei University of Technology, Tianjin 300401, China
Abstract:A data acquisition system based on USB2.0 is designed. In the hardware design part, signal processing circuit、USB2.0 serial chip CY7C68013 and A/D convertor MAX125 are included. The software part mainly consists of three parts: firmware design, driver program design and application program design.
Key words :universal serial bus; speech signal; general programmable interface

随着大规模集成电路与计算机技术的飞速发展,数据采集在语音处理、智能仪器、工业自动化及生物医学工程等众多领域中的地位日益突出,并且对数据采集的各项技术指标要求越来越高。传统的数据采集卡主要有PCI卡或者ISA卡,这些采集卡都存在着各种各样的缺陷,比如传输速度慢、不支持热插拔、安装不方便、受计算机地址、中断和插槽的限制,可扩展性差等[1]。
近年来,USB接口以其传输速度快、成本低、可靠性高、支持即插即用和热插拔等优点[2],迅速成为数据传输的主流。因此,开发这种基于USB2.0的高速数据采集系统,代表了现代数据采集和传输的发展趋势,必将被越来越多的用户所接受。
1 系统工作原理与硬件结构
基于USB接口的数据采集系统的硬件部分主要包括信号调理电路、A/D转换电路、USB控制电路三部分。PC机端的应用程序通过USB主机发送控制信号,通知CY7C68013开始数据采集。当CY7C68013接收到控制信号以后,通过GPIF模式发送控制波形到MAX125,控制其开始的数据转换。当MAX125接收到控制信号以后,开始进行数据采集。采集完成后,在USB主机控制器的控制下,MAX125把转换后的数字信号发送到CY7C68013,最后通过USB总线把采集到的数据发送到PC机,并进行相应的处理。
系统硬件框图如图1所示。


1.1 信号调理电路和电源电路
拟电压范围为-5 V~+5 V,所以在输入信号进入之前必须进行相应的处理。本设计所采集的语音信号的电压范围是0~30 mV,初步调理之后的电压范围为0~2 V,为了得到所需的增益,采用同相输入放大电路对初步调理后的电压放大。完成电压转换后,还必须由低通滤波器滤除高频信号,在本设计中,采用4阶巴特沃斯滤波器。滤波电路和放大电路所采用的放大器为OP07,其输入电压范围为±3 V~±22 V。本设计采用开关电源供电,提供的输出电压为±5 V、12 V,其中,MAX125需要5 V的数字电源和±5 V的模拟电源工作,运算放大器的供电电压为5 V和-5 V,而系统中USB2.0芯片采用3.3 V供电,为此,需要电源转换模块以获得系统所需要的电源电压值,其中5 V转3.3 V电压用到AS1117-3.3系列芯片。
1.2 USB控制电路
USB2.0传输芯片采用CYPRESS公司的CY7C68013A-56PIN,芯片的商标号是FX2。EZ-USB FX2微处理器是世界上第一款集成USB2.0的微处理器,具有增强型的8051内核性能、集成度高、方便灵活的软配置和快捷的软件开发工具等主要特性[3]。该芯片的内部结构如图2所示,其中主要包括USB2.0收发器、串行引擎(SIE)、增强型的8051内核、16 KB的RAM、4 KB的FIFO存储器、I/O接口、8位数据总线、16位地址总线和通用可编程接口(GPIF)。


EZ-USB FX2是整个系统的控制核心,除了完成与上位机的USB总线通信,还要实现对A/D采样电路的控制。CY7C68013本身有一个4 KB的内部FIFO存储器,可以满足常规的数据采集的需求,更重要的是其内部还提供了一个用于控制FIFO存储器的通用可编程接口(GPIF),大大方便了用户的需求[4],而且在GPIF的控制下,内部的FIFO利用其高速缓冲区可以在不需要固件的参与下与USB之间进行自动高速通信。GPIF是一个内置接口控制器,用来取代外接的控制逻辑,可以工作在内部时钟(30 MHz或48 MHz),也可以由外部时钟驱动(5 MHz~48 MHz)。GPIF的核心实际上是一个可编程状态机,最多可产生6个控制信号和9位地址总线。4个用户定义的波形描述符控制这个状态机,一般来讲,有单次读取、单次写入、连续读取、连续写入4个波形[5]。在GPIF模式下,读和写的操作都是从EZ-USB的角度来说的。即一个读波形数据传输表示数据从外部逻辑传输到EX-USB的内部FIFO,而一个写波形数据传输表示数据传输从EZ-USB内部的FIFO发送到外部逻辑。FX2用4个波形描述符来控制各个状态,这些波形描述符可动态地配置给任何一个端点FIFO。配置后GPIF将依据波形描述符产生相应的逻辑控制CTL及握手信号RDY来和外界接口,以满足向FIFO读写数据的需要。GPIF的数据总线可以是8位,也可以是16位,本设计采用16位数据总线。
1.3 硬件连接图
EZ-USB FX2接口芯片和MAX125芯片的连接图如图3所示。


2 系统软件设计
 系统的软件设计主要包括固件设计、驱动程序设计和应用程序设计3部分。
2.1 固件程序设计
固件程序是整个程序设计的核心,它主要负责处理PC机发送来的各种USB设备请求,并与外围电路进行交换,存放在主机上,当系统上电或连接时将其自动下载到芯片的RAM中,并由8051执行。固件程序主要包括设备初始化和GPIF波形控制。固件程序流程如图4所示。


USB的固件程序是由main主函数处开始执行的,在主函数中,主要的初始化有:初始化休眠模式、远程呼唤和自供电;初始化用户设备。其中设备初始化包括FX2工作模式的配置和数据采集参数的配置。FX2工作模式配置主要包括时钟模式和端点配置,用到的寄存器有CPUCS和EP2CFG。端点0作为控制传输,端点2作为输入端点,传输方式为批量传输。这部分程序主要位于TD_Init( )中,此外还包括对生成的GPIF.C中的GPIF寄存器的初始化函数GPIFInit()的调用。
GPIF编程主要包括GPIF工作模式的初始化、GPIF波形描述符配置、GPIF触发三部分内容。GPIF工作模式初始化主要是对寄存器IFCONFIG、EP2FIFOCFG进行配置,即IFCONFIG=0xFA,EP2FIFOCFG=0x09。GPIF对MAX125的控制是按照GPIF波形描述符所表达的时序进行的。根据MAX125提供的读写时序,本系统利用CYPRESS提供的开发工具GPIF Designer设计了GPIF波形描述符。GPIF触发过程是在TD_Poll()中实现的,其中写AD控制字波形的代码为:XGPIFSGLDATLXH=gdata[13:8],XGPIFSGLDATLXL=gdata[7:0];启动GPIF FIFO读传输的代码为:GPIFTRIG=GPIFTRIGRD|GPIF_EP2。
2.2 驱动程序设计
设备驱动程序的主要作用是使操作系统能够识别USB设备,并建立起主机和设备之间的通信。USB驱动程序采用WDM驱动模型[6],支持即插即用功能。在WDM驱动程序模型中,每个硬件设备至少有两个驱动程序。其中一个驱动程序为功能驱动程序,即硬件设备驱动程序,它了解使硬件工作的所有细节,负责初始化I/O操作、处理I/O操作完成时所带来的中断事件,并为用户提供一种设备适合的控制方式。另一个为总线驱动程序,由操作系统提供,它位于USB功能驱动程序的下面,负责管理硬件与计算机的连接。
在Windows操作系统下,开发WDM驱动程序可以选择DDK开发工具。主要有4个驱动例程:入口例程、即插即用例程、分发例程以及电源管理例程。
 入口例程,即DriverEntry例程,由操作系统的I/O管理器在设备驱动功能加载时进行调用,主要负责WDM驱动程序的初始化。
 即插即用例程实现USB设备的热插拔和动态配置。当设备与计算机连接时,系统自动识别并调用其DriverEntry例程,自动选择并加载合适的驱动程序。当设备从系统中移除时,自动处理相应的清除工作。其驱动例程主要有两个:AddDevice例程和IRP_MJ_PNP例程。AddDevice例程用于完成设备的添加。IRP_MJ_PNP例程主要负责处理系统即插即用管理器发出的PnP信息,包括启动设备、停止设备、删除设备等。
 分发例程用于处理各种I/O请求,每个分发例程都对应一个Win32函数。常用的分发例程主要有IRP_MJ_CREATE例程和IRP_MJ_CLOSE例程。
 电源管理例程负责设备的挂起与唤醒。
2.3 应用程序设计
 上位机应用程序给用户提供一个操作采集系统的界面,将采集到的数据以多种方式显示给用户,用户也可以对采集到的数据进行分析处理。应用程序采用Visual C++集成开发环境,利用MFC编程,主要功能有:开启和关闭USB设备、检测USB设备、设置USB设备传输管道、设置数据采集端口、实时地从USB接口采集数据、显示并分析数据。应用程序流程图如图5所示。


应用程序使用Win32的API函数CreateFile()来创建和打开设备,并返回该设备的句柄。当对设备进行读取时,首先调用打开并获得指定的USB设备的句柄,然后对指定管道进行复位,准备接收数据,然后启动接收数据线程。应用程序通过使用标准的Win32 API函数DeviceIoControl()调用驱动程序中定义的宏代码IO_PICUSB_
CTRL_READ来执行这部分操作,而驱动程序与设备之间的通信中,DeviceIoControl()调用被转化成一个带有IRP_MJ_DEVICE_CONTROL功能代码的IRP。关闭USB设备需调用CloseHandle()函数, 其调用方式为CloseHandle(hDevice),其中hDevice为在调用CreateFile()函数时返回的设备句柄。
3 试验结果与分析
图6为本数据采集系统在批量传输下的应用程序界面。图中曲线是对模拟语音信号采集生成的波形图。实验表明,该基于USB2.0接口的数据采集系统可实现对语音信号的采集,传输速度能达到30 Mb/s,具有很强的抗干扰性,完全满足设计和使用要求。在保存数据和退出应用程序前,应先停止采集。保存数据时,通过在“保存”栏中选择对应的选项,就可以保存数据。


本文所设计的基于USB2.0接口的数据采集系统具有8路输入14位分辨率的性能,可满足语音处理、工业自动化及生物医学工程中心电信号等领域中大多数场合的数据采集要求。不仅克服了传统采集系统的缺陷,而且充分利用USB优点,提高了传输速度,给用户带来许多方便。本文的创新点在于采用USB接口进行微处理器与上位机之间的通信,并结合CY7C68013特有的GPIF编程技术,有效提升了整个系统数据采集速率,在实际应用中取得了良好的效果。
参考文献
[1] 肖忠祥.数据采集原理[M].西安:西北工业大学出版社,2001.
[2] 边海龙.USB2.0设备的设计与开发[M].北京:人民邮电出版社,2004.
[3] 钱峰.EZ-USB FX2单片机原理、编程及应用. 北京:北京航空航天大学出版社,2006.
[4] 尹伟,娄淑琴.基于GPIF模式的USB接口电路的设计和实现[J].仪器仪表用户,2008(2):61-62.
[5] Cypress Semiconductor Corporation.EZ-USB FX2 technical reference manual[Z].2001.
[6] 胡文静,陈松.基于EZ-USB芯片CY7C68013的驱动程序设计[J].计算机应用研究,2005,22(9):221.

此内容为AET网站原创,未经授权禁止转载。
Baidu
map