在USB标准中,有着不同的USB类别,例如:存储设备是USB大容量存储器类,键盘、鼠标、游戏手柄是USB HID类(Human Interface Device),相机则实现了USB PTP(图片传输协议),USB转串口(虚拟COM端口等)是USB CDC ACM类等等。以下链接列出了Windows所支持的所有USB类别https://msdn.microsoft.com/en-us/library/windows/hardware/ff538820%28v=vs.85%29.aspx。当USB设备插入时,MCU(固件)与PC(USB主机)之间会进行通信。在该通信过程中,设备会告诉主机它所属的USB类别,主机会加载相应的驱动程序。你可以使用wireshark或者在Linux上使用dmesg来嗅探这种通信。但是,这种通信是非常低级的,并不易于人类阅读。因此,有一些工具如wireshark或者lsusb -v可以用来解析这种通信。一个USB设备必须实现一种特殊的描述符层次结构,其中包含USB设备内部结构的信息。这个层次结构是:设备描述符 -> 配置描述符 -> 接口描述符 -> 端点描述符EP0保留用于控制传输,否则任何传输都必须经过端点(OUT端点/IN端点)。请参见http://www.beyondlogic.org/usbnutshell/usb1.shtml USB是一个高度复杂的标准,因为它在一个物理接口中实现了广泛的功能,适用于大量不同的设备。我认为最复杂的USB类标准是USB音频...