关于USB的Class,对于学习USB协议的人,估计早就听到过此名词了。
而对于USB的Class的分类,此处先列出那个最基本的分类表:
Base Class |
Descriptor Usage |
Description |
00h |
Device |
|
01h |
Interface |
|
02h |
Both |
|
03h |
Interface |
|
05h |
Interface |
|
06h |
Interface |
|
07h |
Interface |
|
08h |
Interface |
|
09h |
Device |
|
0Ah |
Interface |
|
0Bh |
Interface |
|
0Dh |
Interface |
|
0Eh |
Interface |
|
0Fh |
Interface |
|
10h |
Interface |
|
11h |
Device |
|
12h |
Interface |
|
DCh |
Both |
|
E0h |
Interface |
|
EFh |
Both |
|
FEh |
Interface |
|
FFh |
Both |
下面给出USB官方给出的USB类表
https://www.usb.org/defined-class-codes
一、为何要搞这么多USB的Class
其实,看到上表中的一堆的Class分类,一般人,都会晕的。所以,就要简单解释一下,为何会有这么多USB的Class分类。
首先我们要知道,USB协议设计的目的,就是为了基础知识1 “为何要有USB”中所提到的,用单一的USB接口,取代之前种类繁多的各种其他接口。而为了取代其他各种接口,那意味着就要实现,或者是支持,之前别的接口,所对应的各种功能。
因此,USB协议设计的时候,就是要把鼠标,键盘,大容量存储,图像等,这些之前是通过其他接口所实现的,各种的功能,都囊括进来。并且在协议中有对应的规范定义,支持这些功能。因此,才有了如此多的各种USB的Clas,即分类,根据功能而分出的各种类别。不同的Class分类,用于实现对应的功能,适用于相应的设备。
二、类设备的区分
首先我们需要知道怎么知道一个设备怎么分类
Base Class |
SubClass |
Protocol |
Meaning |
xxh |
xxh |
xxh |
Use class code info from Interface Descriptors |
USB官方给出的是用三种级别区分,分别是
类-子类-协议码
其中,类用来区分大类比如本文最前面的,人机机交互类,图像类,无线类等等
子类则是比如音频类( Audio),中的音频控制(进度),音频流(数据),数字乐器
协议类则比如人机接口类(HID)中的鼠标、键盘、触摸屏等
当然子类和协议类并不是区分的特别详细,因为有些分类其实两类就足够了。为了考虑将来这类设备出现新的事务,而做出了预留。
三、常见的USB类设备
1. 类设备(音频)
此基类是针对符合USB-IF网站上的音频设备类规范的支持音频的设备定义的。 该规范定义了可用的SubClass和Protocol值集。 超出该定义规范的值是保留的。 这些类代码只能在接口描述符中使用。包含的内容可能包括,放大器,接收器,乐器,录音和回放设备等设备
2.类设备(通信设备)
此基类是为符合USB-IF网站上的通信设备类规范的设备定义的。 该规范定义了可用的SubClass和Protocol值集。 超出该定义规范的值是保留的。 请注意,通信设备类规范要求在设备描述符中使用一些类代码值(三元组),并在接口描述符中使用一些类代码值。
3.类设备(人机接口设备)
此基类是为符合USB-IF网站上的HID设备类规范的设备定义的。 该规范定义了可用的SubClass和Protocol值集。 超出该定义规范的值是保留的。 这些类代码只能在接口描述符中使用。
5.类设备(物理设备)
此基类是为符合USB-IF网站上的物理设备类规范的设备定义的。 该规范定义了可用的SubClass和Protocol值集。 超出该定义规范的值是保留的。 这些类代码只能在接口描述符中使用。
6.类设备(图片)
此基类是为符合“成像设备类特定”的设备定义的
7.类设备(打印机设备)
此基类是为符合USB-IF网站上的打印机设备类规范的设备定义的。 该规范定义了可用的SubClass和Protocol值集。 超出该定义规范的值是保留的。 这些类代码只能在接口描述符中使用。
8.类设备(大容量存储)
此基类是为符合USB-IF网站上的大容量存储设备类规范的设备定义的。 该规范定义了可用的SubClass和Protocol值集。 超出该定义规范的值是保留的。 这些类代码只能在接口描述符中使用。
9.类设备(集线器类)
此基类是为USB集线器设备定义的,并且符合USB规范中的定义。 该规范定义了完整的三元组,如下所示。 保留所有其他值。 这些类代码只能在设备描述符中使用。
10.类设备(数据接口类)-0x0A
此类包含可用于流数据的各种设备,例如网络摄像头。 此类中存在许多不同的协议和传输模式。 不幸的是,大多数数据流设备使用供应商特定类。
11类设备(芯片卡/智能卡)-0x0B
此基类是为符合USB-IF网站上的智能卡设备类规范的设备定义的。 该规范定义了SubClass和Protocol值的可用集合。保留了该定义规范之外的值。 这些类代码只能在接口描述符中使用。
13 类设备(内容安全)-0x0D
此基类是为符合USB-IF网站上的内容安全设备类规范的设备定义的。 该规范定义了可用的SubClass和Protocol值集。 超出该定义规范的值是保留的。 这些类代码只能在接口描述符中使用。
14.类设备(视频)-0x0E
此基类是为符合USB-IF网站上的视频设备类规范的设备定义的。 该规范定义了可用的SubClass和Protocol值集。 超出该定义规范的值是保留的。 这些类代码只能在接口描述符中使用。
15.类设备(个人医疗保健)-0xF
此基类是为符合USB-IF网站上的个人医疗保健设备类规范的设备定义的。 该规范定义了可用的SubClass和Protocol值集。 超出该定义规范的值是保留的。 这些类代码只能在接口描述符中使用。
16.类设备(音频/视频)-0x10
USB音频/视频(AV)设备类定义描述了用于与复合设备中嵌入的设备或功能通信的方法,这些设备或功能用于处理音频,视频,语音以及所有与图像和声音相关的功能。 该规范定义了可用的SubClass和Protocol值集。 超出该定义规范的值是保留的。 这些类代码只能在接口描述符中使用。
17.类设备(广告牌设备)-0x11
此基类是为符合USB-IF网站上的Billboard Device Class Specification的设备定义的。 该规范定义了可用的SubClass和Protocol值集。 超出该定义规范的值是保留的。 这些类代码只能在设备描述符中使用。
18.类设备(Type-C桥接器件)
此基类是为符合USB-IF网站上的USB Type-C桥接器件类规范的器件定义的。 该规范定义了可用的SubClass和Protocol值集。 超出该定义规范的值是保留的。 这些类代码只能在接口描述符中使用。
Base Class |
SubClass |
Protocol |
Meaning |
12h |
00h |
00h |
USB Type-C Bridge Device |
220.类设备(诊断设备)-0xDC
此基类是为诊断设备定义的设备。 此类代码可用于设备或接口描述符。
跟踪是一种调试形式,其中处理器或系统活动在外部可见,实时或存储,然后由应用程序开发人员,应用程序或专门观察系统活动的外部设备检索。
调试或测试设计(Dfx)。 这是指提供调试或测试支持的逻辑块(例如,通过测试访问端口(TAP))。
DvC:USB设备的调试功能(设备功能)
Base Class |
SubClass |
Protocol |
Meaning |
DCh |
01h |
01h |
USB2 Compliance Device. Definition for this device can be found at http://www.intel.com/technology/usb/spec.htm |
02h |
00h |
Debug Target vendor defined. Please see http://www.intel.com/content/www/us/en/io/universal-serial-bus/extensible-host-controler-interface-usb-xhci.html for more info. |
|
01h |
GNU Remote Debug Command Set. Please see http://www.intel.com/content/www/us/en/io/universal-serial-bus/extensible-host-controler-interface-usb-xhci.html for more info. |
||
03h |
00h |
Undefined |
|
01h |
Vendor defined Trace protocol on DbC. |
||
04h |
00h |
Undefined |
|
01h |
Vendor defined Dfx protocol on DbC. |
||
05h |
00h |
Vendor defined Trace protocol over General Purpose (GP) endpoint on DvC. |
|
01h |
GNU Protocol protocol over General Purpose (GP) endpoint on DvC. |
224.类设备(无线控制类)-0xE0
此基类是为无线控制器设备定义的。 保留了下表中未显示的值。 这些类代码将在接口描述符中使用,但蓝牙类代码除外,它也可以在设备描述符中使用。
239.类设备(杂类)-0xEF
此基类是为其他设备定义定义的。 保留了下表中未显示的值。 这些类代码(设备或接口描述符)的使用在下面的每个条目中具体注释。
Base Class |
SubClass |
Protocol |
Meaning |
|
EFh |
01h |
01h |
Active Sync device. This class code can be used in either Device or Interface Descriptors. Contact Microsoft for more information on this class. |
|
02h |
Palm Sync. This class code can be used in either Device or Interface Descriptors. |
|||
02h |
01h |
Interface Association Descriptor. The usage of this class code triple is defined in the Interface Association Descriptor ECN that is provided on www.usb.org . This class code may only be used in Device Descriptors. |
||
02h |
Wire Adapter Multifunction Peripheral programming interface. Definition can be found in the Wireless USB Specification in Chapter 8. This class code may only be used in Device Descriptors |
|||
03h |
01h |
Cable Based Association Framework. This is defined in the Association Model addendum to the Wireless USB specification. This class code may only be used in Interface Descriptors. |
||
04h |
01h |
RNDIS over Ethernet. |
254.类设备(特定应用)
此基类是为符合USB-IF网站上的几个类规范的设备定义的。 该规范定义了可用的SubClass和Protocol值集。 超出该定义规范的值是保留的。 这些类代码只能在接口描述符中使用。
Base Class |
SubClass |
Protocol |
Meaning |
FEh |
01h |
01h |
Device Firmware Upgrade. Device class definition provided on www.usb.org . |
02h |
00h |
IRDA Bridge device. Device class definition provided on www.usb.org . |
|
03h |
00h |
USB Test and Measurement Device. Definition provided in the USB Test and Measurement Class spec found on www.usb.org . |
|
01h |
USB Test and Measurement Device conforming to the USBTMC USB488 Subclass Specification found on www.usb.org. |
255.类设备(厂商自定义)-0xFF
此类包含不属于任何其他类的设备和具有特定于供应商的接口和/或协议的设备。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_16777851/article/details/86103430
关于USB的Class,对于学习USB协议的人,估计早就听到过此名词了。
而对于USB的Class的分类,此处先列出那个最基本的分类表: