andy83364865
驱动牛犊
驱动牛犊
  • 注册日期2009-04-22
  • 最后登录2011-02-24
  • 粉丝1
  • 关注0
  • 积分18分
  • 威望141点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1406回复:6

高手请教一下,USB协议中设备描述符的设置

楼主#
更多 发布于:2009-04-29 09:46
   我在设置设备描述符的时候遇到一些问题,望高手们指点指点一下小弟,谢谢!!!在设备描述符中有几项如:bdeviceclass, bdevicesubclass, bmaxpacketsize,  我看了很多资料都只是知道bdeviceclass,怎么设置,但是后两项就不知道了,好像我想做一个U盘,那么bdeviceclass就是设置为0x08,但是后面两项我就不知道怎样设置,高手们有没有相关资料,可以给小弟参考一下。
  还有在设备描述符里面还有idvender, idproduct, beddevice, imanufacturer, iproduct, iserialnumber,等等应该怎样设置的??我搞了很久都搞不懂,请高手们指点一下,万谢~~~
andy83364865
驱动牛犊
驱动牛犊
  • 注册日期2009-04-22
  • 最后登录2011-02-24
  • 粉丝1
  • 关注0
  • 积分18分
  • 威望141点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-04-29 15:18
  自己顶一下~~~~
weiwei1987
驱动牛犊
驱动牛犊
  • 注册日期2009-04-27
  • 最后登录2009-05-17
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望131点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-04-29 19:59
我还在门外,想入,帮顶
weiwei1987
驱动牛犊
驱动牛犊
  • 注册日期2009-04-27
  • 最后登录2009-05-17
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望131点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-04-29 20:04
struct {
      BYTE    bLength;            // 描述符的长度,以字节为单位
      BYTE    bDescriptorType;    // 设备描述符类型,0x01
      WORD    bcdUSB;             // 设备支持的USB协议版本,BCD码
      BYTE    bDeviceClass;       // 设备类代码(由USB-IF分配)
      BYTE    bDeviceSubClass;    // 子类代码
      BYTE    bDeviceProtocol;    // 协议码
      BYTE    bMaxPacketSize0;    // 端点0的最大包长度(仅为8,16,32,64)
      WORD    idVendor;           // 厂商ID(由USB-IF分配)
      WORD    idProduct;          // 产品ID(由制造商定义)
      WORD    bcdDevice;          // 设备发行号(BCD码)
      BYTE    iManufacture;       // 描述厂商信息的字符串描述符的索引值
      BYTE    iProduct;           // 描述产品信息的字符串描述符的索引值
      BYTE    iSerialNumber;      // 描述设备序列号信息的字符串描述符的索引值
      BYTE    bNumConfigurations; // 可能的配置描述符的数目
    } device_descriptor
andy83364865
驱动牛犊
驱动牛犊
  • 注册日期2009-04-22
  • 最后登录2011-02-24
  • 粉丝1
  • 关注0
  • 积分18分
  • 威望141点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2009-05-05 15:36
  谢谢楼上,写得那么详细,不过这些在协议里面都有提到过,我想问的是
      BYTE    bDeviceSubClass;    // 子类代码
      BYTE    bDeviceProtocol;    // 协议码
      BYTE    bMaxPacketSize0;    // 端点0的最大包长度(仅为8,16,32,64)
这三项应该具体怎样设计????如我现在做的是U盘,那么上面三项具体应该是什么设置呢??

还有 WORD    idVendor;           // 厂商ID(由USB-IF分配)
           WORD    idProduct;          // 产品ID(由制造商定义)
           WORD    bcdDevice;          // 设备发行号(BCD码)应该怎样设置呢??

还有  BYTE    iManufacture;       // 描述厂商信息的字符串描述符的索引值
      BYTE    iProduct;           // 描述产品信息的字符串描述符的索引值
      BYTE    iSerialNumber;      // 描述设备序列号信息的字符串描述符的索引值
我看过一些参考程序,上面三项都是设为0x00,为什么要这样设置呢?什么涵义呢??
请各大路过的高手们,帮帮忙啊~~~~万谢啦!!!!!
hanzn
驱动牛犊
驱动牛犊
  • 注册日期2004-11-25
  • 最后登录2009-05-20
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望50点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2009-05-15 14:59
      BYTE    bDeviceSubClass;      0x06
          USB设备所属的协议类的子类,MassStorage设备该值是 0x06,代表: SCSI transparent command set
      BYTE    bDeviceProtocol;     0x50
           设备协议, MassStorage设备该值是 0x50,代表: Bulk传输。
    这两个值要参考USB各设备类的SPEC,如VideoClass, Massstorage, HID 的协议。


      BYTE    bMaxPacketSize0;    // 端点0的最大包长度(仅为8,16,32,64)
         一般取值64


还有 WORD    idVendor;           // 厂商ID(由USB-IF分配)      
                  厂商的Vendor, 各厂商各USB组织申请的两字节数值,可以USB.org上查处
           WORD    idProduct;          // 产品ID(由制造商定义)  
                   厂商设备的编号,厂商自定义
           WORD    bcdDevice;          // 设备发行号(BCD码)应该怎样设置呢?  
                  厂商设备版本。厂商自定义
andy83364865
驱动牛犊
驱动牛犊
  • 注册日期2009-04-22
  • 最后登录2011-02-24
  • 粉丝1
  • 关注0
  • 积分18分
  • 威望141点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2009-05-18 12:15
顶顶顶!!!我顶
游客

返回顶部