- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
USB2.0通讯技术在分光光度计上的应用
这几年,随着大量支持USB2. 0的个人电脑的普及,USB2. 0逐步成为PC机的标准接口已经是大势所趋。它的热插拔、即插即用、连接简单、高带宽、可总线供电等优点几乎使其成为目前计算机外设的首选通信接口。USB2. 0标准有着高达480MB/s的传输速率,利用此标准实现的数据输入输出接口,可以满足高速数据传输和实时处理要求[1]。紫外-可见分光光度计与上位机之间有大量的数据交换,基于RS232的传输方式满足不了快速数据传输要求,而基于USB2. 0传输方式具有高速传输能力,从而很好解决了紫外-可见分光光度计与上位机之间数据传输瓶颈问题。
1系统硬件组成
整个系统的硬件组成如图1所示[2]:
USB接口芯片采用的是CYPRESS公司支持2. 0版本的CY7C68013,它包括一个增强型8051内核、智能USB核、一个8. 5 kB片上RAM,真正体现了USB2. 0传输速度,包含通用可编程接口(GPIF),实现与外设的“胶连接”。设计采用128TQFP封装,带调试功能。由于其出色的USB2. 0解决方案,使复杂的USB通讯编程变成相对简单。
单片机采用的是Cygnal的C8051F020单片机,具有丰富的硬件资源。高速、流水线结构的C8051兼容的CIP-51内核(可达25MIPS),全速、非侵入式的在系统调试接口, 64 Kb可在系统编程的FLASH存储器, 4352 (4096 +256)字节的片内RAM,硬件实现的SPI、SMBus/I2C和2个UART串行接口, 5个通用的16位定时器, 22个中断源, 70%的指令执行时间为一个或两个系统时钟周期[3]。高性能的单片机与具有高速传输能力USB接口芯片配合,使下位机与上位机之间的传输速度有了很大的提高,减少了用户的等待时间。
2接口电路及工作原理
CY7C68013内部有一个GPIF(通用可编程接口),GPIF的核心是一个可编程的状态机,它可产生6个控制信号和9个地址信号以及接收6个外部和2个内部输入信号,既可通过编程也可用画图的方式来控制状态机,减小了设计上的难度。使用这种状态机能与外围器件进行无缝连接,如EIDE/ATA2PI, IEEE1284,Utopia等。内核CPU很少干预,因此可进行高速的数据传输。
接口电路如图2所示。
单片机C8051F020与光路系统连接的调理电路及控制步进电机电路图中没有画出,只画出了与CY7C68013管脚相联接的接线图。
CY7C68013管脚36, 37应上拉电阻, 35, 33应下拉电阻,否则上位机找不到USB设备.与GPIF有关的管脚:
FD [ 7.. 0 ]:上位机通过CY7C68013和C8051F020进行信息传输的数据线。
CTL[1.. 0]:为C8051F020提供读/写信号。CTL0=1时,准备往C8051F020写数据; CTL1=1时,准备从C8051F020读数据。
RDY[1.. 0]:为CY7C68013提供检测信号,检测C8051F020读/写是否准备好。RDY0=1表示C8051F020已准备好,可以接收数据; RDY1=1表示C8051F020数据已准备好, CY7C68013可以读取数据。
单片机C8051F020管脚P[7.. 0]作为数据线与CY7C68013管脚FD[7.. 0]连接,P0. 2与P0. 3通过优先权交叉开关分别设置成INT0与INT1,上升沿触发。当CTL0由底变高时,触发外部中断0,中断服务程序先设置P5. 0=1,再设置P5. 0=0;然后单片机从P[7.. 0]口读取数据;当CTL1由底变高时,触发外部中断1,中断服务程序先把数据放到P[7.. 0]口上,然后设置P5. 1=1,再设置P5. 1=0。
3软件设计
3.1USB设备驱动程序设计
USB设备驱动程序基于WDM(W indows DriverModel),采用分层结构模型,所写的驱动程序不需要直接和硬件打交道,只需下层驱动程序提供的接口访问硬件,因此,USB驱动程序不必对具体硬件编程,所有的USB命令,包括读写等命令是通过USB总线驱动程序传递给USB设备的[4]。用户开发的USB设备驱动程序只需定义与外部设备的通讯接口和通讯的数据格式,当然也必须定义与应用程序接口。
CYPRESS公司提供了通用的CY7C68013驱动程序源代码、控制面板程序及固件框架,用户只需稍加修改或不进行任何修改就可使用自带的USB驱动程序,这降低了驱动程序的开发难度、提高了用户开发的进度.USB驱动程序的开发有相当大的困难,费时费力还有可能不稳定。项目的驱动程序改动很少,主要集中在与应用程序的接口上,采用成块的传输方式,通过调用函数Ezusb_Read_Write()来完成读写数据任务。
3.2CY7C68013固件开发
CY7C68013内共有6个端口: EP0、EP1、EP2、EP4、EP6、EP8。其中EP0为控制端口,它是一个双向端口,既可作为输入,也可作为输出,用来在驱动程序和固件之间传送控制信息,缓冲区容量为64个字节;EP1端口又分为输入EP1和输出EP1,各自使用64个字节空间; EP2、EP4、EP6、EP8为大容量输入输出,共用8个512字节,可以设置中断、批量和等时传输类型,端点2和6可以设置为二缓冲、三缓冲和四缓冲,缓冲区大小可设置为512或1024字节。
要实现USB2. 0高速数据传输,应使用CY7C68013的GPIF特性, CYPRESS公司提供了一个波形编辑工具GPIF Designer,该工具可以把波形图转成支持GPIF功能的C语言源代码文件GPIF.C,方便了编程。
软件配置端点2为BULK OUT,为512字节,四缓冲,对应的寄存器设置为EP2CFG = 0xA0,从上位机发送来的数据先放到端点2;端点6为BULKIN, 512字节,四缓冲,对应的寄存器设置为EP6CFG= 0xE0,单片机C8051F020发送的数据先放到端点6. 2和6端点都配置为手动触发, 8位数据宽度,对应的寄存器设置为分别为EP2FIFOCFG = 0x00,EP6FIFOCFG = 0x00。
上电后,先枚举,枚举成功后,程序调用TD_INIt()函数进行初始化,包括对GPIF的初始化,部分代码如下:
初始化完成后,主程序循环调用TD_Poll()函数,每次循环查询上位机是否有读/写操作,读/写操作内核CPU都需要干预两次.对于写操作,首先要把上位机发来的数据提交到端点2缓冲区,这是第一次触发;再查询GIPF是否有空,如有空,把端点2数据提交给单片机,这是第二次触发,读操作过程正好相反,部分程序代码如下:
4结论
所开发的高速输入输出USB比基于传统的RS232,LPT(并行口)接口传输速度有很大提高,图2 CY7C68013给出了比较完整的硬件接线图,软件也做成模块化,系统的更新升级和功能扩展变得极为容易,也很方便移植到其他的系统中。
参考文献:
[1]武安河.W indows 2000/XPWDM设备驱动程序开发[M].北京:电子工业出版社, 2004
[2]孙尚高.嵌入式智能仪器系统研究[D].北京:北京机械工业学院机械工程系, 2006
[3]李 刚,林 凌.与8051兼容的高性能、高速单片机———C8051Fxxx[M].北京:北京航空航天大学出版社, 2002
[4] (美)Chris Can.t W indowsWDM设备驱动程序开发指南[M].北京:机械工业出版社, 2003
作者简介:彭六保(1976- ),男,江西吉安人,北京机械工业学院机械工程系硕士研究生,主要从事虚拟仪器下智能化仪器系统的开发研究。
上一篇:12MeV驻波电子直线加速器的能量调变技术设计
下一篇:一种湿度开关电路的设计