WCH沁恒单片机
直播中

山中老虎

8年用户 900经验值
擅长:制造/封装
私信 关注
[问答]

求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.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分