1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【USB笔记】接口描述符Interface Descriptor

【USB笔记】接口描述符Interface Descriptor

时间:2021-01-25 09:59:25

相关推荐

【USB笔记】接口描述符Interface Descriptor

USB笔记 接口描述符 (Interface Descriptor)

接口描述符(Interface Descriptor)描述了配置中一个特定的接口。配置提供了一个或多个接口,每个接口都含有类(Class),子类(SubClass)和协议(Protocol)的信息,以及接口所使用的端点(Endpoint)数目。

接口描述符(Interface Descriptor)总是作为配置描述符的一部分返回,不能直接用Get Descriptor或者Set Descriptor请求访问。

一个配置可含有多个同时活跃的接口。这些接口可能联合于某个功能,也可能并不相关。

每个接口都有它自己的接口描述符(Interface Descriptor)和附属描述符(subordinate descriptor)。

所有这些接口也都可拥有一个或多个替代的接口设置(alternate interface settings)。这些设置是相互排他的,每次只能有一个被激活。每个设置含有一个接口描述符(Interface Descriptor)及所的附属描述符(subordinate descriptor)。使用等时传输(isochronous transfers)的设备必须有替代接口设置(alternate interface settings),因为缺省的接口不能请求等时带宽(isochronous bandwidth)。

Interface Descriptor

bLength以字节为单位的描述符大小(0x09)。

bDescriptorType接口描述符类型,为INTERFACE(0x04)。

bInterfaceNumber接口的编号。表示该配置同时支持的接口序列索引。编号的值从0开始,缺省值为0x00。每个接口描述符中,该字段取值必须唯一。在组合设备(composite device )的配置中拥有多个同时活动的接口。

bAlternateSetting用来确认bInterfaceNumber的替代设置的编号。对于每个bInterfaceNumber ,设备将提供一个bAlternateSetting 字段为0x00的接口描述字,这是缺省的设置。替代设置的描述符bInterfaceNumber字段与缺省设备的值是相同的,但是bAlternateSetting的值不同,然后替代设置的描述符的最后5个字节的取值也会根据实际情况而不同。

对于每个bInterfaceNumber,每次只有一个bAlternateSetting可被激活。替代设置可使主机能够请求带有不同带宽或其他要求和性能的接口。Get Interface请求会取得当前被激活的bAlternateSettingSet Interface请求可选择特定bInterfaceNumber所应当使用的bAlternateSetting

bNumEndpoints这个接口使用的端点数量(不包括端点0)。如果这个值为0,那么这个接口使用默认的控制管道(Control Pipe),既只使用端点0。

bInterfaceClass类码(Class code),这个类码(Class code)由USB-IF分配。除了用于由接口规定的设备外,其他与设备描述符(Device Descriptor)中bDeviceClass 字段相同。

值0x00为保留值,从0x01 – 0xFE的值保留给USB定义的类,0xFF作为厂商定义的类。

bInterfaceSubClass子类码(SubClass code),这个子类码(SubClass code)由USB-IF分配。这个值由bInterfaceClass字段所限定。除了带有由接口定义的类的设备之外,此字段与设备描述符(Device Descriptor)中的bDeviceSubClass字段相同。如果bInterfaceClass等于0x00,则bInterfaceSubClass也必须等于0x00。如果bIntefaceClass是0x01–0xFE范围的值,则bInterfaceSubClass等于0x00或等于一个为接口的类定义的码。0xFF表明为厂商定义的子类(SubClass)。

bInterfaceProtocol协议码(Protocol code),这个协议码(Protocol code)由USB-IF分配。这个值由bInterfaceClass字段和bInterfaceSubClass字段所限定。如果接口支持专用的类型请求,这个协议码能识别出由协议类型规范定义、设备使用的协议。如果bInterfaceClass等于0x00,设备在这个接口不使用专门的类协议。如果为0xFF,设备在这个接口使用专用的厂商协议。除了带有由接口定义的类的设备之外,此字段与设备描述符(Device Descriptor)中的bDeviceProtocol字段相同。如果bIntefaceClass是0x01–0xFE范围的值,则bInterfaceProtocol 等于0x00或等于一个为接口的类定义的码。

iInterface描述这个接口的字符串描述符的索引。如果没有字符串描述符的话则此值为0。

获取接口描述符

主机通过发送Get Descriptor请求,取得配置描述符,接口描述符,端点描述符及其附属描述符。

接口描述符(Interface Descriptor)总是作为配置描述符Configuration Descriptor的一部分返回,不能单独获取。

下面举例说明一个获取接口描述符的过程。

获取一个键盘的接口描述符,该键盘的接口描述符如下所示:

使用USB分析仪抓包可以看到,获取配置描述符Configuration Descriptor,而接口描述符Interface Descriptor就包含在其中:

接口描述符Interface Descriptor的获取过程如下:

再展开看到详细的过程:

接下来详细看整个获取过程的各个字段含义:

一开始的setup包过程:

setup data:

IN包过程

OUT包过程:

完成整个接口描述符Interface Descriptor的获取。

描述符示例

这里举例一个带有该描述符的示例设备,这是一个键盘Keyboard的完整描述符信息。

Device Descriptor

Configuration Descriptor

Interface Descriptor

HID Descriptor

Endpoint Descriptor

Interface Descriptor

HID Descriptor

Endpoint Descriptor

附录

USB1.x/USB 2.0/USB 3.x Interface Descriptor

[参考资料]

Universal Serial Bus Specification Revision 1.0

Universal Serial Bus Specification Revision 1.1

Universal Serial Bus Specification Revision 2.0

Universal Serial Bus 3.0 Specification

Universal Serial Bus 3.1 Specification

Universal Serial Bus 3.2 Specification

USB Complete, 5th Edition

USB开发大全

USB2.0与OTG规范及开发指南

本文链接:/u012028275/article/details/109567196

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。