分类: 嵌入式
2012-02-09 10:07:17
USB总线是一种轮询方式的总线,主机控制端口初始化所有的数据传输。每一总线执行动作最多传送三个数据包。按照传输前制定好的原则,在每次传送开始时,主机控制器发送一个描述传输运作的种类、方向、USB设备地址和终端号的USB数据包,这个数据包通常称为标志包(token packet)。USB设备从解码后的数据包的适当位置取出属于自己的数据。数据传输方向不是从主机到设备就是从设备到主机。在传输开始时,由标志包来标志数据的传输方向,然后发送端开始发送包含信息的数据包或表明没有数据传送。接收端也要相应发送一个握手的数据包表明是否传送成功。发送端和接收端之间的USB数据传输,在主机和设备的端口之间,可视为一个管道。存在两种类型的管道:流和消息。流的数据不像消息的数据,它没有USB所定义的结构,而且管道与数据带宽、传送服务类型,端口特性(如方向和缓冲区大小)有关。多数管道在USB设备设置完成后即存在。USB中有一个特殊的管道——缺省控制管道,它属于消息管道,当设备一启动即存在,从而为设备的设置、查询状况和输入控制信息提供一个入口。
USB设备通过管道和HOST通信,在默认控制管道上接受并处理以下三种类型的请求:
1.标准请求:一共有11个标准请求,如得到设备描述、设置地址、得到配置描述等。所有USB设备均应支持这些请求。HOST通过标准请求来识别和配置设备。
类(class)请求:USB还定义了若干个子类,如HUB类、大容量存储器
2.类等。不同的类中又定义了若干类请求,该类设备应该支持这些类请求。设备所属类在设备描述符中可以得到。
3.厂商请求:这部分请求并不是USB规范定义的,而是设备生产商为了实现一定的功能而自己定义的请求。
事务预处理允许对一些数据流的管道进行控制,从而在硬件级上防止了对缓冲区的高估或低估,通过发送不确认握手信号从而阻塞了数据的传输速度。当不确认信号发过后,若总线有空闲,数据传输将再做一次。这种流控制机制允许灵活的任务安排,可使不同性质的流管道同时正常工作,这样多种流通常可在不同间隔进行工作,传送不同大小的数据包。