搜档网
当前位置:搜档网 › USB设备Bulk配置描述符

USB设备Bulk配置描述符

/********************************设备描述符************************************/
const uint8_t Virtual_Com_Port_DeviceDescriptor[] =
{
0x12, /* 描述符的长度 18个字节 */
USB_DEVICE_DESCRIPTOR_TYPE, /* 描述符类型 */
0x00,
0x02, /* 本设备所使用的USB协议版本 */
0xFF, /* 设备类代码: CDC */ /* 0x02->0xff自定义设备*/
0x00, /* 子类代码 */
0x00, /* 设备所使用的协议 */
0x40, /* 端点0 最大包长 */
0x83,
0x04, /* 厂商ID = 0x0483 */
0x40,
0x57, /* 产品ID = 0x7540 */
0x00,
0x02, /* 设备版本号 = 2.00 */
1, /* 描述厂商的字符串的索引 */
2, /* 描述产品的字符串的索引 */
3, /* 产品序列号索引 */
0x01 /* 可能的配置数 */
};


/********************************配置描述符************************************/
const uint8_t Virtual_Com_Port_ConfigDescriptor[] =
{
/*配置描述符*/
0x09, /* 配置描述符的长度 9字节 */
/* bLength 大小为1字节,表示该描述符的长度。标准的USB配置描述符的长度为 9字节 */
USB_CONFIGURATION_DESCRIPTOR_TYPE, /* 配置描述符类型 */
/* bDescriptorType 大小为1字节。表示描述符类型,配置描述符的类型编码为0X02 */
(9+9+7+7+7+7),//VIRTUAL_COM_PORT_SIZ_CONFIG_DESC, /* 配置描述符集合总长度 */
/* bTotalLength 大小为2字节。表示整个配置描述符集合的总长度,
包括配置描述符、接口描述符、类特殊描述符、断电描述符。@注意低字节在前。 */
0x00,
0x01, /* 该配置所支持的接口数 */
/* bNumInterfaces 大小为1字节。表示该配置所支持的接口数量。 */
0x01, /* 该配置的值 */
/* bConfiguration 大小为1字节。表示该配置的值。通常一个USB设备可以支持多个配置,
此处是每个配置的标识。设置配置请求时会发送一个配置值,
如果某个配置值的bConfiguartion与它相匹配,表示该配置被激活,为当前配置。 */
0x00, /* 描述该配置的字符串索引值 */
/* iConfiguration 大小为1字节。描述该配置的字符串索引值。0表示没有字符串 */
0xC0, /* 该设备的供电属性 */
/*
bmAttributes 大小为1字节,
D7保留必须置为1
D6表示供电方式 1自供电 0总线供电
D5表示是否支持远程唤醒 1支持
D4-D0保留 必须置为0
*/
0x64, /* 设备所需要的电流 单位:200mA */
/* bMaxPower 大小为1字节,表示设备需要从总线获取的最大电流量 */

/********************************接口描述符************************************/
0x09, /* 该描述符的长度 9字节 */

/* bLength 大小为1字节,表示该描述符的长度。标准的USB配置描述符的长度为 9字节 */
USB_INTERFACE_DESCRIPTOR_TYPE, /* 配置描述符类型 */
/* bDescriptorType 大小为1字节。表示描述符类型,接口描述符的类型编码为0X04 */
0x00, /* 该接口的编号 */
/* bInterfaceNumber 大小为1字节 该接口的编号 从0开始递增 */
0x00, /* 该接口的备用编号 */
/* bAlternateSetting 大小为1字节 该接口的备用编号 从0开始递增 */
0x04, /* 该接口所使用的端点数 */
/* bNumEndpoints 大小为1字节 该接口所使用的端点数(不包括端点0)
如果该字段为0 则表示没有非0端点,只使用默认控制端点 */
0x00, /* bInterfaceClass 接口所使用的类 */
0x00, /* bInterfaceSubClass 接口所使用的子类 */
0x00, /* bInterfaceProtocol 接口所使用的协议 */
0x00, /* 描述该配置的字符串索引值 */
/* iConfiguration 大小为1字节。描述该配置的字符串索引值。0表示没有字符串 */

/********************************功能描述符************************************/
// 0x05, /* 该描述符的长度 5字节 */
// /* bLength 大小为1字节,表示该描述符的长度。标准的USB端点描述符的长度为 7字节 */
// 0x24, /* 配置描述符类型 */
// /* bDescriptorType 大小为1字节。表示描述符类型,CS_INTERFACE编码固定为0X24 */
// 0x00, /* 描述符子类型 bDescriptorSubtype Header Func Desc 0x00 */
// 0x10,
// 0x01, /* bcdCDC 版本号字段 0x0110 */

/**************************调用管理功能描述符**********************************/
// 0x05, /* 描述符的长度 5字节 */
// /* bFunctionLength 大小为1字节,表示该描述符的长度。*/
// 0x24, /* 配置描述符类型 */
// /* bDescriptorType 大小为1字节。表示描述符类型,CS_INTERFACE编码固定为0X24 */
// 0x01, /* 配置描述符子类型 */
// /* bDescriptorSubtype 大小为1字节。表示描述符类型,调用管理功能描述符 */
// 0x00, /* 描述设备的能力 */
// /* bmCapabilities 大小为1字节
// D0 0表示设备自己不处理调用管理 1自己处理
// D0 为0将忽略D1
// D1 表示调用管理通过数据类接口还是通信类接口 0仅通过通讯类接口 1可通过数据类接口
// 其余位忽略 置为0
// */
// 0x01, /* bDataInterface 选择用于做调用管理的数据类接口编号 */

/*********************抽象控制管理功能描述符**********************************/
// /*ACM Functional Descriptor*/
// 0x04, /* 描述符的长度 4字节 */
// /* bFunctionLength 大小为1字节,表示该描述符的长度。*/
// 0x24, /*

配置描述符类型 */
// /* bDescriptorType 大小为1字节。表示描述符类型,CS_INTERFACE编码固定为0X24 */
// 0x02, /* 配置描述符子类型 */
// /* bDescriptorSubtype 大小为1字节。表示描述符类型,Abstract Control Management desc */
// 0x02, /* 描述设备的能力 */
// /* bmCapabilities 大小为1字节
// D4-D7为保留位,置为0,
// D0表示支持以下请求:
// Set_Comm_Feature Clear_Comm_Feature Get_Comm_Feature 1表示支持
// D1表示支持
// Set_Line_Coding Set_Control_Line_Statr Get_Line_Coding 请求
// 和 Serial_State 通知 1表示支持
// D2表示是否支持 Send_Break 1表示支持
// D3表示是否支持 Network_Control_Line_State 通知 1表示支持
// */
//
/*************************联合体功能描述符**********************************/
// /*Union Functional Descriptor*/
// 0x05, /* 描述符的长度 5字节 */
// /* bFunctionLength 大小为1字节,表示该描述符的长度。*/
// 0x24, /* 配置描述符类型 */
// /* bDescriptorType 大小为1字节。表示描述符类型,CS_INTERFACE编码固定为0X24 */
// 0x06, /* 配置描述符子类型 */
// /* bDescriptorSubtype 大小为1字节。表示描述符类型,Union func desc */
// 0x00, /* 主接口编号 bMasterInterface */
// 0x01, /* 从接口编号 bSlaveInterface0 Data Class Interface */
//
// /****************************CDC接口描述符**********************************/
// /*Endpoint 2 Descriptor*/
// 0x07, /* 描述符的长度 9字节 */
// /* bFunctionLength 大小为1字节,表示该描述符的长度。*/
// USB_ENDPOINT_DESCRIPTOR_TYPE, /* 配置描述符类型 */
// /* bDescriptorType 大小为1字节。表示描述符类型 */
// 0x82, /* 端点地址 */
// /* bEndpointAddress:
// D7 表示数据方向 输入为1 (IN2)
// 端点2 所以 0x80+2
// */
// 0x03, /* bmAttributes D1-D0 为端点传输类型选择 其他位为0 0x03 Interrupt */
// VIRTUAL_COM_PORT_INT_SIZE,
// 0x00, /* wMaxPacketSize 该端点的最大包长 */
// 0xFF, /* bInterval 端点的查询时间 */

/*************************数据类接口描述符**********************************/
// /*Data class interface descriptor*/
// 0x09, /* 描述符的长度 9字节 */
// /* bFunctionLength 大小为1字节,表示该描述符的长度。*/
// USB_INTERFACE_DESCRIPTOR_TYPE, /* 配置描述符类型 */
// /* bDescriptorType 大小为1字节。表示描述符类型 */
// 0x01, /* 该接口的编号 第二个接口 1 bInterfaceNumber */
// 0x00, /* 该接口的备用编号 bAlternateSetting */
// 0x02,

/* 非0端点数目 */
// /* bNumEndpoints 该接口需要使用一对批量传输端点 */
// 0x0A, /* 该接口所使用的类 数据接口类代码 InterfaceClass: CDC */
// 0x00, /* 该接口所使用的子类 bInterfaceSubClass: */
// 0x00, /* 该接口所使用的协议 bInterfaceProtocol: */
// 0x00, /* 描述该接口的字符串索引值 */
// /* iConfiguration 大小为1字节。描述该接口的字符串索引值。0表示没有字符串 */
//
/****************************端点3描述符************************************/
/*Endpoint 3 Descriptor*/
0x07, /* 描述符的长度 7字节 */
/* bFunctionLength 大小为1字节,表示该描述符的长度。*/
USB_ENDPOINT_DESCRIPTOR_TYPE, /* 配置描述符类型 */
/* bDescriptorType 大小为1字节。表示描述符类型 Endpoint 0x05 */
0x03, /* 端点地址 */
/* bEndpointAddress:
D7 表示数据方向 输出为0 (OUT3)
端点3 所以 0x00+3
*/
0x02, /* bmAttributes D1-D0 为端点传输类型选择 其他位为0 0x02 Bulk */
VIRTUAL_COM_PORT_DATA_SIZE,
0x40, /* wMaxPacketSize 该端点的最大包长 */
0x00, /* bInterval 端点的查询时间,对批量端点无效 */

/****************************端点1描述符************************************/
/*Endpoint 1 Descriptor*/
0x07, /* 描述符的长度 7字节 */
/* bFunctionLength 大小为1字节,表示该描述符的长度。*/
USB_ENDPOINT_DESCRIPTOR_TYPE, /* 配置描述符类型 */
/* bDescriptorType 大小为1字节。表示描述符类型 Endpoint 0x05 */
0x81, /* 端点地址 */
/* bEndpointAddress:
D7 表示数据方向 输入为1(IN1)
端点1 所以 0x80+1
*/
0x02, /* bmAttributes D1-D0 为端点传输类型选择 其他位为0 0x02 Bulk */
VIRTUAL_COM_PORT_DATA_SIZE,
0x40, /* wMaxPacketSize 该端点的最大包长 */
0x00, /* bInterval 端点的查询时间,对批量端点无效 */

/*Endpoint 2 Descriptor*/
0x07, /* bLength: Endpoint Descriptor size */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */
0x82, /* bEndpointAddress: (IN1) */
0x03, /* bmAttributes: Bulk */
0x40, /* wMaxPacketSize: */
0x00,
0x00, /* bInterval */
/*Endpoint 2 Descriptor*/
0x07, /* bLength: Endpoint Descriptor size */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */
0x02, /* bEndpointAddress: (IN1) */
0x03, /* bmAttributes: Bulk */
0x40, /* wMaxPacketSize: */
0x00,
0x00 /* bInterval */
};

相关主题