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

const u8 Virtual_Com_Port_ConfigDescriptor[] =
{
/*Configuation Descriptor*/
0x09, /* bLength: Configuation Descriptor size */ //配置描述符的长度,固定为9字节,09H
USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */ //配置描述符类型,固定位02H
VIRTUAL_COM_PORT_SIZ_CONFIG_DESC, /* wTotalLength:no of returned bytes */ //配置信息总长度,配置描述符、接口描述符、端点描述符长度总和
0x00,
0x02, /* bNumInterfaces: 2 interface */ //所支持的接口数, 最小值为1
0x01, /* bConfigurationValue: Configuration value */ //USB设备的配置值
0x00, /* iConfiguration: Index of string descriptor describing the configuration */ //字符串描述符索引,若没有,可为0
0xC0, /* bmAttributes: self powered */ //配置特性,可按位寻址,第六位置1表示用总线电源,第五位置1表示支持远程唤醒,其他字段保留
//一般0~4位置0,第7位置1
0x00, /* MaxPower 0 mA */ //USB设备运行时所支持的最大电流,2mA为单位
/*Interface Descriptor*/
0x09, /* bLength: Interface Descriptor size */ //接口描述符长度,固定为9字节,09H
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */ //接口描述符的类型值,固定位04H
/* Interface descriptor type */
0x00, /* bInterfaceNumber: Number of Interface */ //USB接口的接口号
0x00, /* bAlternateSetting: Alternate setting */ //USB接口的可替换设置值
0x01, /* bNumEndpoints: One endpoints used */ //USB接口所使用的接口总数
0x02, /* bInterfaceClass: Communication Interface Class */ //USB接口所属的设备类,1~FEH表示某个设备类;FFH表示供应商自定义
0x02, /* bInterfaceSubClass: Abstract Control Model */
0x01, /* bInterfaceProtocol: Common AT commands */ //接口所采用的设备类协议
0x00, /* iInterface: */ //USB接口字符串描述符的索引值
/*Header Functional Descriptor*/
0x05, /* bLength: Endpoint Descriptor size */
0x24, /* bDescriptorType: CS_INTERFACE */
0x00, /* bDescriptorSubtype: Header Func Desc */
0x10, /* bcdCDC: spec release number */
0x01,
/*Call Managment Functional Descriptor*/
0x05, /* bFunctionLength */
0x24, /* bDescriptorType: CS_INTERFACE */
0x01, /* bDescriptorSubtype: Call Management Func Desc */
0x00, /* bmCapabilities: D0+D1 */
0x01, /* bDataInterface: 1 */
/*ACM Functional Descriptor*/
0x04, /* bFunctionLength */
0x24, /* bDescriptorType: CS_INTERFACE */
0x02, /* bDescriptorSubtype: Abstract Control Management desc */
0x02, /* bmCapabilities */
/*Union Functional Descriptor*/
0x05, /* bFunctionLength */
0x24, /* bDescriptorType: CS_INTERFACE */
0x06, /* bDescriptorSubtype: Union func desc */
0x00, /* bMasterInterface: Communication class interface */
0x01, /* bSlaveInterface0: Data Class Interface */
/*Endpoint 2 Descriptor*/ //端点描述符长度固定为7字节,07H
0x07, /* bLength: Endpoint Descriptor size */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */
0x82, /* bEndpointAddress: (IN2) */
0x03, /* bmAttributes: Interrupt */
VIRTUAL_COM_PORT_INT_SIZE, /* wMaxPacketSize: */
0x00,
0xFF, /* bInterval: */
/*Data class interface descriptor*/
0x09, /* bLength: Endpoint Descriptor size */
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: */
0x01, /* bInterfaceNumber: Number of Interface */
0x00, /* bAlternateSetting: Alternate setting */
0x02, /* bNumEndpoints: Two endpoints used */
0x0A, /* bInterfaceClass: CDC */
0x00, /* bInterfaceSubClass: */
0x00, /* bInterfaceProtocol: */
0x00, /* iInterface: */
/*Endpoint 3 Descriptor*/
0x07, /* bLength: Endpoint Descriptor size */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */
0x03, /* bEndpointAddress: (OUT3) */
0x02, /* bmAttributes: Bulk */
VIRTUAL_COM_PORT_DATA_SIZE, /* wMaxPacketSize: */
0x00,
0x00, /* bInterval: ignore for Bulk transfer */
/*Endpoint 1 Descriptor*/
0x07, /* bLength: Endpoint Descriptor size */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */
0x81, /* bEndpointAddress: (IN1) */
0x02, /* bmAttributes: Bulk */
VIRTUAL_COM_PORT_DATA_SIZE, /* wMaxPacketSize: */
0x00,
0x00 /* bInterval */
};

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. the requested PHP extension dom is missing from your system

    composer  出错 the requested PHP extension dom is missing from your system 解决办法    yum install  php70w ...

  2. Mac Mysql 5.6.4修改初始化密码

    Mac Mysql 修改初始化密码   第一步: 点击系统偏好设置->最下边点MySQL,在弹出页面中,关闭服务 第二步:进入终端输入:cd /usr/local/mysql/bin/回车后 登 ...

  3. [转]Maven项目读取src.main.resources下的文件

    要取编译后的路径,而不是你看到的src/main/resources的路径.如下: URL url = MyTest.class.getClassLoader().getResource(" ...

  4. 深度学习中的Attention机制

    1.深度学习的seq2seq模型 从rnn结构说起 根据输出和输入序列不同数量rnn可以有多种不同的结构,不同结构自然就有不同的引用场合.如下图, one to one 结构,仅仅只是简单的给一个输入 ...

  5. (转)svn执行clean up命令时报错“Previous operation has not finished; run 'cleanup' if it was interrupted”

    今天碰到了个郁闷的问题,svn执行clean up命令时报错“Previous operation has not finished; run 'cleanup' if it was interrup ...

  6. 为什么linux系统中init被systemd替换了

    Linux init 进程是系统初始化进程,比较古老了,所以出现了一些新的替代方案: Upstart – A init replacement daemon implemented in Ubuntu ...

  7. 【DSP开发】帮您快速入门 TI 的 Codec Engine

    德州仪器半导体技术(上海)有限公司 通用DSP 技术应用工程师 崔晶 德州仪器(TI)的第一颗达芬奇(DaVinci)芯片(处理器)DM6446已经问世快三年了.继DM644x之后,TI又陆续推出了D ...

  8. js 数组遍历 对象遍历

    一.数组遍历 1,普通for循环,经常用的数组遍历 var arr = [1,2,0,3,9]; for ( var i = 0; i <arr.length; i++){ console.lo ...

  9. 最新 优刻得java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.优刻得等10家互联网公司的校招Offer,因为某些自身原因最终选择了优刻得.6.7月主要是做系统复习.项目复盘.LeetCo ...

  10. Mybatis插件之Mybatis-Plus(传统模式)

    1.什么是Mybatis-Plus? Mybatis-Plus(简称MP),是一个Mybatis的增强工具,可以在原来Mybatis基础上不错任何改变就能够对原来Mybatis进行增强,能够简化我们的 ...