是什么,为什么要关心)
USB 教程合集 - 总目录本讲目标理解标准设备类与厂商自定义类的区别认识 HID、CDC、MSC、Audio 和 Video 等常见类别。一、如果每家厂商都自己定义协议会发生什么假设有十家厂商生产 USB 键盘每家都使用完全不同的数据格式。那么操作系统就可能需要针对每一家厂商开发一套驱动用户使用和维护起来都会非常麻烦。USB 类规范就是为了解决这类问题而设计的。它通过统一设备的行为、请求和数据格式让操作系统可以使用通用驱动支持符合规范的设备。因此USB Class 不只是一个编号而是一套通信约定。二、常见的 USB 设备类2.1 HID人机接口设备HIDHuman Interface Device常见于键盘、鼠标和许多游戏手柄。HID 的一个重要特点是使用报告描述符Report Descriptor描述数据格式。操作系统根据这些信息理解设备上报的数据。2.2 CDC通信设备类CDCCommunication Device Class包含多种通信设备子类。其中CDC ACM 常用于实现 USB 虚拟串口。电脑上可能出现 COM 端口应用程序可以通过串口 API 收发数据。不过虚拟串口并不意味着 USB 线上真的存在 UART 的 TX/RX 信号。2.3 MSC大容量存储类MSCMass Storage Class用于 U 盘等存储设备。这类设备通常使用批量端点并配合相应的存储命令协议让操作系统能够读取和写入存储介质。2.4 Audio音频类USB Audio 用于声卡、麦克风、扬声器等设备涉及音频数据格式、采样率和相关控制机制。2.5 Video视频类USB Video Class通常简称 UVC是 USB 摄像头常见的标准类别之一。它定义了设备如何描述视频功能、协商格式以及传输视频数据。三、标准类与厂商自定义类有什么区别标准类的优势是兼容性。只要设备遵守相应类规范并且目标操作系统具有合适的驱动支持通常就可以利用系统提供的通用驱动。厂商自定义类则不同。当接口类代码声明为FFh时通常表示厂商自定义接口。此时厂商可以定义自己的命令和数据格式但 Host 端也需要有能够理解这些协议的软件或驱动。这里必须强调仅仅把接口类代码设置为FFh并不会自动产生一套可用的通信协议。你仍然需要定义数据格式、命令、响应、错误处理和 Host 端的访问方式。四、一个设备可以同时使用不同的类吗可以。例如一个 USB 设备可能包含USB Device | └── Configuration | ├── HID Interface | └── CDC InterfaceHID 接口负责按键和状态上报CDC 接口负责调试信息或命令通信。这类设备涉及多个接口的组织方式我们将在第8讲中详细介绍。五、单片机开发中应该怎么选如果目标是实现键盘或鼠标通常优先考虑 HID。如果目标是让电脑通过串口助手收发数据CDC ACM 往往比较方便。如果目标是实现 U 盘功能需要考虑 MSC 以及相应的存储协议。如果标准类无法满足需求才进一步评估厂商自定义接口是否合适。选择之前最好确认目标操作系统、驱动绑定方式、开发 SDK 和后续维护成本。六、本讲小结USB Class 是 Host 与 Device 之间的一套标准化约定。标准类通常能够减少驱动开发工作量厂商自定义类则提供更大的灵活性但也需要自行维护两端的通信协议。留给下一讲的问题能不能亲手实现一个 USB 虚拟串口让开发板插入电脑后出现 COM 端口并通过串口助手完成数据收发下一讲我们开始第一个实战项目CDC 虚拟串口。