×
单片机 > 单片机程序设计 > 详情

基于USB 2.0的高速数据采集卡在虚拟仪器中的应用

发布时间:2020-06-23 发布时间:
|
引言

  虚拟仪器,就是在通用计算机平台上,用户根据自己的需求定义和设计仪器的测试功能,与传统仪器相比,虚拟仪器在智能化程度、处理能力、性能价格比、可操作性等方面均具有明显的技术优势。

  本文将着重介绍一种新型优良的下位机—基于USB2.0的高速数据采集卡在虚拟仪器中的应用。

  本文重点分析的下位机即智能A/D,是虚拟仪器硬件设备中的关键环节。下位机通过特定接口接受来自上位机的指令并向上位机提供自身所处的状态:在收到采集指令后,对传感器发送的模拟电信号进行A/D采样以转化为数字信号,然后将数字信号通过USB接口传给上位机。

  本系统的下位机支持2个通道的传感器信号进行A/D转换,其最高采样效率为120MHz,采样转换精度为8位,系统采用了一个内含先进先出(FIFO)内存的USB2.0控制芯片,该内存用于存放A/D转换后的数据,使用FIFO可以有效地缓冲采集数据,减少频繁的指令传送,使上位机有更多的时间进行其他处理,并且不容易丢失数据。该下位机可以编程控制采集频率和采样增益,具有较大的灵活性。

基于USB2.0的高速

数据采集卡

硬件系统

  虚拟仪器硬件的核心部分是USB设备接口模块,其功能是由硬件和软件共同来完成的。USB接口示意图如图2所示。下面介绍一下主要功能模块器件的选择和功用。

ADC的选择

  本设计中选用了AD9059。该器件是8位单片双通道ADC,具有高速、高性能、低功耗及易使用等特性,60MSPS的编码速率和120MHz的最大功率模拟带宽使其在多路数据采样系统中表现出优秀的动态性能。大部分情况下,AD9059仅需要一个单极性的5V电源和一个编码时钟即能正常工作。编码时钟提供与TTL/CMOS兼容的逻辑数据输出,并控制两个A/D转换通道同时对数据进行采样。如长时间不需要采集数据,可启动休眠模式使总功耗小于12mW。ADC的时钟及控制信号等由CPLD提供。

CPLD的选择

  在高速数据采集卡中,时序复杂而且精细,可能会因为一个门的时延,而导致整个硬件电路的失败。所以在本设计中采用了CPLD来实现电路的数字控制功能。

  CPLD主要任务是负责在EZ-USB FX2(即CY7C68013)处于Slave FIFO模式时实现读/写控制信号、时钟、输出使能、端点的选择以及对放大器和ADC的控制等功能。?

  基于CPLD容易开发升级的优点,在本设计中,所有的数字电路部分,全部是在CPLD内实现的,本设计采用了Lattice公司的ISP1032芯片,所用的EDA软件是Lattice公司的ispEXPERT系统,编程语言为ABEL语言。

  经过在实践中检验,在高速数据采集卡中,用ISP1032来实现数字逻辑电路功能,可以使高速数据采集卡工作稳定,各方面性能良好。

信号调理模块

  在高速数据采集系统中, 现场输入信号是高频的模拟信号,信号变化的范围都比较大,如果采用单一的增益放大,那么放大以后的信号幅值有可能超过A/D转换的量程,所以必须根据信号的变化相应地调整放大器的增益。在自动化程度较高的系统中,希望能够在程序中用软件控制放大器的增益,经过考虑本文选择具有增益可编程功能的芯片—AD8321。该芯片具有频带宽、噪声低、增益可编程且易于与单片机进行串行通信等优点,十分适合在数据采集系统做前置放大。程控放大模块的的控制字可在labview设定,再经过USB接口由EZ-USB FX2传给AD8321。[page]

USB控制器

  数据采集接口卡是硬件部分的核心,选择合适的能适用于USB协议的芯片是关键。EZ-USB FX2(即CY7C68013)是世界上首批USB2.0集成微控制器。其内部集成了USB2.0的收发器、串行接口引擎(SIE)、增强的8051微控制器和一个可编程的串行接口。

  在外设未通过USB接口接到PC机之前,外设上的固件存储在PC上;一旦外设连接到PC机上,PC先确认外设身份(即读设备描述符),然后将该外设的固件下载到芯片的RAM中,这样在开发过程中当固件需要修改时,可以在PC机上修改好后,下载到芯片中。

固件开发

  设备固件是设备运行的核心,它控制整个硬件系统的运行,并负责处理PC机发来的各种USB请求,以完成它们之间的数据传输。其主要功能包括控制放大模块,实现通道选择;控制A/D模块的数据采集;通过FX2实时上传采集数据给PC;控制FX2芯片接收并处理USB设备驱动程序的请求(如设置USB接口状态等多种USB协议标准请求)等。

  由于固件的开发流程比较复杂,故本设计中采用C语言进行开发,这样比较容易实现模块化和分层结构化的程序设计。

  EZ-USB FX2固件库为用户提供了底层Keil C函数库。EZ-USB FX2软件开发包提供了该库的目标文件,同时还提供了该函数库的源代码,用户可以利用Keil C来重新编写该函数库。

  EZ-USB FX2固件是使用EZ-USB FX2程序框架或直接使用EZ-USB FX2固件库开发的程序,这是开发USB外设的重要部分。EZ-USB FX2在其固件程序中把自己定义为USB大存储类、块传输子类,操作系统中(Win98以上)有相应的USB类设备驱动程序来支持这种USB类外设。在FX2的固件程序中写入USB通信模块,就可以实现主机和USB设备的通信。

  固件程序必须包括DSCR.A51(A51宏汇编器)、USBJmpTb.OBJ(目标文件转换器)和Ezusb.lib(Ezusb C编译器库文件和启动代码)。在固件程序框架中,定义了基本的USB设备的功能,一般不许修改。本设计要实现的具体功能则在应用层中的固件程序中完成。

应用程序开发

  根据实际要求,本系统需要通过软件下载固件程序,以及对ADC、放大模块、采集模块进行控制,同时还要接收或者发送数据。在采集开始前,可以先将命令发送出去,实现在固件程序中定义的相应功能,如通过EZ-USB FX2口线控制前置放大模块等。然后可以读取传送到主机的数据,或者向设备发送数据等。

  Visual C++作为一种面向对象的集成开发软件,它最突出的特性就是封装性、继承性和多态性。所以,我们选用Visual C++来设计应用程序。

  最后将用Visual C++编写好的USB应用程序封装成DLL,即可在用Labview编写的虚拟仪器最上层应用程序中直接调用。

结语

  本文就基于USB2.0的高速数据采集卡在虚拟仪器中的应用做了具体的阐述,将该系统应用于虚拟仪器中可实现热插拔,克服了传统数据采集卡插拔麻烦且扩展槽有限的缺点。USB2.0传输率达到480Mbps,可充分满足高速采集的需求。所以,本文给出的基于USB2.0的高速数据采集卡在虚拟仪器的研制开发中有着很强的实用性和广阔的应用前景。



关键字:USB  2.0  数据采集卡  虚拟仪器

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32中断向量表的位置.重定向