USB描述符
来源:互联网 发布:mvp 网络请求 编辑:程序博客网 时间:2024/05/16 16:08
http://blog.csdn.net/kingbeful/article/details/638612
标识域
数据包类型
标识域名称
标识符值PID[3:0]
标识域意义
令牌包
输出(OUT)
0001
启动一个方向为主机到设备的数据传输,并且包含了设备地址和端点信号
输入(IN)
1001
启动一个方向为设备到主机的数据传输,并且包含了设备地址和端点信号
帧起始(SOF)
0101
表示一个帧的开始,并且包含了相应的帧号
设置(SETUP)
1101
启动一个方向为通过控制传输管道进行的数据传输,并且包含了设备地址和端点信号
数据包
数据0(DATA0)
0011
偶数据包
数据1(DATA1)
1011
奇数据包
握手包
确认(ACK)
0010
接收到没有错误的数据包
无效(NAK)
1010
接收端无法接收或发送端无法发送数据
错误(STALL)
1110
端点被禁止或不支持控制管道请求
特殊包
前导(PRE)
1100
用于启动下行端口的低速设备的数据传输
完整的PID
标识域名称
标识符值(二进制)
标识符值(十六进制)
OUT
1000 0111
0x87
IN
1001 0110
0x96
SOF
1010 0101
0xa5
SETUP
1011 0100
0xb4
DATA0
1101 0010
0xc3
DATA1
1101 0010
0xd2
ACK
0100 1011
0x4b
NAK
0101 1010
0x5a
STALL
0111 1000
0x78
PRE
0011 1100
0x3c
令牌包
8bit
8bit
7bit
4bit
5bit
SYNC
PID
ADDR
ENDP
CRC5
IN、OUT、SETUP包的数据格式
数据包
8bit
8bit
0~1023Byte
5bit
SYNC
PID
DATA
CRC5
数据包DATA0、DATA1的数据格式
握手包
8bit
8bit
SYNC
PID
确认包ACK:用于表示数据包被成功接收,具体说
l 标识域PID被正确接收
l 并没有发生数据位错误
l 没有发生数据域的CRC校验错误
无效包NAK:属于暂态,设备结束“忙”后,就会处于空闲,主要应用于2种场合
l 接到主机发送的OUT命令后,设备无法接收数据
l 接到主机发送的IN命令后,设备没有数据发送给主机
错误包STALL:主要应用于3种场合
l 设备无法发送数据
l 设备无法接收数据
l 不支持某一种控制管道的命令
数据传输类型
数据传输类型
支持设备类型
包含的基本事务
低速
全速
高速
IN
OUT
SETUP
中断传输
○
○
○
○
○
×
批量传输
×
○
○
○
○
×
同步传输
×
○
○
○
○
×
控制传输
○
○
○
○
○
○
写不动了,明天再补吧
//-------------------------------------------------//
//-------------以下为3月26日补充-------------//
标准USB描述符
l 设备描述符(Device Descriptor)
l 配制描述符(Configuration Descriptor)
l 接口描述符(Interface Descriptor)
l 端点描述符(Endpoint Descriptor)
l 字符描述符(String Descriptor,可选)
USB描述符编号
编号
描述符类型
1
设备描述符
2
配置描述符
3
接口描述符
4
端点描述符
5
字符描述符
设备描述符的字段组成
偏移量
字段名称
长度(字节)
字段值
意义
0
bLength
1
数字
设备描述符的字节数大小
1
bDescriptorType
1
常数
设备描述符类型编号
2
bcdUSB
2
BCD码
USB版本号
4
bDeviceClass
1
类
USB分配的设备类代码
5
bDeviceSubClass
1
子类
USB分配的子类代码
6
bDeviceProtocol
1
协议
USB分配的设备协议代码
7
bMaxPacketSize0
1
数字
端点0的最大包的大小
8
idVendor
2
ID编号
厂商编号
10
idProduct
2
ID编号
产品编号
12
bcdDevice
2
BCD码
设备出厂编号
14
iManufacturer
1
索引
描述厂商字符串的索引
15
iProduct
1
索引
描述产品字符串的索引
16
iSerialNumber
1
索引
描述设备序列号字符串的索引
17
bNumConfigurations
1
索引
可能的配制数量
字段名称
说明
bLength
0x12
bDescriptorType
0x01
bcdUSB
USB1.1->0x0110
USB2.0->0x0200
bDeviceClass
USB标准设备类:0x00~0xfe
厂商定义设备类:0xff
bDeviceSubClass
USB标准设备子类:0x00~0xfe
厂商定义设备子类:0xff
bDeviceProtocol
USB标准设备协议:0x00~0xfe
厂商定义设备协议:0xff
bMaxPacketSize0
低速:0x08
全速:0x08、0x10、0x20、0x40
高速:0x40
idVendor
厂商从USB IF获得的ID
idProduct
厂商定义的产品ID
bcdDevice
厂商定义设备出厂编号(版本号)
iManufacturer
0表示没有使用该字段
iProduct
0表示没有使用该字段
iSerialNumber
每个设备都有一个特定的序列号,供主机识别不同的设备
bNumConfigurations
该设备总共支持的配置描述符的数量
配置描述符的字段组成
偏移量
字段名称
长度(字节)
字段值
意义
0
bLength
1
数字
配置描述符的字节数大小
1
bDescriptorType
1
常数
配置描述符类型编号
2
wTotalLength
2
数字
此配置所返回的所有数据大小
4
bNumInterfaces
1
数字
此配置所支持的接口数量
5
bConfigurationValue
1
数字
Set_Configuration命令需要的参数值
6
iConfiguration
1
索引
描述该配制的字符串的索引值
7
bmAttributes
1
位图
供电模式的选择
8
MaxPower
1
mA
设备从总线提取的最大电流
字段名称
说明
bLength
0x09
bDescriptorType
0x02
wTotalLength
返回的所有描述符(配置、接口和端点)的数据大小总和
bNumInterfaces
bConfigurationValue
可被Get_Configuration和Set_Configuration命令调用
iConfiguration
0表示没有使用字符串描述该配置
bmAttributes
D7=1,固定(保留);
D6=1自供电,D6=0总线供电;
D5=1支持远程唤醒,D5=0不支持;
D4D3D2D1D0 =00000,固定
MaxPower
最大电流=2* MaxPower(mA),且必须<500mA(总线供电最大值),否则此配置会被主机禁止
接口描述符的字段组成
偏移量
字段名称
长度(字节)
字段值
意义
0
bLength
1
数字
接口描述符的字节数大小
1
bDescriptorType
1
常数
接口描述符类型编号
2
bInterfaceNumber
1
数字
该接口的编号
3
bAlternateSetting
1
数字
备用的接口描述符编号
4
bNumEndpoints
1
数字
接口使用的端点数,不含端点0
5
bInterfaceClass
1
类
接口类型
6
bInterfaceSubClass
1
子类
接口子类型
7
bInterfaceProtocol
1
协议
接口遵循的协议
8
iInterface
1
索引
描述该接口的字符串的索引值
字段名称
说明
bLength
0x09
bDescriptorType
0x04
bInterfaceNumber
默认值:0
bAlternateSetting
一个接口可以有多个接口描述符
bNumEndpoints
若为0 表示该接口只使用了端点0
bInterfaceClass
USB接口类:0x01~0xfe,0x00保留
厂商定义接口类:0xff
bInterfaceSubClass
USB接口子类:0x01~0xfe,0x00保留
厂商定义接口子类:0xff
bInterfaceProtocol
与bInterfaceClass和bInterfaceSubClass相关
0x00:接口不遵循任何类协议
0x01~0xfe:USB不同标准设备类的协议
0xff:接口应用了厂商定义的类协议
iInterface
0表示没有使用字符串描述
端点描述符的字段组成
偏移量
字段名称
长 度(字节)
字段值
意义
0
bLength
1
数字
端点描述符的字节数大小
1
bDescriptorType
1
常数
端点描述符类型编号
2
bEndpointAddress
1
端点
端点地址及输入输出属性
3
bmAttributes
1
位图
端点的传输类型属性
4
wMaxPacketSize
2
数字
端点收发的最大包的大小
6
bInterval
1
数字
主机查询端点的时间间隔
字段名称
说明
bLength
0x07
bDescriptorType
0x05
bEndpointAddress
D7=1输出OUT端点,D7=0输入IN端点;
D6D5D4=000,固定(保留);
D3D2D1D0:表示该端点端点号
bmAttributes
D1D0=00控制传输,
D1D0=01同步传输,
D1D0=10批量传输,
D1D0=11中断传输,
D7D6D5D4D3D2:USB1.1中保留,USB2.0有新含意
wMaxPacketSize
D10~D0为有效内容,且范围是0~1023;
D 15~D11 USB1.1中保留,值为0
bInterval
中断端点:1~255,时间单位m S
同步端点:1
批量端点和控制端点:忽略
字符串描述符的字段组成
偏移量
字段名称
长 度(字节)
字段值
意义
0
bLength
1
数字
字符串描述符的字节数大小
1
bDescriptorType
1
常数
字符串描述符类型编号
2
bEndpointAddress
N
数字
Unicode编码的字符串
字段名称
说明
bLength
2+N
bDescriptorType
0x03
bEndpointAddress
标准USB请求命令的格式
偏移量
0
1
2
4
6
请求
bmRequestType
bRequest
wValue
wIndex
wLength
大小
1字节
1字节
2字节
2字节
2字节
bmRequestType
位
描述
说明
D7
选择数据传输方向
D7=0,主机->从机;D7=1,从机->主机,
D6
命令类型
D6 D5=00,标准请求命令;D6D5=01,类请求命令;
D6 D5=10,用户定义请求命令;D6D5=11,保留;
D5
D4
命令接收者的类型
D4D3D2D1D0=00000,接收者为设备
D4D3D2D1D0=00001,接收者为接口
D4D3D2D1D0=00010,接收者为端点
D4D3D2D1D0=00011,其他接收者
D4D3D2D1D0=其他,保留
D3
D2
D1
D0
bRequest
标准请求命令的编号
请求命令名称
编号(bRequest字段的值)
GET_STATUS
0x00
CLEAR_FEATURE
0x01
SET_FEATURE
0x03
SET_ADDRESS
0x05
GET_DESCRIPTOR
0x06
SET_DESCRIPTOR
0x07
GET_CONFIGURATION
0x08
SET_CONFIGURATION
0x09
GET_INTERFACE
0x0A
SET_INTERFACE
0x0B
SYNC_FRAME
0x0C
GET_STATUS
字段
bmRequestType
bRequest
wValue
wIndex
wLength
Data
内容
0x80
0x81
0x82
0x00
0
0
bInterfaceNumber
bEndpointAddress
2
设备、接口或端口的状态
CLEAR_FEATURE
字段
bmRequestType
bRequest
wValue
wIndex
wLength
Data
内容
0x00
0x01
0x02
0x01
特性选择器
0
bInterfaceNumber
bEndpointAddress
0
无
特性选择器
选择器特性
接收者
wValue的值
说明
DEVICE_REMOTE_WAKEUP
设备
1
禁用
ENDPOINT_HALT
端点
0
解禁
注:由于接收者不同,此字段的值要与bmRequestType字段的值匹配
SET_FEATURE
字段
bmRequestType
bRequest
wValue
wIndex
wLength
Data
内容
0x00
0x01
0x02
0x03
特性选择器
0
bInterfaceNumber
bEndpointAddress
0
无
注:特性选择器用法与CLEAR_FEATURE相同,只是在禁用和解禁方面是相反的
SET_ADDRESS
字段
bmRequestType
bRequest
wValue
wIndex
wLength
Data
内容
0x00
0x05
主机分配的设备地址
0
0
无
GET_DESCRIPTOR
字段
bmRequestType
bRequest
wValue
wIndex
wLength
Data
内容
0x80
0x06
High byte: bDescriptorType
Low byte: iDescriptor
0(设备、配置)或语言ID(字符串)
描述符长度
描述符
SET_DESCRIPTOR
字段
bmRequestType
bRequest
wValue
wIndex
wLength
Data
内容
0x00
0x07
High byte: bDescriptorType
Low byte: iDescriptor
0(设备、配置)或语言ID(字符串)
描述符长度
描述符
GET_CONFIGURATION
字段
bmRequestType
bRequest
wValue
wIndex
wLength
Data
内容
0x80
0x08
0
0
1
bConfigurationValue
SET_CONFIGURATION
字段
bmRequestType
bRequest
wValue
wIndex
wLength
Data
内容
0x00
0x09
bConfigurationValue
0
0
无
GET_INTERFACE
字段
bmRequestType
bRequest
wValue
wIndex
wLength
Data
内容
0x81
0x0A
0
bInterfaceNumber
1
bAlternateSetting
SET_INTERFACE
字段
bmRequestType
bRequest
wValue
wIndex
wLength
Data
内容
0x01
0x0B
bAlternateSetting
bInterfaceNumber
0
无
SYNC_FRAME
字段
bmRequestType
bRequest
wValue
wIndex
wLength
Data
内容
0x82
0x0C
0
bEndpointAddress
2
帧号
- USB 基本知识--描述符
- USB描述符
- USB描述符
- USB描述符
- USB描述符详解
- USB描述符
- USB HID描述符
- linux usb 描述符
- USB设备描述符
- USB HID 描述符
- USB HID描述符
- USB描述符
- USB描述符
- USB设备描述符
- USB描述符
- USB字符串描述符
- USB描述符
- USB描述符
- org.dom4j.DocumentException: Software caused connection abort: recv failed Nested exception: .
- HOJ 1440 Knight Moves -------简单搜索 BFS 求l两点之间最小的到达步数
- UVA 10236 The Fibonacci Primes
- 用c语言写http协议
- 直接用socket实现HTTP协议
- USB描述符
- 点击<a></a>标签时,不进行跳转页面的方法
- 通过java反射实现对javabean生成各种sql语句
- window.open 参数
- iphone 开发 自定义UITableViewCell的子类 ,轻松添加图片文本信息等
- sql 练习
- 黑马程序员——银行业务调度系统笔记
- 在 IT 的这一行业里,我们不是码农,我们需要支持正版。
- 用C语言实现一个简单的HTTP客户端(HTTP Client)