1. USB 1.1 协议概述

1.1 USB 1.1 标准的历史背景

通用串行总线(Universal Serial Bus,USB)1.1 标准于 1998 年 9 月由 USB Implementers Forum(USB-IF)正式发布。它是 USB 1.0(1996 年 1 月)的修正与增强版本,解决了早期版本中存在的电气规范模糊、HUB 重定时要求不明确以及低速设备兼容性等问题。USB 1.1 是第一个被广泛商业部署的 USB 标准,奠定了 PC 外设连接统一接口的基础。

关键里程碑: USB 1.1 的发布标志着“即插即用”外设连接时代的真正开始。它替代了传统的串口(RS-232)、并口(LPT)、PS/2 等低速接口,使得键盘、鼠标、游戏杆、调制解调器等设备可以通过单一标准接口与主机通信。

1.2 USB 1.1 的技术特点

USB 1.1 协议定义了两种数据传输速率模式:低速(Low-Speed) 和 全速(Full-Speed)。这两种模式在电气特性、信号编码、帧结构以及事务处理上存在显著差异。

特性 低速(Low-Speed) 全速(Full-Speed)
数据速率 1.5 Mbps 12 Mbps
信号编码 NRZI + 位填充(每 6 位插入 1 个填充位) NRZI + 位填充(每 6 位插入 1 个填充位)
电缆最大长度 3 米(受限于信号上升时间) 5 米
驱动电流 8 mA(D+ 或 D- 上拉电阻) 8 mA(D+ 上拉电阻)
设备检测 D- 线上拉电阻(15 kΩ) D+ 线上拉电阻(15 kΩ)
帧周期 1 ms(微帧不可用) 1 ms(微帧不可用)
典型设备 鼠标、键盘、游戏杆 打印机、扫描仪、音频设备、调制解调器
调试提示: 在 UHCI 调试端口捕获低速事务时,需要特别注意帧起始(SOF)包在低速模式下的处理方式。UHCI 控制器在低速帧中不会发送完整的 SOF 包,而是通过保持总线空闲状态来模拟帧起始。这是 UHCI 与 OHCI 在低速处理上的关键区别。

1.3 低速与全速的电气识别机制

USB 1.1 通过 D+ 和 D- 数据线上的上拉电阻位置来区分设备速度。主机或 HUB 的下行端口在 D+ 和 D- 上均连接 15 kΩ 下拉电阻。设备端则根据其速度模式,在对应的数据线上连接 1.5 kΩ 上拉电阻:

  • 低速设备: 上拉电阻连接在 D- 线上。
  • 全速设备: 上拉电阻连接在 D+ 线上。

当设备插入时,主机通过检测哪条数据线被拉高来识别设备速度。这一机制在 UHCI 调试中至关重要,因为调试端口捕获的包必须与正确的速度模式对应解析。

USB 1.1 速度识别机制(上拉电阻位置) 主机 / HUB D+ 下拉 15kΩ D- 下拉 15kΩ 低速设备 D- 上拉 1.5kΩ 全速设备 D+ 上拉 1.5kΩ 主机检测 D- 拉高 → 低速 主机检测 D+ 拉高 → 全速

1.4 USB 1.1 与 USB 2.0 / 3.x 的兼容性关系

USB 标准在设计之初就强调了向后兼容性。USB 1.1 设备可以在 USB 2.0 和 USB 3.x 主机上正常工作,反之亦然,但存在以下关键约束:

兼容场景 工作模式 实际速率 注意事项
USB 1.1 设备插入 USB 2.0 主机 全速或低速(由设备决定) 1.5 Mbps 或 12 Mbps 主机控制器自动协商为设备支持的最高速率。USB 2.0 的微帧(125 µs)不可用,仍使用 1 ms 帧。
USB 1.1 设备插入 USB 3.x 主机 全速或低速(通过 USB 2.0 兼容模式) 1.5 Mbps 或 12 Mbps USB 3.x 主机包含独立的 USB 2.0 控制器(通常为 EHCI 或 xHCI 的兼容模式)。设备通过 USB 2.0 信号线(D+/D-)通信。
USB 2.0 设备插入 USB 1.1 主机 全速(如果设备支持全速) 12 Mbps USB 2.0 高速(480 Mbps)设备无法在 USB 1.1 主机上工作,除非设备支持降级到全速模式(即“操作模式切换”)。
USB 3.x 设备插入 USB 1.1 主机 全速(如果设备支持全速) 12 Mbps USB 3.x 设备必须包含 USB 2.0 兼容电路。如果设备仅支持 SuperSpeed,则无法在 USB 1.1 主机上工作。
调试陷阱: 在使用 UHCI 调试端口捕获低速事务时,如果目标设备是 USB 2.0 或 3.x 兼容设备,务必确认该设备在低速模式下是否仍然保持标准的 USB 1.1 电气特性。部分现代设备在低速模式下可能引入额外的信号抖动或电源管理行为,导致捕获到的波形与标准 USB 1.1 规范存在偏差。

1.5 USB 1.1 协议栈层次结构

USB 1.1 协议从逻辑上分为三个层次:总线接口层、设备层 和 功能层。UHCI 调试端口主要工作在总线接口层,负责捕获物理层上的包事务。

USB 1.1 协议栈层次结构 功能层(Function Layer) 设备功能接口(如 HID 键盘报告、Mass Storage SCSI 命令) 设备层(Device Layer) 默认管道(Endpoint 0)、设备请求、描述符、配置 总线接口层(Bus Interface Layer) 包事务(令牌包、数据包、握手包)、帧格式、NRZI 编码 UHCI 调试端口捕获范围:总线接口层

1.6 USB 1.1 在嵌入式调试中的意义

尽管 USB 2.0 和 USB 3.x 在消费电子领域占据主导地位,USB 1.1 协议在嵌入式系统调试中仍然具有不可替代的价值:

  • 低速设备广泛存在: 键盘、鼠标、触摸板、游戏手柄等 HID 设备绝大多数仍工作在低速模式。这些设备是嵌入式系统(如开发板、工控机、物联网网关)最常用的人机交互接口。
  • UHCI 调试端口的独特性: Intel 的 UHCI(Universal Host Controller Interface)是唯一在硬件层面提供了“调试端口”寄存器的主机控制器接口。通过 UHCI 调试端口,开发者可以直接捕获 USB 总线上的原始包事务,而无需依赖软件协议栈的日志输出。
  • 低速事务的时序分析: 低速事务的位时间(约 666 ns)比全速(约 83 ns)更宽松,使得使用逻辑分析仪或示波器进行物理层分析更加可行。UHCI 调试端口捕获的数据可以直接与示波器波形对照,用于验证驱动时序或排查硬件电气问题。
课程定位: 本课程将围绕 UHCI 调试端口,深入讲解如何捕获 USB 1.1 低速事务,并解析令牌包(Token)、数据包(Data)、握手包(Handshake)的协议细节。掌握这些技能后,你将能够独立分析 USB 设备枚举失败、数据包丢失、CRC 校验错误等常见调试问题。