实用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术语详 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)