2023年12月20日发(作者:)

第7卷 第16期 2007年8月167121819(205 科 学 技 术 与 工 程ScienceTechnologyandEngineering Vol.7 No.16 Aug.2007c○ 2007 .基于USB2.0的高速数据接口卡的设计及研究李建苹 刘书桂 郭延平(天津大学精密仪器与光电子工程学院,天津300072)3摘 要 通用串行总线USB是一种新型的计算机总线,简要介绍了其特点,并以CYPRESS公司生产的CY7C68013芯片作为通信及主控芯片,采用GPIF实现FIFO传输,开发了基于USB2.0协议的高速的数据采集和传输系统,实现了计算机与三坐标测量机之间的快速、便捷、可靠的数据传输。关键词 USB2.0  CY7C68013  GPIFFIFO  固件程序  驱动程序中图法分类号 TP334.7;  文献标识码 A  在精密测试技术领域,三坐标测量机是一种集光学、机械、数控技术和计算机技术为一体的大型高效率精密测量仪器。三坐标测量系统由三坐标测量机和主控机构成。主控机对三坐标测量机进行测量操作控制,同时三坐标测量机把测量数据传给主控机,由它进行后台的数据处理。这就要求主控机和三坐标测量机之间有一块数据接口卡能够进行高速、可靠的数据传输。现在通用的数据接口卡一般都是基于串行总线协议、ISA或PCI总线协议,存在着多种不足。安装麻烦,尤其不适合移动式测量;价格昂贵;受计算机插槽数量、地址、中断资源限制,可扩展性差。基于USB2.0的高速数据接口卡有效地解决了传统数据接口卡的缺陷,是一种新型的数据接口卡。通用串行总线USB(UniversalSerialBus)是1995年康柏、微软、IBM、NEC等公司为了解决PC1 USB简介机外围设备的拥挤和提高设备的传输速度而推出的一种新型串行通信标准。USB总线具有较高的传输速度,1998年推出的1.1规范支持的最高传输速率为12Mb/s,而2000年问世的2.0版本更是将USB总线的传输速度提高到了480Mb/s的水平;USB支持即插即用和热插拔,用户在开机状态时即可将设备连接到电脑主机上;总线能够提供500mA的电流,一些耗电量比较小的设备就不必外接电源了;设计连接电缆最长可达5m,而且可通过集线器进行星形拓扑连接,使USB接口所连接的设备可同时多达127个。USB是一种查询总线,由主机控制器启动所有2007年4月20日收到的数据传输,接入的USB设备通过主机调度、基于令牌的协议来共享USB带宽。端点(Endpoint)是一个可唯一识别的USB设备的部分,它是主机与设备间通信流的一个结束点。一系列相互独立的端点在一起构成了一个USB逻辑设备。一个USB通道(Pipe)是设备上的一个端点和主机上软件之间的联第一作者简介:李建苹(1983—)女,汉族,天津人,天津大学精密测试技术及仪器国家重点实验室硕士生,研究方向:自动控制与测量,E2mail:gujie2005@。3通信作者简介:刘书桂(1954—)男,博士生导师,教授,研究方面:三坐标测量机应用系统的开发与智能检测,E2mail:sgliu@。

4076科 学 技 术 与 工 程7卷系,体现了主机上缓存和端点间传送数据的能力。USB协议提供了4种不同的数据传输方式:控制传针对三坐标测量机系统的数据采集和传输系统的特点,本设计的硬件电路分测量数据处理电路和FX2芯片接口电路两个部分,其原理框图如图2所示。测量数据处理电路负责把从三坐标测量机上测得的光栅信号(X方向、Y方向、Z方向),进行整形,四细分辨向,转换成能够输入计算机的标准数字信号;USB接口电路负责把标准输入数字信号经过主机上的USB口接入主控计算机,实现主控计算机和三坐标测量机之间的通信。其电路如图3所示。左边的接头是一个标准的USB接头,D+和D-两根信号线连接到芯片的DPLUS和DMINUS引输、中断传输、块传输、同步传输[1]。2 硬件电路设计本设计采用的控制器是CY7C68013,属于FX2系列,其芯片结构如图1所示。它由USB接线器(USBConnector)、USB收发器(USBTransceiver)、串行接口引擎(SIE)、程序代码和数据RAM、通用微处理器(增强的8051)和一个通用可编程串行接口(GPIF)组成。USB收发器与USB总线引脚D+和D-相连;串行接口引擎(SIE)对串行数据进行解码脚,因为CY7C68013芯片是+3.3V供电,而USB总线电压是+5V,选用TI公司的tps767d301将+5V输入电压变换成+3.3V和1.5V输出。至于IC总线的连接采用E2PROM存储器24LC64连接2和译码、错误校验、位填充,完成大部分USB2.0协议的处理工作,从而简化8051代码的编写工作;内部RAM用作程序代码和数据存储器;通用编程接口(GPIF)掌管内部FIFO和外逻辑间的高带宽传输[2]在USB芯片的SCL和SDA引脚,用于从中下载USB总线设备的制造商号VID、产品号PID和设备。号DID。图2 接口电路原理框图图1 FX2内部结构图它有三种可用的接口模式:端口、GPIF主控和从FIFO(SLAVEFIFO)。本设计采用GPIF主控模式。GPIF(GeneralProgrammableInterface)作为内部的主控制器与FIFO直接相连,并产生用户可编程的控制信号与外部接口进行通信。数据传输时,8051(固件程序)不参与,也可参与。它的内核是一图3 主控计算机和三坐标测量机之间的通信3 软件设计USB设备的开发中,软件的设计包括设备固件个可编程的状态机。通过编程定义各个状态,实现数据传输时所需的带握手的时序图。

16期李建苹,等:基于USB2.0的高速数据接口卡的设计及研究40 77程序、设备驱动程序和主机应用程序的设计三个部分。固件程序是固化在设备USB控制器内部程序存储器中或外部扩展的程序存储器中的程序,它响应主机的控制请求命令,提供描述符,使主机了解设备的功能,从而配置设备,开始与设备的正常通信;驱动程序介于主机应用程序和设备固件之间,主机不能直接访问硬件,必须通过设备驱动程序将其请求转换成硬件识别的格式;主机的应用程序可以给用户提供一个人机交互界面,能将用户的控制命令通过对驱动程序的调用传递给设备固件,并且可以通过界面了解设备的状态。3.1 固件程序的设计固件程序是基于KeilC51进行开发的,它的基本框架如图4所示。这个基本框架已经实现了初始化、重枚举、电源管理等功能。只需在固件框架的预留处添加代码,就可以完成特定功能,从而开发出一个功能完善的USB外设[2]。为了保证高速数据传输,采用GPIFFIFO模式与外部进行大批量的数据传输。在整个数据传输过程中,并不要求8051对数据进行处理。采用自动打包的方式(置AUTOIN=1),数据经过FIFO直接发送到PC机(FIFO读)。在进行GPIF波形设计时,使用了CYPRESS公司提供的GPIFDesigner开发工具。它提供了可视化窗口,只需在图形界面上进行简单的修改,就可以自动生成复杂的波形描述符。FIFO读图形编辑图(时序图)如图5所示。既使采用GPIF模式进行读写,固件还有如下固定的工作:(1)配置端点;(2)通过控制端点零来响应主机请求;(3)控制和监测GPIF的活动;(4)利用USART处理所有的特殊请求任务如图5 FIFO读时序图voidTD_Init(void)//初始化图4 固件框架结构计时器、中断、I/O引脚等。本设计中,在TD_init()函数中添加功能代码,完成GPIF初始化,端点配置等工作。在TD_Poll()函数中添加其他代码,完成各种用户所需的辅助功能。固件初始化代码如下: {CPUCS=((CPUCS&~bmCLKSPD)|bmCLKSPD1);//设置内部时钟48MHzEP2CFG=0xE0; //EP2是批传输模式的IN端点,4缓冲,每个缓冲区大小为512字节SYNCDELAY;EP2FIFOCFG=0x08; // 自动传输模式

4078SYNCDELAY;FIFORESET=0x80;SYNCDELAY;FIFORESET=0x02; // 复位EP2FIFOSYNCDELAY;FIFORESET=0x00;SYNCDELAY;GpifInit(); // 初始化GPIF科 学 技 术 与 工 程7卷设计采用DDK工具。本设计的驱动程序主要由以下几块:Ioctl.h 定义所有的I/O控制;Usb.h 定义设备扩展及函数声明;Guids.h 定义标识的设备GUID; 分发例程; 驱动程序入口,初始化; 热插拔处理; 读写主程序; 98/2000下的驱动安装文件; 编译形成的系统文件。PORTACFG=0x02;//设置PA.1为INT1,PA.2为I/O口OEA|=0x04;//设置PA.2为输出口}本设计的驱动程序的框架流程图如图7所示:图6 USB驱动程序WDM结构3.2 设备驱动程序的设计USB系统驱动程序采用分层结构模型,遵循WDM(WindowsDriverModule)如图6所示。USB函数层由通用串行总线驱动程序模块(USBD)和主控制器驱动程序模块(HCD)。USB函数层由Windows提供,负责管理USB设备驱动程序和USB控制器之间的通信;加载及卸载USB驱动程序;与USB设备通用端点建立通信并执行设备配置、数据与USB协议框架和打包格式的双向转换任务。针对不同的实时数据采集设备,开发者需要设计专用的USB设备驱动程序。编写设备驱动程序的开发工具有Mi2crosoft提供的DDK(驱动程序开发包),以及Compu2ware的DriverStudio、BlueWaters的DriverWizard图7 驱动程序框架流程图(1)加载:操作系统加载驱动程序时,先执行DriverEntry例程,度去设置分发例的入口。当设备连接后,PNP管理器执行UsbAddDevice例程,添加一个设备到栈中,初始化DEVICE_EXTENSION结构的变量,发送IRP_MN_START_DEVICE到驱动程序。驱动程序调用PnpStartDeviceHandle例程,并回调StartDevice,使之处于工作状态。等,后几种均对DDK进行了一定程度的封装[3]。本

16期李建苹,等:基于USB2.0的高速数据接口卡的设计及研究40 79(2)打开设备:应用程序要与设备对话,必须通过CreateFile获得设备句柄,系统收到CreateFile调用后,发送IRP_MJ_CREATE给驱动程序,首先取得USBDI的版本,然后调用USBResetDevice对设备进4 结 语上述方案设计的USB接口卡较好的实现了主控计算机与三坐标测量机之间的串口通信,并达到了很高的传输数率。在运行过程中,GPIF无需CPU干涉,只需对起进行正确设置就可正常工作。该接口卡还可进行进一步的扩展,可用于海量数据存储,图像处理等多个领域。参 考 文 献1 边海龙,贾少华.USB2.0设备的设计与开发.北京:人民邮电出行复位,最后调用USBSelectConfiguration来配置管道信息。(3)数据传输:UsbRead和UsbWrite是处理IRP_MJ_READ和IRP_MJ_WRITE的例程,它们是应用程序中ReadFile和WriteFile调用的入口,用来完成数据传输。(4)终止和卸载:本文的驱动程序以灵活的方式来响应USB的PNP规则。任何时候,只要收到卸载请求,都会立即卸载,不会因为热插拔时还没关闭已经打开的句柄而造成计算机没响应。其中在Guids.h文件中定义了标志设备的128位GUID,而厂商及硬件信息VID/PID则在文件中加以说明,并在安装时导入EEPROM。版社,20042 Cypress,hnicalReferenceManual,,20013 sWDM设备驱动程序开发指南.孙 义,马莉波,国雪飞,译.北京:机械工业出版社,2003ResearchandDesignoftheHigh2speedDataInterfaceCardBasedonUSB2.0LIJian2ping,LIUShu2gui,GUOYan2ping(SchoolofPrecisionInstrumentandOpto2ElectronicsEngineering,TianjinUniversity,Tianjin300072,)3[Abstract] UniversalSerialBus(USB)isanewkindofcomputerbus,ingtheCY7C68013chipproducedbyCYPRESSasthecore,thedatacollectionandtransfersystembasedonUSB2.0isdeveloped,withGPIFFIFOTransferMode,whichimplementsfast,convenient,anddependabledatatransferbetweencomputerandCMM.[Keywords] USB2.0  CY7C68013  GPIF  FIFO  firmware  driver