微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > USB开发基础:USB命令(请求)和USB描述符

USB开发基础:USB命令(请求)和USB描述符

时间:12-13 来源:互联网 点击:
表10、USB接口描述符的结构
偏移量大小说明
0bLength1数字此表的字节数
1bDescriptorType1常量接口描述表类(此处应为0x04)
2bInterfaceNumber1数字接口号,当前配置支持的接口数组索引(从零开始)。
3bAlternateSetting1数字可选设置的索引值。
4bNumEndpoints1数字此接口用的端点数量,如果是零则说明此接口只用缺省控制管道。
5bInterfaceClass 1接口所属的类值:
零值为将来的标准保留。
如果此域的值设为FFH,则此接口类由厂商说明。
所有其它的值由USB说明保留。
6bInterfaceSubClass 1子类子类码
这些值的定义视bInterfaceClass域而定。
如果bInterfaceClass域的值为零则此域的值必须为零。
bInterfaceClass域不为FFH则所有值由USB所保留。
7bInterfaceProtocol 1协议协议码:bInterfaceClass和bInterfaceSubClass域的值而定.如果一个接口支持设备类相关的请求此域的值指出了设备类说明中所定义的协议.
8iInterface 1索引描述此接口的字串描述表的索引值。
对于bInterfaceClass字段,表示接口所属的类别,USB协议根据功能将不同的接口划分成不的类,其具体含义如下表所示:
表11、USB协议定义的接口类别(bInterfaceClass)
值(十六进制)类别
0x01音频类
0x02CDC控制类
0x03人机接口类(HID)
0x05物理类
0x06图像类
0x07打印机类
0x08大数据存储类
0x09集线器类
0x0ACDC数据类
0x0B智能卡类
0x0D安全类
0xDC诊断设备类
0xE0无线控制器类
0xFE特定应用类(包括红外的桥接器等)
0xFF厂商定义的设备
4、端点描述符
  端点是设备与主机之间进行数据传输的逻辑接口,除配置使用的端点0(控制端点,一般一个设备只有一个控制端点)为双向端口外,其它均为单向。端点描述符描述了数据的传输类型、传输方向、数据包大小和端点号(也可称为端点地址)等。
  除了描述符中描述的端点外,每个设备必须要有一个默认的控制型端点,地址为0,它的数据传输为双向,而且没有专门的描述符,只是在设备描述符中定义了它的最大包长度。主机通过此端点向设备发送命令,获得设备的各种描述符的信息,并通过它来配置设备。
表12、USB端点描述符的结构
偏移量大小说明
0bLength1数字此描述表的字节数长度
1bDescriptorType1常量端点描述表类(此处应为0x05)
2bEndpointAddress1端点此描述表所描述的端点的地址、方向:
Bit 3..0 :端点号.
Bit 6..4 :保留,为零
Bit 7:方向,如果控制端点则略。
0:输出端点(主机到设备)
1:输入端点(设备到主机)
3bmAttributes1位图此域的值描述的是在bConfigurationValue域所指的配置下端点的特性。
Bit 1..0 :传送类型
00=控制传送
01=同步传送
10=批传送
11=中断传送
所有其它的位都保留。
4wMaxPacketSize2数字当前配置下此端点能够接收或发送的最大数据包的大小。
对于实进传输,此值用于为每帧的数据净负荷预留时间。在实际运行时,管道可能不完全需要预留的带宽,实际带宽可由设备通过一种非USB定义的机制汇报给主机。对于中断传输,批量传输和控制传输,端点可能发送比之短的数据包
6bInterval1数字周期数据传输端点的时间间隙。
此域的值对于批传送的端点及控制传送的端点无意义。对于同步传送的端点此域必需为1,表示周期为1ms。对于中断传送的端点此域值的范围为1ms到255ms。
下表是一种鼠标的端点描述符的示例,该端点是一个中断端点:
表13、一种鼠标的端点描述符示例
值(十六进制)
bLength0x07
bDescriptorType0x05
bEndpointAddress0x81
bmAttributes0x03
wMaxPacketSize0x04
bInterval0x0A
5、字符串描述符
  字符串描述符是一种可选的USB标准描述符,描述了如制商、设备名称或序列号等信息。如果一个设备无字符串描述符,则其它描述符中与字符串有关的索引值都必须为0。字符串使用的是Unicode编码。
  主机请示得到某个字符串描述符时一般分成两步:首先主机向设备发出USB标准命令Get_Descriptor,其中所使用的字符串的索引值为0,设备返回一个字符串描述符,此描述符的结构如下:
表14、USB字符串描述符(响应主机请求时返回的表示语言ID的字符串描述符)
偏移量大小描述
0bLength1N+2此描述表的字节数
1bDescriptorType1常量字串描述表类型(此处应为0x03)
2wLANGID[0]2数字语言标识(LANGID)
码0

NwLANGID[x]2数字语言标识(LANGID)
码X
该字符串描述符双字节的语言ID的数组,wLANGID[0]~wLANGID[x]指明了设备支持的语言,具体含义可查看USB_LANGIDs.pdf。
  主机根据自己需要的语言,再次向设备发出USB标准命令Get_Descriptor,指明所要求得到的字符串的索引值和语言。这次设备所返回的是Unicode编号的字符串描述符,其结构如下:

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top