USB设备可由许多不同的逻辑单元组成,实际上,也就是这三种逻辑单元组合而成[5]。
2.2 USB设备开发简介
USB设备的开发一般包括三个方面:设备端硬件接口设计、固件(即要写到设备内部只读存储器中去的运行程序)编写,及主机端设备驱动程序的开发。这里仅就设备端硬件接口设计作一些介绍。
USB设备接口设计有两种方案可选:采用普通单片机加专用USB接口芯片;采用带USB接口的单片机,即专用USB控制器芯片。
目前有多种类型的USB接口芯片,例如USBN9602(National Semiconductor 公司)、 PDIUSBDl2(Philips公司)和USS820/825(Lucent公司)等。采用普通单片机加USB接口芯片方案的优点是:开发人员可以利用现有单片机开发系统开发设备的应用程序,而不必再投资购买新的单片机开发系统;缺点是:硬件设计比较复杂,调试麻烦。
第二种方案中所采用的LISB控制器芯片有两类:一类为完全从底层开发的微控制器芯片,如Cypress的CY7C63XXX系列;一类是基于通用单片机开发的USB控制器芯片,如与Intel 8051兼容的8x930A/8x931A(Intel/Cypress公司)、EZ-USB(Cypress公司)。第二种方案的优点是设计简单。例如,EZ-USB单片机集成了加强的8051微控制器、智能USB引擎、USB收发模块和RAM等,它提供了24个I/O端口、16位地址线、8位数据线、1个PC机接口和l对USB接口。所集成的智能USB引擎可以完成USB协议所规定的80%~90%的通信工作,减轻了USB外设开发人员的开发负担;所提供的开发工具能自动生成固件框架,开发者只须根据需要填些相关函数体;固件和驱动程序可以分别独立调试,极大地提高开发速度。该方案的缺点是需购买新的单片机开发系统,投资较大[6]。
2.3 USB总线协议
USB(Universal Serial Bus)是通用串行总线的缩写,因其具有方便易用、高性价比、容错性优越和动态分配带宽等特点,现已成为计算机的主流接口[1]。
USB总线属一种轮询方式的总线,主机控制端口初始化所有的数据传输。源:自~751·论`文'网·www.751com.cn/
每一总线执行动作最多传送三个数据包。按照传输前制定好的原则,在每次传送开始时,主机控制器发送一个描述传输运作的种类、方向,USB设备地址和终端号的USB数据包,这个数据包通常称为标志包(token packet)。USB设备从解码后的数据包的适当位置取出属于自己的数据。数据传输方向不是从主机到设备就是从设备到主机。在传输开始时,由标志包来标志数据的传输方向,然后发送端开始发送包含信息的数据包或表明没有数据传送。接收端也要相应发送一个握手的数据包表明是否传送成功。发送端和接收端之间的USB数据传输,在主机和设备的端口之间,可视为一个通道。存在两种类型的通道:流和消息。流的数据不像消息的数据,它没有USB所定义的结构,而且通道与数据带宽、传送服务类型,端口特性(如方向和缓冲区大小)有关。多数通道在USB设备设置完成后即存在。USB中有一个特殊的通道——缺省控制通道,它属于消息通道,当设备一启动即存在,从而为设备的设置、查询状况和输入控制信息提供一个入口。
事务预处理允许对一些数据流的通道进行控制,从而在硬件级上防止了对缓冲区的高估或低估,通过发送不确认握手信号从而阻塞了数据的传输速度。当不确认信号发过后,若总线有空闲,数据传输将再做一次。这种流控制机制允许灵活的任务安排,可使不同性质的流通道同时正常工作,这样多种流通常可在不同间隔进行工作,传送不同大小的数据包