建立 USB HID(Human Interface Device)连接的步骤涉及多个阶段,包括设备连接、设备描述符请求、配置、接口和端点设置,以及 HID 特定描述符和报告的处理。以下是建立 USB HID 连接的详细步骤:
1. 设备连接
当 HID 设备(如键盘、鼠标)连接到 USB 主机(如计算机)时,主机会检测到设备的连接并为其分配一个唯一的地址。
2. 获取设备描述符
主机通过控制传输请求设备描述符:
- 请求设备描述符:
- 主机发送 GET_DESCRIPTOR 请求,类型为 DEVICE_DESCRIPTOR。
- 设备响应包含基本信息,如 USB 版本号、设备类、供应商 ID(VID)、产品 ID(PID)等。
3. 获取配置描述符
主机请求设备的配置描述符:
- 请求配置描述符:
- 主机发送 GET_DESCRIPTOR 请求,类型为 CONFIGURATION_DESCRIPTOR。
- 设备响应包含配置描述符、接口描述符和端点描述符的集合。
4. 解析接口描述符
主机解析配置描述符中的接口描述符,找到 HID 接口:
- 找到 HID 接口:
- 接口描述符中的 bInterfaceClass 字段为 0x03,表示 HID 设备。
5. 获取 HID 描述符
主机请求 HID 描述符:
- 请求 HID 描述符:
- 主机发送 GET_DESCRIPTOR 请求,类型为 HID_DESCRIPTOR(0x21)。
- 设备响应包含 HID 描述符,包括 HID 版本、国家代码、报告描述符长度等。
6. 获取报告描述符
主机请求 HID 报告描述符:
- 请求报告描述符:
- 主机发送 GET_DESCRIPTOR 请求,类型为 REPORT_DESCRIPTOR(0x22)。
- 设备响应包含报告描述符,定义了设备的输入、输出和特征报告格式。
7. 设置配置
主机为设备设置配置:
- 设置配置:
- 主机发送 SET_CONFIGURATION 请求,选择一个配置(通常是配置描述符中的一个)。
8. 启动数据传输
主机和设备准备好之后,数据传输开始:
- 中断传输:
- HID 设备通常使用中断端点进行数据传输。
- 主机周期性地轮询设备,读取输入报告或发送输出报告。
9. 处理 HID 报告
主机解析 HID 报告描述符并处理数据:
- 解析报告:
- 根据报告描述符,主机解析从设备接收到的输入报告。
- 主机也可以根据报告描述符格式发送输出报告到设备。