APP下载

基于CY7C68013A的并口转USB口数据采集系统设计

2011-10-09代月松董力科孙正席陈昌鑫

电子设计工程 2011年16期
关键词:外设固件驱动程序

代月松,董力科,孙正席,陈昌鑫

(中北大学 仪器科学与动态测试教育部重点实验室,山西 太原 030051)

USB是英文Universal Serial Bus的缩写,中文含义是“通用串行总线”。它是一种应用在PC领域的接口技术。USB以其可以热插拔和即插即用的特性,获得广泛的市场认可。USB1.0标准于1996年1月提出,传输速度为1.5 Mb/s的低速模式;1998年9月提出的USB1.1标准则将速度提高到12 Mb/s的全速模式,并且增加了中断传输的传输方式。USB2.0标准于2000年4月提出,将传输速度提高了40倍,达到了480 Mb/s的高速模式,足以满足大多数外设的速率要求[1]。

1 系统硬件电路设计

1.1 系统结构和数据流程

系统的硬件设计原理框图如图1所示,硬件电路部分主要包含电源转换、数据传输接口电路、并转串电路、程序存储部分等4个部分。

本系统采用具有微处理器的USB接口CY7C68013A,工作过程:系统接入计算机,系统上电,单片机从外接EEPROM中下载程序,初始化自身的寄存器,并且设置外围电路状态,计算机识别USB设备后,客户软件将要确认打开USB设备以及工作状态,由计算机发出读数请求和参数设置请求,二者是相互独立进行的,就可以完成PC机和测试系统之间的数据交换工作,这些都需要单片机固件和硬件电路的配合。

图1 系统总体设计图Fig.1 Whole system design diagram

1.2 USB主控制器介绍

Cypress公司生产的EZ-USB FX2 CY7C68013A集成了USB2.0收发器、SIE(串行接口引擎)、增强的8051微控制器可编程的外围接口。CY7C68013A可提供480 Mb/s的传输率。CY7C68013A的内部FIFO缓冲区中有4个端点,可以通过配置相应的EPxFIFOCFG寄存器配置为2倍、3倍、4倍缓冲区,这种设计可以把数据包可用的时间延时减至最小,从而增加带宽的吞吐量。该芯片有3种工作模式,分别为普通端口模式、GPIF主控模式、和从属FIFO模式[2]。

2 软件设计

2.1 GPIF接口模式

本设计采用GPIF主控模式,GPIF作为CY7C68013A端点FIFO的主控制器。在普通端口模式下,所有I/O引脚都可作为8051的通用I/O口。在“从FIFO”模式下,外部逻辑或外部处理器直接与FX2端点FIFO相连。在这种模式下,GPIF不被激活,外部主控端既可以是异步方式,也可以是同步方式,并可以为FX2接口提供自己的独立时钟。GPIF主控模式是在高速传输的过程中,8051内核不介入传输通道,并行数据的读入和打包全部由硬件完成。在GPIF配置这些硬件时,Cypress公司有个独特的设计构想,8051仅用来配置波形描述符,配置完成后,8051退出数据传输通路,GPIF通过读入的波形描述符,在相应引脚上产生一系列信号,包括控制信号和读写数据总线的信号。为了提高数据传输速率,读取数据时的传输类型使用批量传输方式。USB规范限定了批量传输的数据包长度:对于USB1.1规范,数据包长度为最大64字节,而USB2.0规范,数据包长度只能为512字节。就是说在USB1.1主机控制下,在读取数据时一次最大能读取64字节数据,在USB2.0主机控制下,在读取数据时一次只能读取512字节数据。具体读取数据时GPIF方式的启动次数将与数据读写量结合计算得到,并且由上位机程序和单片机固件配合使用[3]。

2.2 固件程序设计

固件是指存储在USB接口芯片或微控器中的代码,于控制硬件系统运行,各种USB标准请求的处理,以及USB闲置模式的电源管理服务,实现主机与外设之间的通信和数据传输。固件程序采用C51语言来编程,使用Keil软件作为编程工具[4]。Cypress公司为FX2固件开发提供了一个固件库和固件框架,固件库提供了一些常量、数据结构、函数来方便用户对芯片的使用。C语言环境,同时保留了汇编代码高效、快速的特点,代码在Keil软件中编译通过后,将固件代码下载到FX2中,就可以实现GPIF多字节读等操作。

固件程序框架流程图如图2所示。

复位上电时,固件先初始化一些全局变量,接着调用初始化任务调度函数TD_INIT(),开中断,等待设备重枚举完成(端点0接收到SETUP包),最后进入循环语句,执行任务调度,函数包括:

1)TD_Poll( )任务调度函数。

2)如果发现USB控制请求则执行。

3)如果发现USB空闲置位,则调用TD_Suspend(),函数执行成功则将内核挂起,直到出现USB远程唤醒信号,调用TD_Resume( ),唤醒内核。

2.3 GPIF波形图

