4.4 端点描述符

端点描述符定义了 USB 设备中数据通信的具体逻辑接口(端点),包括传输方向、类型、包大小等关键参数。每个非控制端点必须有一个端点描述符。

USB 端点描述符的结构

偏移量 大小 描述
0 bLength 1 数字 描述符长度(固定为 0x07 字节)。
1 bDescriptorType 1 常量 描述符类型(此处为 0x05,表示端点描述符)。
2 bEndpointAddress 1 端点 端点地址与方向
• Bit 7: 0=OUT(主机→设备),1=IN(设备→主机)
• Bit 3-0: 端点号(1-15)
3 bmAttributes 1 位图 传输类型
• Bit 1-0: 00=控制,01=同步,10=批量,11=中断
• 其他位保留(必须为 0
4 wMaxPacketSize 2 数字 当前端点支持的最大数据包大小(单位:字节)。
6 bInterval 1 数字 轮询间隔
• 同步/中断传输:单位为毫秒(1-255)
• 批量/控制传输:忽略

关键字段详解

  1. bEndpointAddress

    • 示例0x81 表示端点号 1,方向为 IN(设备→主机)。
  2. bmAttributes 传输类型

类型 典型应用
00 控制传输 设备配置(端点 0
01 同步传输 实时音频/视频
10 批量传输 U盘、打印机
11 中断传输 键盘、鼠标
  1. wMaxPacketSize

    • 低速设备:最大 8 字节
    • 全速设备:最大 64 字节(控制端点)或 1023 字节(其他端点)
    • 高速设备:最大 1024 字节
  2. bInterval

    • 中断传输:通常为 10(即 10ms 轮询一次)。
    • 同步传输:固定为 1(每 1ms 一帧)。

示例:鼠标的中断端点描述符

字段 值(十六进制) 说明
bLength 0x07 描述符长度为 7 字节。
bDescriptorType 0x05 端点描述符类型。
bEndpointAddress 0x81 IN 端点,端点号 1
bmAttributes 0x03 中断传输(11)。
wMaxPacketSize 0x04 最大包大小为 4 字节(鼠标数据)。
bInterval 0x0A 每 10ms 轮询一次。

注意事项

  1. 控制端点(端点 0
    • 无需描述符,其参数由设备描述符中的 bMaxPacketSize0 定义。
  2. 同步传输
    • 不支持握手包(无 ACK/NAK),需保证实时性但允许数据丢失。
  3. 端点方向
    • 同一端点号可同时存在 INOUT 端点(如端点 1 IN1 OUT)。