引言
USB(通用串行总线)集中了PCI和RS-232串行总线的优点,具有方便的即插即用和热插拔特性以及较高的传输速率,因此,将USB技术应用于数据采集是非常合适的,可以达到数据采集系统的高速度处理。目前,USB已经推出了其协议的2.0版本,速率高达480 Mbit/s。
本文研发了一套基于USB接口的数据采集系统,整个系统的设计涉及到硬件、设备固件(Firmware)、USB设备驱动程序及客户应用软件。下面分别加以说明。
1 USB接口芯片
本文介绍的USB数据采集系统采用了Cypress公司EZ-USB FX2系列的CY7C68013-128AC芯片,它同时集成了8051微控制器和USB2.0收发器,在提高集成度的同时也加快了数据传输的速度。在系统中,CY7C68013-128AC既是数据采集控制器又是USB控制器,EZ-USB FX2系列有3种型号:CY7C68013-56PVC、CY7C68013-100AC、CY7C68013-128AC。该系列的芯片都是针对USB2.0的,并且与USB1.1兼容。其中,CY7C68013-128AC是128脚,TPQF封装,功能非常完善,与另外两种相比,主要是增加了16位地址总线和8位数据总线以及更多的IO口,因此,CY7C68013-128AC的可扩展性最好。图1是该芯片的内部结构图。
2 USB的固件和驱动程序设计
2.1固件
固件是储存在程序内存中的代码,它使得USB接口芯片与主机和外设中其他电路能够通信。Cypress公司给出了一个固件库和固件框架(Frame Works),均是用Keil C51开发的。固件库提供了一些常量、数据结构、宏、函数来简化用户对芯片的使用;固件框架实现了初始化芯片、处理USB标准设备请求以及挂起状态下的电源管理等功能。该框架不添加任何代码,编码后产生的.HEX文件载入芯片就能与主机进行基本的USB通信,只是不能完成特定的任务。对于用户而言,主要的工作就是选择适当的传输方式,添加需要使用的端点(Endpoint),考虑到本系统要求实现一定数量数据的快速采集,并要迅速地将采集到的数据传输和进行分析处理,并且对数据的完整性要求较高,我们采用了块传输方式(Bulk Transfers),在TD-Init()函数中添加初始化代码,亦即选择块传输方式和选择端点2、6分别为输出、输入端口,在TD-Poll()函数中添加功能代码,以实现发送和接收数据功能,关键代码分别如下: