龙芯软件开发(37)- USB协议深入分析 返回设备描述符

bcdUSB是USB发布的协议版本。也就是本设备能适用于那种协议,目前USB主要有两个版本,一个是1.10,一个是2.10版本。在本设备里,采用了1.10的协议版本。由于这个字段是采用BCD编码,所以1.10的表示为0x0110的格式,按小端格式输出来,就变成10 01的显示了。
 
bDeviceClass是设备分类。当它的值是0时,表示所有接口在配置描述符里,并且所有接口是独立的。当它的值是1到FEH时,表示不同的接口关联的。当它的值是FFH时,它是厂商自己定义的。在这个设备里,是定义为0。
 
bDeviceSubClass是设备子分类码。当前面的 bDeviceClass值是0时,这里一定要设置为0。其它就跟据USB-IF组织定义的编码。
 
bDeviceProtocol是设备使用的协议。如果使用USB-IF组织定义的协议,就需要设置这里的值。如果不使用,就直接设置为0。如果厂商自己定义的可以设置为FFH。
以上三个值,在本设备里全部设置为0。
 
bMaxPacketSize0是端点0收发最大的包大小。仅允许设置8,16,32,64中的任何一个大小。在本设备里是设置为64个字节大小。所以看到这个字段是40 的大小。
12 01 10 01 00 00 00 40 00 80 00 80 00 01 04 2C 4A 01
 
idVendor是厂商标识。由USB-IF分配的编码。在这里使用0x8000。
 
idProduct是厂商定义的产品标识。由厂家和产品标识,就可以让操作系统加载不同的驱动程序。如下:
12 01 10 01 00 00 00 40 00 80 00 80 00 01 04 2C 4A 01
 
bcdDevice是用BCD表示的设备发布的版本号。这里是1.00。
12 01 10 01 00 00 00 40 00 80 00 80 00 01 04 2C 4A 01
 
iManufacturer是厂商字符串的偏移值。这值主要说明了它在字符串描述符里的偏移位置。如果它设置为0,表示没有厂商字符串。在这里是0x04,就是从字符串描述符开始位置算起第4个字节位置读取字符串。
 
iProduct是产品字符串的偏移值。这值主要说明了它在字符串描述符里的偏移位置。如果它设置为0,表示没有产品字符串。在这里是0x2C,就是从字符串描述符开始位置算起第2C个字节位置读取字符串。
 
iSerialNumber是序列号字符串的偏移值。这值主要说明了它在字符串描述符里的偏移位置。如果它设置为0,表示没有序列号字符串。在这里是0x4A,就是从字符串描述符开始位置算起第4A个字节位置读取字符串。
所有字符串,都是采有UNICODE编码。
 
bNumConfigurations是配置描述符的个数。在这里只使用了一个配置,所以设置为1。
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caimouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值