整理 使用usb术语详解

来源:互联网 发布:自学java三个月找工作 编辑:程序博客网 时间:2024/05/30 23:31
 

如果您刚开始接触 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 、存储器条 ) 。

原创粉丝点击