分类:
2010-02-22 14:19:32
如果您刚开始接触USB,那么了解一些USB术语将很有帮助。本文介绍了基本的USB术语。
主机
USB是一种“主-从”式总线,包括一个主机和多个从机。从机称作外设,在USB术语中也称作功能部件。主机称作主设备。所有USB传输都由主机启动;外设总是响应传输,不会启动传输。最常用的主机是PC机,主机通过USB-A连接器连接到下行设备。嵌入式主机不包括PC机,而是用一个微控制器作为专用主机,或许只能与一类USB设备通信。
功能部件
功能部件是USB设备,也称作USB外设。USB外设是主机的“下行”设备,使用USB B型连接器连接。
速率
USB 2.0标准规定了以下三种传输速率:
低速模式传输速率为1.5Mbps,多用于键盘和鼠标。
全速模式传输速率为12Mbps。
高速模式传输速率为480Mbps。
市场上关于“USB 2.0兼容”的概念有一些混乱。这种混乱源于USB标准版本的升级,首先推出的是USB 1.0,紧接着有了比1.0更理想的USB1.1。USB1.x支持低速和全速两种USB总线速度。2.0版本增加了高速模式,完全替代了1.1。所以,如果使用的是工作在12Mbps速率下的全速器件,则可认为它与USB 2.0兼容,即使许多人仅将USB 2.0用于高速(480Mbps)操作。
入-出方向
USB系统以主机为中心。因此,解释USB术语时假设面向的是主机。所以,从主机侧看,“入”表示传输方向从外设到主机;同样,“出”表示传输方向从主机到外设。
端点
端点位于USB外设内部,所有通信数据的来源或目的都基于这些端点,是一个可寻址的FIFO。每个USB外设有一个唯一的地址,可能包含最多十六个端点。主机通过发出器件地址和每次数据传输的端点号,向一个具体端点(FIFO)发送数据。
每个端点的地址为0到15,一个端点地址对应一个方向。所以,端点2-IN与端点2-OUT完全不同。 每个器件有一个默认的双向控制端点0,因此不存在端点0-IN和端点0-OUT。
外设中端点的编号是任意的。枚举期间外设向主机报告其端点号和特征。
集线器
集线器扩展了USB主机所能连接设备的数量。PC机的USB控制器内置一个集线器,负责完成一些底层USB功能,如检测设备的插入或拔出。集线器以全速或高速连接到上行端口(到PC),以低速、全速或高速连接到下行端口(到外设)。PC的根集线器可为每个A型连接器提供5V、500mA电源。一个总线供电的外部集线器可为每端口提供100mA电流。由于USB为外部集线器电路分配100mA电流,因此,一个总线供电的集线器可以有四个下行端口。如果集线器有自己的电源(自供电),每个下行端口可提供高达500mA电流。
枚举
插入USB设备时,主机获取连接通知,继而识别刚刚插入的是什么。主机需要得到一系列描述符(数据表),该描述符来自插入的设备,所有USB设备在插入USB端口时,主机都通过默认的CONTROL端点0与设备进行通讯。如果主机确认它从设备接收的数据正确,则配置该设备使之开始工作。如果主机认为设备的数据不正确(例如,某个描述符数据有冲突或超出了规范),则忽略该设备。这时会弹出一个对话窗,说明该USB设备出了一些问题。
第九章(关于枚举的更多信息)
USB标准的第9章定义了枚举期间主机送到外设的所有请求,以及外设响应的数据格式。如果访问USB官方网站,将找到一个名为USBCV (USB命令验证器)的软件工具,其中有一部分名为“第9章测试”。这些测试可以证明您的枚举代码是否正确。在进行USB实验室测试时也要用到USBCV。因此,如果已在自己的实验室里通过了这一USB验证,则实验室测试也不成问题。
SIE
SIE指串行接口引擎,是所有USB控制器内部的“核心”。SIE负责处理底层协议,如填充位,CRC生成和校验,并可发出错误报告。SIE的主要任务是将低级信号转换成字节,以供控制器使用,某些SIE会更加先进灵活。它处理的底层信号细节越多,控制固件越简单。例如,某些SIE只报告端点数据触发的结果(参见下文),并将它留给固件以确定如何处理。
数据触发
USB包从PID或ID开始。数据传输用到两种PID:DATA0和DATA1。主机和外设均包含数据触发位,每个端点一个。触发位确定这些数据PID中的哪一个用于数据传输。当外设脱离复位状态,主机和外设均将其内部数据触发位复位到零。因此,第一个传送的是DATA0 PID数据包。当数据包传输无误时(发送方接收到ACK PID信号,表明数据传输无误),发送方和接收方补偿其数据触发值。然后用DATA1 PID向端点发送第二个数据包。成功传输后,DATA0 PID和DATA1 PID数据包交替发送(或再次触发)。USB将该机制作为其误差校正的一部分。
控制传输、批量传输、中断传输、同步传输
USB有上述四种传输类型。枚举期间外设告诉主机每个端点支持哪种传输类型。
只有主机能够发出控制传输,该传输由两个或三段组成。先通过设置数据包(8字节长)发送具体的主机请求。然后用一个可选数据包移动描述符表等数据。最后,用握手(状态)包终止控制传输。作为“关键”传输,控制传输有高总线优先权和最全面的误差校验。每个USB外设都需要一个默认的控制端点0。
批量传输使用流控制和误差校验移动数据。批量传输为异步方式,这意味着预定传输时间不固定或不能保证。主机安排批量传输的优先级为低。这并不说明批量传输很慢;如果总线被轻微加载,批量传输即可在所有可用带宽上进行。
实际上,中断传输和批量传输很难区分。他们之间的唯一区别是中断点包含轮询间隔值,用来告诉主机多长时间“ping”一次端点。所以批量和中断传输之间的唯一区别是主机多长时间安排一次传输。
同步(ISO)传输用于数据流,例如音频或视频,此时数据必须及时到达以避免音频或视频数据中断。当器件枚举时告诉主机其ISO端点对带宽的要求。如果带宽适当,主机保证每隔1ms发送一个USB帧,包含一个发往或来自设备的ISO数据包。ISO不使用握手(ACK/NAK)或总线重试。同步传输仅适用于全速和高速设备。
总线复位
主机通过发出总线复位信号复位USB外设。全速和低速USB的D+和D-线上通常使用差分信号。但也有例外,总线复位和包结束信号使用的是单端零信号,此时D+和D-均为低。
USB驱动器
Windows中内置了支持各种USB设备的驱动程序。如果固件支持这些标准设备之一,则USB产品不需要安装定制驱动程序(没人真的想要写Windows驱动)。Windows包含标准设备驱动程序,如HID (人机接口设备)和大容量存储器(磁盘驱动器、CD-ROM、存储器条).