当前位置:
文档之家› 图解USB协议之三 USB标准描述符
图解USB协议之三 USB标准描述符
2 … 2
值 N+2 常量
数字 … 数字
描述 描述符的大小 字串描述符类型=03H
语言标识(LANGID)码 0
… 语言标识(LANGID)码 X
6、UNICODE 字串描述符
欢迎访问avatar的电子博客:EET站点:http://forum.eet-cn.com/BLOG_zhou36_301.HTM EDN站点:http://blog.ednchina.com/avatar/
2
bEndpointAddress
3
bmAttributes
4
wMaxPacketSize
6
bInterval
1 端点 此描述符所描述的端点的地址。此地址的编码如 下: Bit 3..0 : 端点号. Bit 6..4 : 保留,为零 Bit 7: 方向,如果控制端点则略。 0:出端点 1:入端点
1 位图 此域的值描述的是在 bConfigurationValue 域所指的配置下端点的特性。 Bit 1..0 :传送类型 00=控制传送 01=同步传送 10=批传送 11=中断传送 所有其它的位都保留。
D7: 保留(设为一) D6: 自给电源 D5: 远程唤醒 D4..0:保留(设为一)
欢迎访问avatar的电子博客:EET站点:http://forum.eet-cn.com/BLOG_zhou36_301.HTM EDN站点:http://blog.ednchina.com/avatar/
Avatar 的邮箱:avatar_1210@tom.com
2 bInterfaceNumber
3 bAlternateSetting 4 bNumEndpoints
5 bBiblioteka BaidunterfaceClass
6 bInterfaceSubClass
7 bInterfaceProtocol
大小 1 1 1
1 1
值 数字 常量 数字
数字 数字
说明 描述符的大小=09H 接口描述符类型=04H 接口号,当前配置支持的接口数组索引(从零开 始) 可选设置的索引值。 此接口用的端点数量,如果是零则说明此接口只 用缺省控制管道。
Avatar 的邮箱:avatar_1210@tom.com
(图 5)(本数据由 HD-USB12 USB 协议分析仪采集) a、Index[67 - 78]:设备发送到主机的描述,详见图 6、图 7、图 8 及图 9。 b、图 6 为配置描述符,其各字段含义参考上面标准配置描述符。
(图 6)(本数据由 HD-USB12 USB 协议分析仪采集) c、图 7 为接口描述符,其各字段含义参考上面标准接口描述符。
最近忙于公司的项目和本人的驾驶证考试,拖延了这个系列第三篇的完成, 先向各位支持我的 DX 表示一下歉意。不过好在驾驶证的蝴蝶桩考试顺利通过,
自己先庆贺一下 ,嘿嘿。
最近做一个手持机的项目,第一次真正感受到了手头这个小设备的功力。事
情是这样的:要将 n 年前写的基于 51 的固件代码移植到 AVR,问题出现了….,
Avatar 的邮箱:avatar_1210@tom.com
2、枚举成功后主机得到的第二个描述符(配置描述符),见图 3
(图 3)(本数据由 HD-USB12 USB 协议分析仪采集) a、Index[54 - 56]:设备发送到主机的描述,详见图 4。 b、图 4 为配置描述符,其各字段含义参考上面标准配置描述符。
1 子类 子类码 这些码值的具体含义根据 bDeviceClass 域
来看。 如 bDeviceClass 域为零,此域也须为零
如 bDeviceClass 域为 FFH,此域的所有值保 留。 1 协议 协议码
这些码的值视 bDeviceClass 和 bDeviceSubClass 的值而定。
如果设备支持设备基础上的类相关的协议, 此码标志了设备类说明上的值。
枚举不成功!立刻想到用协议分析仪看看……(此处省略 168 字),结果当然是
一目了然,几分钟轻松搞定!关于这次的经历,回头专门写一个帖子吧,先卖个
关子,哈。
闲话少说,本篇图解 USB 标准描述符。
数据采集设备:HD-USB12 USB 协议分析仪。
还是先复习一下 USB 协议的相关内容。USB 通迅配置是通过描述符完成的,
8 MaxPower
一个既用总线电源又有自给电源的设备会在
MaxPower 域指出需要从总线取的电量。并设置
D6 为一。运行时期的实际电源模式可由
GetStatus(DEVICE) 请求得到。
1
mA 在此配置下的总线电源耗费量。以 2mA 为一个单
位。
3、标准接口描述符
偏移量 0 1
域 bLength bDescriptorType
欢迎访问avatar的电子博客:EET站点:http://forum.eet-cn.com/BLOG_zhou36_301.HTM EDN站点:http://blog.ednchina.com/avatar/
Avatar 的邮箱:avatar_1210@tom.com
(图 7)(本数据由 HD-USB12 USB 协议分析仪采集) d、图 8 及图 9 为端点描述符,其各字段含义参考上面标准端点描述符。
下面对 USB 标准描述符进行说明。
一、USB 标准描述符
1、标准设备描述符
偏移量
域
0 bLength
大小 1
值 数字
描述 描述符的大小=12H
1 bDecriptorType 2 bcdUSB
4 bDeviceClass
1 常量 设备描述符类型=01H
2 BCD 码 此设备与描述符兼容的 USB 设备说明版本号(BCD 码)
1
类 设备类码
如果此域的值为 0 则一个设置下每个接口指
出它自己的类,并个接口各自独立工作。
如果此域的值处于 1~FEH 之间,则设备在不 同的接口上支持不同的类。并这些接口可能不能
独立工作。此值指出了,这些接口集体的类定义。 如果此域设为 FFH,则此设备的类由厂商定
义。
欢迎访问avatar的电子博客:EET站点:http://forum.eet-cn.com/BLOG_zhou36_301.HTM EDN站点:http://blog.ednchina.com/avatar/
(图 8)(本数据由 HD-USB12 USB 协议分析仪采集)
欢迎访问avatar的电子博客:EET站点:http://forum.eet-cn.com/BLOG_zhou36_301.HTM EDN站点:http://blog.ednchina.com/avatar/
Avatar 的邮箱:avatar_1210@tom.com
如果此域的值为零,则此设备不在设备基础 上支持设备类相关的协议。然而,它可能在接口 基础上支持设备类相关的协议。
如果此域的值为 FFH,此设备使用厂商定义 的协议。 1 数字 端点 0 的最大包大小(仅 8,16,32,64 为合法值)
2
ID 厂商标志(由 USB 标准付值)
2
ID 产品标志(由厂商付值)
2 数字 当前配置下此端点能够接收或发送的最大数据包 的大小。 对与同步传送此值用于为每幀的数据净负荷预 留时间。而通道可能在实际运行时不需要预留的 带宽。实际带宽可由设备通过一种非 USB 定义的 机制汇报给主机. 对于中断传送,批传送,控制传送.端点可能发 送较小的数据包。并且在结束传送后既有可能间 隙时间来重启,也有可能不需要这段时间。具体 请参照第五章。
(图 1)(本数据由 HD-USB12 USB 协议分析仪采集) a、Index[38 - 44]:设备发送到主机的描述,详见图 2。 b、图 2 为设备描述符,其各字段含义参考上面标准设备描述符。
(图 2)(本数据由 HD-USB12 USB 协议分析仪采集)
欢迎访问avatar的电子博客:EET站点:http://forum.eet-cn.com/BLOG_zhou36_301.HTM EDN站点:http://blog.ednchina.com/avatar/
1 数字 轮寻数据传送端点的时间间隙。 此域的值对于批传送的端点及控制传送的端
点忽略。对于同步传送的端点此域必需为 1。对 于中断传送的端点此域值的范围为 1 到 255。
5、语言描述符
偏移量 0 1
域 bLength bDescriptorType
2
wLANGID[0]
…
…
N
wLANGID[x]
大小 1 1
1
类 类值
零值为将来的标准保留。
如果此域的值设为 FFH,则此接口类由厂商说
明。
所有其它的值由 USB 说明保留。
1 子类 子类码
这些值的定义视 bInterfaceClass 域而定。 如果 bInterfaceClass 域的值为零则此域的值
必须为零。
bInterfaceClass 域不为 FFH 则所有值由 USB 所保留。
Avatar 的邮箱:avatar_1210@tom.com
5 bDeviceSubClass
6 bDevicePortocol
7 bMaxPacketSize0 8 idVendor 10 idProduct 12 bcdDevice 14 iManufacturer 15 iProduct 16 iSerialNumber 17 bNumConfigurations
Avatar 的邮箱:avatar_1210@tom.com
偏移量 0 1
域 bLength bDescriptorType
2
bString
大小 1 1
N
值 数字 常量
数字
描述 描述符的大小 字串描述符类型=03H
UNICODE 编码的字串
二、图解枚举过程中的描述符 1、枚举成功后主机得到的第一个描述符(设备描述符),见图 1
大小 1 1
值 数字 常量
说明 描述符的大小=07H 端点描述符类型=05H
欢迎访问avatar的电子博客:EET站点:http://forum.eet-cn.com/BLOG_zhou36_301.HTM EDN站点:http://blog.ednchina.com/avatar/
Avatar 的邮箱:avatar_1210@tom.com
1 协议 协议码:bInterfaceClass 和
bInterfaceSubClass 域的值而定.如果一个
接口支持设备类相关的请求此域的值指出了设备
类说明中所定义的协议.
8 iInterface
1 索引 描述此接口的字串描述符的索引值。
4、标准端点描述符
偏移量
域
0
bLength
1
bDescriptorType
欢迎访问avatar的电子博客:EET站点:http://forum.eet-cn.com/BLOG_zhou36_301.HTM EDN站点:http://blog.ednchina.com/avatar/
Avatar 的邮箱:avatar_1210@tom.com
图解 USB 协议之三 USB 标准描述符
(图 4)(本数据由 HD-USB12 USB 协议分析仪采集) 3、随后为配置描述符、接口描述符及端点描述符见图 5
欢迎访问avatar的电子博客:EET站点:http://forum.eet-cn.com/BLOG_zhou36_301.HTM EDN站点:http://blog.ednchina.com/avatar/
(图 9)(本数据由 HD-USB12 USB 协议分析仪采集)
以上描述符不包括高速 USB 的描述符,如速度配置描述符等,详细请参考 USB 标准。
4 bNumInterfaces
1
5 bCongfigurationValue 1
6 iConfiguration
1
7 bmAttributes
1
值 数字 常量 数字
数字 数字
索引 位图
描述 描述符的大小=09H 配置描述符类型=02H 此配置信息的总长(包括配置,接口,端点和设 备类及厂商定义的描述符) 此配置所支持的接口个数 在 SetConfiguration()请求中用作参数来 选定此配置。 描述此配置的字串描述符索引 配置特性:
2 BCD 码 设备发行号(BCD 码)
1 索引 描述厂商信息的字串的索引。 1 索引 描述产品信息的字串的索引。 1 索引 描述设备序列号信息的字串的索引。 1 数字 可能的设置数
2、标准配置描述符
偏移量 0 1 2
域 bLength bDescriptorType wTotalLength
大小 1 1 2