WCH沁恒单片机
登录
直播中
山中老虎
8年用户
921经验值
擅长:制造/封装
私信
关注
[问答]
求USB字符串描述符的实现教程
开启该帖子的消息推送
字符串
描述符
求USB字符串描述符的实现教程
回帖
(1)
李小红
2022-9-23 10:07:50
先贴标准协议中的描述:
描述符本身:
主机的请求结构:
直接对一个设备抓包分析,setup包第3字节0x03,代表当前请求的是字符串描述符。
通常一个最简单的设备会支持3个字符串描述符①语言描述符②厂商信息描述符③产品信息描述符④序列号描述符
其中语言描述符简单说固定4字节,常规的都是0x04、0x03、0x09、0x04(美式英语)
其余描述符都是符合UNICODE String Decrisptor结构,描述符类型区分是通过
索引
来实现,具体代码实现:
首先肯定要保存静态的描述符本身:
数组首字节表示描述符总长度,即这个数组的长度(单字节,也就决定了描述符最大长度0xFF);下一字节固定0x03;后续全部是文字本身,注意是UNICODE编码,还是挺简单的,找规律就可以直接改了。
数据处理:
红框中的switch判断的值,就是前面提到的索引。除了语言描述符固定为0,其余都是自定义的。定义的位置:
贴出标准协议中的内容,设备描述符结构(部分):位置第14、15、16三个是索引值。
所以,演示中的,其实只有厂商、产品的描述,没有序列号。厂商、产品、序列号描述符的支持是可选的,不支持就在设备描述符中将其写0.
先贴标准协议中的描述:
描述符本身:
主机的请求结构:
直接对一个设备抓包分析,setup包第3字节0x03,代表当前请求的是字符串描述符。
通常一个最简单的设备会支持3个字符串描述符①语言描述符②厂商信息描述符③产品信息描述符④序列号描述符
其中语言描述符简单说固定4字节,常规的都是0x04、0x03、0x09、0x04(美式英语)
其余描述符都是符合UNICODE String Decrisptor结构,描述符类型区分是通过
索引
来实现,具体代码实现:
首先肯定要保存静态的描述符本身:
数组首字节表示描述符总长度,即这个数组的长度(单字节,也就决定了描述符最大长度0xFF);下一字节固定0x03;后续全部是文字本身,注意是UNICODE编码,还是挺简单的,找规律就可以直接改了。
数据处理:
红框中的switch判断的值,就是前面提到的索引。除了语言描述符固定为0,其余都是自定义的。定义的位置:
贴出标准协议中的内容,设备描述符结构(部分):位置第14、15、16三个是索引值。
所以,演示中的,其实只有厂商、产品的描述,没有序列号。厂商、产品、序列号描述符的支持是可选的,不支持就在设备描述符中将其写0.
举报
更多回帖
rotate(-90deg);
回复
相关问答
字符串
描述符
STM32
USB
的
字符串
描述符
不能显示是哪里的问题?
2024-04-30
157
自定义HID
描述符
字符串
怎么启用?
2019-10-08
2237
HID报告没有建议
字符串
2019-10-09
2896
8910芯片
USB
描述符
的知识点解析,错过后悔
2022-02-22
1286
电脑重启后,但注册的HID设备没有重启,导致设备失效不能工作如何解决?
2022-10-08
651
如何尝试用多配置扩展bulkloopautoloopback?
2019-10-25
903
stm32 hid标准请求get descriptor,需要用wIndex怎么办
2019-07-29
2287
请问STM32的CAN slave mode与master mode的区别是什么?
2018-11-30
6608
USB
摄像头的
描述符
和驱动程序有什么关系吗?
2018-06-16
3172
实现
组合设备除了修改
描述符
还需要修改什么
2019-01-15
2454
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分