GPIF波形设计是CY7C68013A的最核心特点之一。根据测试系统的读数时序要求,采用GPIF Designer工具设计时序波形,其时序信号具有很好的编程分辨率,并且导出生成 .c文件加载到单片机固件中。

图2 固件程序框架流程图Fig.2 Flow chart of firmware framework

下面根据并口擦除时序为例,利用GPIF Designer画出相应的波形图。如图3所示。

图3 并口擦除过程时序波形设计图Fig.3 Waveform design of parallel erase process timing

S0~S3状态ERE始终为高,ERET始终为低,外围测试系统单片机接收到这两个信号同时满足的话则擦除开始,擦除过程中READY信号一直为低,擦除完毕后变高。这里S4也设置了判断点检测READY信号,如果为高就到IDLE状态结束擦除,否则回到S3继续执行前面的工作。

2.4 USB驱动程序设计

USB系统驱动程序由3部分组成:USB设备驱动程序、USB总线驱动程序和USB主控制器驱动程序。其中,Windows操作系统已经提供了处于驱动程序栈底的USB总线驱动程序和USB主控制器驱动程序;而USB设备驱动程序由设备开发者编写,通过向USB总线驱动程序发送包含URB(USB Request Block)的 IRP(I/O RequestPacket),以实现 USB 外设之间的信息交换。本系统的USB通用驱动程序采用Cypress公司提供的通用驱动ezusb.sys,固件下载驱动程序可以根据编译好的固件在DDK的环境下编译生成[5]。

主机加载USB驱动程序是要先通过读取USB设备的VID和PID,然后才能正确识别并加载的。为了使设备驱动程序能够正确加载运行,还必须为它配备一个安装信息文件即.inf文件。Windows系统使用该.inf文件将USB外设的VID&PID(固件下载时由EEPROM或EZ-USB内核提供,重枚举后由固件程序描述符表提供)与相应的驱动程序绑定到一起。这样,系统在知道了USB外设的VID&PID后就可以通过存储在.inf文件中的信息查找到正确的驱动程序并加载。

用户应用程序通过I/O控制调用访问USB设备驱动程序达到控制USB设备的目的,应用程序首先通过调用Win32函数CreateFile()来取得访问设备驱动程序的句柄,再利用Win32函数DeviceIoControl()对设备进行I/O控制[6]。

2.5 应用程序的设计

系统的应用程序界面如图4所示。

图4 系统应用程序界面Fig.4 Interface of system application programming

客户应用程是测试系统软件的核心,由Visual Basic来编写完成,其对USB设备的操作功能为:开启或关闭USB设备、检测USB设备、设置USB数据传输管道、设置数据端口的初始状态、通过USB接口回传数据、存储、显示并分析数据。因此,应用程序要调用动态链接库DLL68013.d11中封装的 API函数。首先要将 DLL68013.dll拷贝到系统盘的“C:Windows\System”下面,然后在 Visual Basic的集成编程环境下的模块Module1中声明引用动态连接库 DLL68013.dll中的API函数。

动态链接库文件的使用,需要在应用程序的全局变量定义模块中显式调用.dll文件应用程序会在其所在目录和系统目录下查找.dll文件。在声明过程中需要注意数据类型的匹配问题。

3 系统测试

系统连接外设进行测试记录各阶段波形,采用Bus Hound实时记录总线状态变化,查看VB读数软件中的数据文件,得到的数据正确。并用原并口进行相应测试记录各阶段波形,对比两次波形发现基本吻合,从而验证了数据传输的正确性。

4 结 论

利用CY7C68013A完成了采用GPIF模式的并口转USB的数据传输模块的硬件和软件设计。多次实验证明,此系统运行稳定,能够满足目前旧测试系统并口转USB口的需求。另外,试验中实际的传输速率120 Mb/s,大大提高了原测试系统的传输速率。

[1]周立功.USB2.0与OTG规范及开发指南[M].北京:北京航空航天大学出版社,2004.

[2]钱峰.EZ-USB FX2单片机原理、编程及应用[M].北京:北京航空航天大学出版社,2005.

[3]张念淮,江浩.USB总线接口开发指南[z].北京:国防工业出版社,2001.

[4]李英伟,王成儒,练秋生,等.USB2.0原理与工程开发[M].第2版.北京:国防工业出版社,2007.

[5]EZ-USB Fx2 technical reference manual version2.0[S].Cypress Semionductor Corp data book,2001.

[6]张弘.USB接口设计[M].西安:西安电子科技大学出版社,2002.

猜你喜欢

外设固件驱动程序
计算机硬件设备驱动程序分析
基于固件的远程身份认证
提取ROM固件中的APP
一种通过USB接口的可靠固件升级技术
基于MPC8280的CPU单元与内部总线驱动程序设计
Microchip推出具备双ADC外设的全新器件,扩展其低成本8位PIC®单片机产品线
多路手机固件升级工具设计
外设天地行情
外设天地行情
外设天地行情