没有合适的资源?快使用搜索试试~ 我知道了~
首页STM32-USB-HID详解.doc
STM32 USB HID详解 1、USB简介 2、USB描述符 USB只是一个总线,只提供一个数据通路而已。USB总线驱动程序并不知道一个设备具体如何操作,有哪些行为。具体的一个设备实现什么功能,要由设备自己来决定。那么,USB主机是如何知道一个设备的功能以及行为呢?这就要通过描述符来实现了。描述符中记录了设备的类型、厂商ID和产品ID(通常依靠它们来加载对应的驱动程序)、端点情况、版本号等众多信息。 标准的USB设备有5种USB描述符:设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符。
资源详情
资源评论
资源推荐

STM32 USB HID 详解
1、USB 简介
2、USB 描述符
USB 只是一个总线,只提供一个数据通路而已。USB 总线驱动程序并不知
道一个设备具体如何操作,有哪些行为。具体的一个设备实现什么功能,要由
设备自己来决定。那么,USB 主机是如何知道一个设备的功能以及行为呢?这
就要通过描述符来实现了。描述符中记录了设备的类型、厂商 ID 和产品
ID(通常依靠它们来加载对应的驱动程序)、端点情况、版本号等众多信息。
标准的 USB 设备有 5 种 USB 描述符:设备描述符,配置描述符,接口描
述符,端点描述符,字符串描述符。下面详解:
2.1、设备描述符
一个 USB 设备只有一个设备描述符。设备描述符主要记录的信息有:设备
所使用的 USB 协议版本号、设备类型、端点 0 的最大包大小、厂商 ID(VID)
和产品 ID(PID)、设备版本号、厂商字符串索引、产品字符串索引、设备序
列号索引、可能的配置数等。
偏移量 域 大小/字
节
说明
0 bLength 1 该描述符的长度(0x12=18 字
节)
1 bDescriptorType 1 描述符类型(0x01 设备描述符)
2 bcdUSB 2 本设备使用的 USB 协议版本
4 bDeviceClass 1 类代码
5 bDeviceSubClass 1 子类代码
6 bDeviceProtocol 1 协议码
7 bMaxPacketSize 1 端点 0 最大包长
8 idVendor 2 厂商 ID
10 idProduct 2 产品 ID
12 bcdDevice 2 设备版本号
14 iManufacturer 1 描述厂商的字符串索引
15 iProduct 1 描述产品的字符串索引
16 iSerialNumber 1 产品序列号的字符串索引
17 bNumCon.gurati
ons
1 可能的配置数

2.2、配置描述符
设备描述符里决定了该设备有多少种配置,每种配置都有一个配置描述
符。配置描述符主要记录的信息有:配置所包含的接口数、配置的编号、供电
方式、是否支持远程唤醒、电流需求量等。
偏移量 域 大小/字
节
说明
0 bLength 1 该描述符的长度(0x09 字节)
1 bDescriptorType 1 描述符类型(0x02 配置描述符)
2 wTotalLength 2 配置、接口、端点和类描述符字
节总和
4 bNumInterfaces 1 支持接口数
5 bCon.gurationVal
ue
1 本配置描述符标识
6 iCon.guration 1 配置描述符说明字符串索引
7 bmAttributes 1 电源及唤醒
8 MaxPower 1 设备耗电电流
2.3、接口描述符
在每个配置描述符中又定义了该配置有多少个接口,每个接口都有一个接
口描述符。接口描述符主要记录的信息有:接口的编号、接口的端点数、接口
所使用的类、子类、协议等。
偏移量 域 大小/字
节
说明
0 bLength 1 该描述符的长度(0x09 字节)
1 bDescriptorType 1 描述符类型(0x04 接口描述符)
2 bInterfaceNumber 1 本接口描述符标识
3 bAlternateSetting 1
4 bNumEndpoints 1 接口端点数
5 bInterfaceClass 1 接口类代码
6 bInterfaceSubClas
s
1 启动类型 1=BOOT, 0=No
BOOT
7 bInterfaceProtocol 1 0=None, 1=Keyboard,
2=Mouse
8 iInterface 1 接口描述符说明字符串索引

2.4、[类描述符]
该描述符不是必须的,如果配置的 USB 类型有类特殊描述符(如 HID
类),它跟在相应的接口描述符之后。
2.5、端点描述符
在接口描述符里又定义了该接口有多少个端点,每个端点都有一个端点描
述符。端点描述符主要记录的信息有:端点号及方向、端点的传输类型、最大
包长度、查询时间间隔等。
偏移量 域 大小/字
节
说明
0 bLength 1 该描述符的长度(0x07 字节)
1 bDescriptorType 1 描述符类型(0x5 端点描述符)
2 bEndpointAddress 1 端点地址
3 bmAttributes 1 端点类型
4 wMaxPacketSize 2 端点发送接收最大包长
6 bInterval 1 中断端点轮训时间间隔
2.6、[字符串描述符]
字符串描述符主要是提供一些方便人们阅读的信息,它不是必需的。
偏移量 域 大小/字
节
说明
0 bLength 1 该描述符的长度(0x04/0xXX 字
节),第一个字符串描述符 0x04
1 bDescriptorType 1 描述符类型(0x3 字符串描述
符)
2 wLANGID 2/XX 第一个字符串描述符时 2 字节,
表示语言编码,其他自定义
3、USB HID
为了把一个设备识别为 HID 类别,设备在定义描述符的时候必须遵守 HID
规范。除了 USB 标准定义的一些描述符外,HID 设备还必须定义 HID 描述
符。另外设备和主机的通信是通过报告的形式来实现的,所以还必须定义报告
描述符;而物理描述符不是必需的。还有就是 HID 描述符是关联于接口(而不
是端点)的,所以设备不需要为每个端点都提供一个 HID 描述符。详情参看
《USB HID 协议中文版_USB HID 设备》
剩余12页未读,继续阅读


















行知致简
- 粉丝: 153
- 资源: 34
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制

评论0