1. /* USB Standard Device Descriptor */
  2. const u8 Virtual_Com_Port_DeviceDescriptor[] =
  3. {
  4. 0x12, /* bLength */ //USB设备描述符的总长度固定为18个字节,因此为12H
  5. USB_DEVICE_DESCRIPTOR_TYPE, /* bDescriptorType */ //USB设备描述符的类型值,固定为01H
  6. 0x00, //USB遵循的规范版本号,USB2.0; 0xXXYZ,XX为主版本号,Y为次版本号,Z为子次版本号
  7. 0x02, /* bcdUSB = 2.00 */
  8. 0x02, /* bDeviceClass: CDC */ //USB所遵循的标准设备类。0表示设备的接口相互独立,分别属于不同的设备类;
  9. //1~FEH之间表示USB协议中定义的某个类。03H表示HID类,02H表示CDC类。
  10. //FFH表示供应商自定义的设备类
  11. 0x00, /* bDeviceSubClass */ //USB设备所属的标准设备子类。对于显示设备类(04H),包含3个子类,
  12. //子类代码01H表示CRT显示器,02H表示平面显示器,03H表示3D显示器。
  13. //bDeviceClass为0时,该值为0;该值为FFH时,表示供应商自定义的设备子类
  14. 0x00, /* bDeviceProtocol */ //采用的设备类协议。该值为FFH时表示设备类协议由供应商自定义
  15. 0x40, /* bMaxPacketSize0 */ //端点0所支持最大数据包长度(字节),低速为8,全速为8,16,32或64,高速为64
  16. 0x83, //设备供应商id,使主机为其加载合适驱动
  17. 0x04, /* idVendor = 0x0483 */
  18. 0x40, //产品id,用于区分不同的usb设备
  19. 0x57, /* idProduct = 0x7540 */
  20. 0x00, //设备版本号,帮助主机加载合适驱动
  21. 0x01, /* bcdDevice = 1.00 */
  22. , /* Index of string descriptor describing manufacturer */ //若没有,可为0
  23. , /* Index of string descriptor describing product */ //若没有,可为0
  24. , /* Index of string descriptor describing the device's serial number */ //若没有,可为0
  25. 0x01 /* bNumConfigurations */ //USB设备所支持的配置数
  26. };

  1. const u8 Virtual_Com_Port_ConfigDescriptor[] =
  2. {
  3. /*Configuation Descriptor*/
  4. 0x09, /* bLength: Configuation Descriptor size */ //配置描述符的长度,固定为9字节,09H
  5. USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */ //配置描述符类型,固定位02H
  6. VIRTUAL_COM_PORT_SIZ_CONFIG_DESC, /* wTotalLength:no of returned bytes */ //配置信息总长度,配置描述符、接口描述符、端点描述符长度总和
  7. 0x00,
  8. 0x02, /* bNumInterfaces: 2 interface */ //所支持的接口数, 最小值为1
  9. 0x01, /* bConfigurationValue: Configuration value */ //USB设备的配置值
  10. 0x00, /* iConfiguration: Index of string descriptor describing the configuration */ //字符串描述符索引,若没有,可为0
  11. 0xC0, /* bmAttributes: self powered */ //配置特性,可按位寻址,第六位置1表示用总线电源,第五位置1表示支持远程唤醒,其他字段保留
  12. //一般0~4位置0,第7位置1
  13. 0x00, /* MaxPower 0 mA */ //USB设备运行时所支持的最大电流,2mA为单位
  14. /*Interface Descriptor*/
  15. 0x09, /* bLength: Interface Descriptor size */ //接口描述符长度,固定为9字节,09H
  16. USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */ //接口描述符的类型值,固定位04H
  17. /* Interface descriptor type */
  18. 0x00, /* bInterfaceNumber: Number of Interface */ //USB接口的接口号
  19. 0x00, /* bAlternateSetting: Alternate setting */ //USB接口的可替换设置值
  20. 0x01, /* bNumEndpoints: One endpoints used */ //USB接口所使用的接口总数
  21. 0x02, /* bInterfaceClass: Communication Interface Class */ //USB接口所属的设备类,1~FEH表示某个设备类;FFH表示供应商自定义
  22. 0x02, /* bInterfaceSubClass: Abstract Control Model */
  23. 0x01, /* bInterfaceProtocol: Common AT commands */ //接口所采用的设备类协议
  24. 0x00, /* iInterface: */ //USB接口字符串描述符的索引值
  25. /*Header Functional Descriptor*/
  26. 0x05, /* bLength: Endpoint Descriptor size */
  27. 0x24, /* bDescriptorType: CS_INTERFACE */
  28. 0x00, /* bDescriptorSubtype: Header Func Desc */
  29. 0x10, /* bcdCDC: spec release number */
  30. 0x01,
  31. /*Call Managment Functional Descriptor*/
  32. 0x05, /* bFunctionLength */
  33. 0x24, /* bDescriptorType: CS_INTERFACE */
  34. 0x01, /* bDescriptorSubtype: Call Management Func Desc */
  35. 0x00, /* bmCapabilities: D0+D1 */
  36. 0x01, /* bDataInterface: 1 */
  37. /*ACM Functional Descriptor*/
  38. 0x04, /* bFunctionLength */
  39. 0x24, /* bDescriptorType: CS_INTERFACE */
  40. 0x02, /* bDescriptorSubtype: Abstract Control Management desc */
  41. 0x02, /* bmCapabilities */
  42. /*Union Functional Descriptor*/
  43. 0x05, /* bFunctionLength */
  44. 0x24, /* bDescriptorType: CS_INTERFACE */
  45. 0x06, /* bDescriptorSubtype: Union func desc */
  46. 0x00, /* bMasterInterface: Communication class interface */
  47. 0x01, /* bSlaveInterface0: Data Class Interface */
  48. /*Endpoint 2 Descriptor*/ //端点描述符长度固定为7字节,07H
  49. 0x07, /* bLength: Endpoint Descriptor size */
  50. USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */
  51. 0x82, /* bEndpointAddress: (IN2) */
  52. 0x03, /* bmAttributes: Interrupt */
  53. VIRTUAL_COM_PORT_INT_SIZE, /* wMaxPacketSize: */
  54. 0x00,
  55. 0xFF, /* bInterval: */
  56. /*Data class interface descriptor*/
  57. 0x09, /* bLength: Endpoint Descriptor size */
  58. USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: */
  59. 0x01, /* bInterfaceNumber: Number of Interface */
  60. 0x00, /* bAlternateSetting: Alternate setting */
  61. 0x02, /* bNumEndpoints: Two endpoints used */
  62. 0x0A, /* bInterfaceClass: CDC */
  63. 0x00, /* bInterfaceSubClass: */
  64. 0x00, /* bInterfaceProtocol: */
  65. 0x00, /* iInterface: */
  66. /*Endpoint 3 Descriptor*/
  67. 0x07, /* bLength: Endpoint Descriptor size */
  68. USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */
  69. 0x03, /* bEndpointAddress: (OUT3) */
  70. 0x02, /* bmAttributes: Bulk */
  71. VIRTUAL_COM_PORT_DATA_SIZE, /* wMaxPacketSize: */
  72. 0x00,
  73. 0x00, /* bInterval: ignore for Bulk transfer */
  74. /*Endpoint 1 Descriptor*/
  75. 0x07, /* bLength: Endpoint Descriptor size */
  76. USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */
  77. 0x81, /* bEndpointAddress: (IN1) */
  78. 0x02, /* bmAttributes: Bulk */
  79. VIRTUAL_COM_PORT_DATA_SIZE, /* wMaxPacketSize: */
  80. 0x00,
  81. 0x00 /* bInterval */
  82. };

