基于USB 2.0的高速数据采集卡在虚拟仪器中的应用
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的高速数据采集卡在虚拟仪器的研制开发中有着很强的实用性和广阔的应用前景。
参考文献:
[1].AD9059datasheethttp://www.dzsc.com/datasheet/AD9059_122633.html.
[2].CPLDdatasheethttp://www.dzsc.com/datasheet/CPLD_1136600.html.
[3].AD8321datasheethttp://www.dzsc.com/datasheet/AD8321_1055558.html.
评论