USB设备描述符
- /* 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设备描述符的更多相关文章
- STM32 USB设备描述符、配置描述符、端点描述符含义
查了一整天的资料,自己把不懂的全部试了一遍 一下是程序以及注释 /* USB设备描述符*/ const uint8_t CustomHID_DeviceDescriptor[CUSTOMHID_SIZ ...
- USB设备描述符和请求命令
USB设备描述符和请求命令 介绍标准的USB设备描述符和请求命令. 标准的USB描述符 当USB设备第一次连接到主机上时,要接收主机的枚举和配置,目的就是让主机知道该设备具有什么功能.是哪一类的USB ...
- Win10 设备管理器一个USB设备描述符请求失败解决方法
问题:进入设备管理器,发现[通用串行总线控制器]下有一项带有黄色[!]未知USB设备(设备描述符请求失败). 或者 解决方法如下: 1.点击Windows键 +R或者(点击系统桌面左下角[开始],在开 ...
- usb描述符简述(二)
title: usb描述符简述 tags: linux date: 2018/12/18/ 18:25:23 toc: true --- usb描述符简述 转载自cnblog 具体描述符 https: ...
- 2.6 USB摄像头驱动之USB描述符
学习目标:分析USB摄像头驱动的描述符: 一.USB设备描述符 在usb设备驱动分析那一节,也用到了usb描述符. usb描述符可分为: USB设备描述符(usb_device_descriptor) ...
- USB描述符【整理】
USB描述符 USB描述符信息存储在USB设备中,在枚举过程中,USB主机会向USB设备发送GetDescriptor请求,USB设备在收到这个请求之后,会将USB描述符信息返回给USB主机,USB主 ...
- USB描述符(转)
//============================================================================// 文件名: USBDESC.C// 用 ...
- usb驱动开发9之设备描述符
前面分析了usb的四大描述符之端点描述符,接口描述符(每一个接口对应一个功能,与之配备相应驱动),配置描述符,最后分析设备如何包括这些描述符.首先记住,在usb的世界里,设备大于配置,配置大于接口,接 ...
- usb协议分析-设备描述符配置包-描述符
/* usb协议分析仅供大家参考---设备描述符配置包,设备描述符, 地址设置, 配置描述符, 字符串描述符 */ /* -1- usb设备描述符配置包 */ typedef struct _USB_ ...
随机推荐
- YouTube 网站的架构演进——阅读心得
基础平台 Apache Python Linux(SuSe) MySQL psyco,一个动态的Python到C的编译器 lighttpd代替Apache做视频播放 状态 支持每天超过5亿的视频点击量 ...
- Flutter路由跳转父级页面向子页面传参及子页面向父级页面传参
Flutter中页面通过路由跳转传参主要分两种,一种是通过push()跳转时根据设定的参数进行传参,另一种是通过pop()返回时进行传参. 父级页面向子页面push()传参 假设从A页面跳到B页面可能 ...
- vue实现穿梭框效果
vue实现穿梭框效果 一.总结 一句话总结: 用两个数组分别记录左右框框里面的值,用两个数组绑定checkbox,用来记录选中的checkbox值,根据选中的checkbox的值实现删除增加即可 1. ...
- Spring事务知识点
事务的传播属性 PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中.// 最常用,@Transactional注解默认 PROPAGA ...
- [服务器时区问题]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日志中会有如下警 ...
- 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, ...
- PostgreSql 使用自定义序列(Sequence)向表插入数据
最近公司使用到了PostgreSql,哈哈,这个SQL之前基本上没有用过,既然公司使用到了,那就学习一下吧,记一篇小笔记: 什么是PostgreSql:https://www.postgresql.o ...
- BTE的一些知识
1.今天遇到一个问题,看项目上做了BTE增强00001120 事件的BTE 但是自定义函数 更改了参数 t_bseg t_bkpf MODIFY t_bkpf FROM ls_bkpf TRAN ...
- 第一个go程序
进入到工作空间中(我的是$HOME/go, 所以使用cd $HOME/go命令直接进入) 然后创建一个目录 src/hello( mkdir src/hello), 然后进入到该目录中(cd src/ ...
- 45.简单邮件传输协议 SMTP
一丶简单邮件传输协议 简单邮件传输协议 简单邮件传输协议 SMTP smtplib 模块:(在 Python3版本中,可以通过 SMTP协议发送邮件的模块常为 smtplib, 并且这个模块属于内置模 ...