USB设备描述符的更多相关文章

  1. STM32 USB设备描述符、配置描述符、端点描述符含义

    查了一整天的资料,自己把不懂的全部试了一遍 一下是程序以及注释 /* USB设备描述符*/ const uint8_t CustomHID_DeviceDescriptor[CUSTOMHID_SIZ ...

  2. USB设备描述符和请求命令

    USB设备描述符和请求命令 介绍标准的USB设备描述符和请求命令. 标准的USB描述符 当USB设备第一次连接到主机上时,要接收主机的枚举和配置,目的就是让主机知道该设备具有什么功能.是哪一类的USB ...

  3. Win10 设备管理器一个USB设备描述符请求失败解决方法

    问题:进入设备管理器,发现[通用串行总线控制器]下有一项带有黄色[!]未知USB设备(设备描述符请求失败). 或者 解决方法如下: 1.点击Windows键 +R或者(点击系统桌面左下角[开始],在开 ...

  4. usb描述符简述(二)

    title: usb描述符简述 tags: linux date: 2018/12/18/ 18:25:23 toc: true --- usb描述符简述 转载自cnblog 具体描述符 https: ...

  5. 2.6 USB摄像头驱动之USB描述符

    学习目标:分析USB摄像头驱动的描述符: 一.USB设备描述符 在usb设备驱动分析那一节,也用到了usb描述符. usb描述符可分为: USB设备描述符(usb_device_descriptor) ...

  6. USB描述符【整理】

    USB描述符 USB描述符信息存储在USB设备中,在枚举过程中,USB主机会向USB设备发送GetDescriptor请求,USB设备在收到这个请求之后,会将USB描述符信息返回给USB主机,USB主 ...

  7. USB描述符(转)

    //============================================================================// 文件名: USBDESC.C// 用 ...

  8. usb驱动开发9之设备描述符

    前面分析了usb的四大描述符之端点描述符,接口描述符(每一个接口对应一个功能,与之配备相应驱动),配置描述符,最后分析设备如何包括这些描述符.首先记住,在usb的世界里,设备大于配置,配置大于接口,接 ...

  9. usb协议分析-设备描述符配置包-描述符

    /* usb协议分析仅供大家参考---设备描述符配置包,设备描述符, 地址设置, 配置描述符, 字符串描述符 */ /* -1- usb设备描述符配置包 */ typedef struct _USB_ ...

随机推荐

  1. YouTube 网站的架构演进——阅读心得

    基础平台 Apache Python Linux(SuSe) MySQL psyco,一个动态的Python到C的编译器 lighttpd代替Apache做视频播放 状态 支持每天超过5亿的视频点击量 ...

  2. Flutter路由跳转父级页面向子页面传参及子页面向父级页面传参

    Flutter中页面通过路由跳转传参主要分两种,一种是通过push()跳转时根据设定的参数进行传参,另一种是通过pop()返回时进行传参. 父级页面向子页面push()传参 假设从A页面跳到B页面可能 ...

  3. vue实现穿梭框效果

    vue实现穿梭框效果 一.总结 一句话总结: 用两个数组分别记录左右框框里面的值,用两个数组绑定checkbox,用来记录选中的checkbox值,根据选中的checkbox的值实现删除增加即可 1. ...

  4. Spring事务知识点

    事务的传播属性 PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中.// 最常用,@Transactional注解默认 PROPAGA ...

  5. [服务器时区问题]PHP Warning: strftime(): It is not safe to rely on the system's timezone set

    PHP Warning: strftime(): It is not safe to rely on the system's timezone set 当运行一些程序时,在httpd日志中会有如下警 ...

  6. c语言 nmealib-0.5.3 学习 简单代码 ,供参考

    void showInfo1(char *buf) { ];// ="$GPGGA,031105.000,4003.9196,N,11620.5765,E,1,05,3.4,109.0,M, ...

  7. PostgreSql 使用自定义序列(Sequence)向表插入数据

    最近公司使用到了PostgreSql,哈哈,这个SQL之前基本上没有用过,既然公司使用到了,那就学习一下吧,记一篇小笔记: 什么是PostgreSql:https://www.postgresql.o ...

  8. BTE的一些知识

    1.今天遇到一个问题,看项目上做了BTE增强00001120 事件的BTE 但是自定义函数  更改了参数  t_bseg  t_bkpf MODIFY t_bkpf FROM ls_bkpf TRAN ...

  9. 第一个go程序

    进入到工作空间中(我的是$HOME/go, 所以使用cd $HOME/go命令直接进入) 然后创建一个目录 src/hello( mkdir src/hello), 然后进入到该目录中(cd src/ ...

  10. 45.简单邮件传输协议 SMTP

    一丶简单邮件传输协议 简单邮件传输协议 简单邮件传输协议 SMTP smtplib 模块:(在 Python3版本中,可以通过 SMTP协议发送邮件的模块常为 smtplib, 并且这个模块属于内置模 ...