📄 usb_descriptor.h
字号:
#ifndef _H_USB_DESCRIPTOR_
#define _H_USB_DESCRIPTOR_
/*USB 各种描述定义头文件*/
/*USB2.0 设备描述符 */
const UINT8 Device_Descriptor[18] =
{
0x12, //设备描述符的长度:18字节
0x01, //设备描述符类型
0x00,0x02, //符合USB2.0规范
0x00, //群组码
0x00, //设备次群组
0x00, //设备协议(0表示无群组特定协议)
0x40, //对高速USB2.0来说的最大封包大小
0x25,0x04, //制造商ID=0X0425
0x0e,0x05, //产品号
0x03,0x00, //设备发行号
0x01, //制造商的字符串描述符索引
0x02, //产品的字符串描述符索引
0x00, //设备序号的字符串描述符索引
0x01 //配置数目为:1
};
/*设备匹配描述符*/
const UINT8 Device_Qualifier[10] = {
0x0a, //设备描述符的长度:10字节
0x06, //设备描述符类型
0x00,0x02, //符合USB2.0规范
0xff, //自定义的类型,不是标准类型
0x02, //设备次群组
0xff, //设备协议
0x40, //对高速USB2.0来说的最大封包大小
0x01, //配置数目为1
0x00 //保留
};
/*其它配置描述符*/
const UINT8 Other_Speed_Descriptor[] = {
0x09, //设备描述符的长度
0x07, //设备描述符类型
0x27,0x00, //配置描述符的总长度
};
/*高速批传输方式的标准配置描述符*/
const UINT8 Configuration_DescriptorHS[32] = {
0x09, //配置描述符的长度:9字节
0x02, //配置描述符类型
0x20,0x00, //描述符的总长度,包括接口和端点
0x01, //用来配置的接口的数目,至少一个数据接口
0x01, //配置值
0x00, //配置的字符串描述符索引
0x80, //配置的属性(具有总线供电、自供电及过程唤醒的特性)
// bit 7-总线供电
// bit 6-自供电
// bit 5-远程唤醒
// bit 4-0-reserved
0x32, //最大电流以2mA为单位 该例中:50*2mA=100mA
//标准接口描述符--3个端点(包括默认的控制端点、批量IN和OUT端点)
//const muint8 interface_descriptor[9] = {
0x09, //接口描述符长度:9
0x04, //接口描述类型
0x00, //接口描述符以0为基值
0x00, //交互设置值为0
0x02, //端点数目设置为:2
0xff, //接口群组,自定义
0x02, //
0xff, //接口群组,自定义
0x00, //接口字符串描述符的索引
//批量IN端点描述符
//const muint8 endpoint_descriptor1[7] = {
0x07, //端点描述符长度
0x05, //端点描述符类型
0x81, //端点地址(0x80=IN,0=OUT),端点地址为1且为IN端点
// bit 3..0 端点数目
// bit 6..4 为0
// bit 7 0-OUT, 1-IN
0x02, //传输类型为BULK
0x00,0x02, //最大封包大小的设置:64字节
0x00, //轮询间隔,以ms为单位。批量传输是一种非周期的特性,因此不需设置轮询间隔
//批量OUT端点描述符
//const muint8 endpoint_descriptor2[7] = {
0x07, //端点描述符长度
0x05, //端点描述符类型
0x01, //端点地址(0x80=IN,0=OUT),端点地址为1且为OUT端点
// bit 3..0 端点数目
// bit 6..4 为0
// bit 7 0-OUT, 1-IN
0x02, //传输类型为BULK
0x00,0x02, //最大封包大小的设置:64字节
0x00, //轮询间隔,以ms为单位。批量传输是一种非周期的特性,因此不需设置轮询间隔
};
//全速批传输方式的标准配置描述符
const UINT8 Configuration_DescriptorFS[32] = {
0x09, //配置描述符的长度:9字节
0x02, //配置描述符类型
0x20,0x00, //描述符的总长度,包括接口和端点
0x01, //用来配置的接口的数目,至少一个数据接口
0x01, //配置值
0x00, //配置的字符串描述符索引
0x80, //配置的属性(具有总线供电、自供电及过程唤醒的特性)
// bit 7-总线供电
// bit 6-自供电
// bit 5-远程唤醒
// bit 4-0-reserved
0x32, //最大电流以2mA为单位 该例中:50*2mA=100mA
//标准接口描述符--用于大容量存储器的数据接口 3个端点(包括默认的控制端点、批量IN和OUT端点)
// const muint8 interface_descriptor[9] = {
0x09, //接口描述符长度:9
0x04, //接口描述类型
0x00, //接口描述符以0为基值
0x00, //交互设置值为0
0x02, //端点数目设置为:2
0xff, //接口群组,自定义
0x02, //
0xff, //接口协议:自定义
0x00, //接口字符串描述符的索引
//批量IN端点描述符
// const muint8 endpoint_descriptor1[7] = {
0x07, //端点描述符长度
0x05, //端点描述符类型
0x81, //端点地址(0x80=IN,0=OUT),端点地址为1且为IN端点
// bit 3..0 端点数目
// bit 6..4 为0
// bit 7 0-OUT, 1-IN
0x02, //批量传输
0x40,0x00, //最大封包大小的设置:64字节
0x00, //轮询间隔,以ms为单位。批量传输是一种非周期的特性,因此不需设置轮询间隔
//批量OUT端点描述符
//const muint8 endpoint_descriptor2[7] = {
0x07, //端点描述符长度
0x05, //端点描述符类型
0x01, //端点地址(0x80=IN,0=OUT),端点地址为1且为OUT端点
// bit 3..0 端点数目
// bit 6..4 为0
// bit 7 0-OUT, 1-IN
0x02, //批量传输
0x40,0x00, //最大封包大小的设置:64字节
0x00, //轮询间隔,以ms为单位。批量传输是一种非周期的特性,因此不需设置轮询间隔
};
//字符串描述0
const UINT8 string_descriptor0[4] = {
0x04, //字符串描述符0长度
0x03, //字符串类型
0x09,0x04, //wLANDID0 - English (American)
};
//字符串描述1
const UINT8 string_descriptor1[] = {
18, //字符串描述符1长度
0x03, //字符串类型
'M',0x00, //"M"
'o',0x00, //"o"
't',0x00, //"t"
'o',0x00, //"o"
'r',0x00, //"r"
'o',0x00, //"o"
'l',0x00, //"l"
'a',0x00 //"a"
};
//字符串描述2
const UINT8 string_descriptor2[] = {
20, //字符串描述符2长度
0x03, //字符串类型
'S',0x00,
'I',0x00,
'C',0x00,
'M',0x00,
' ',0x00,
'S',0x00,
'U',0x00,
'D',0x00,
'A',0x00,
};
/*描述符表*/
/*配置描述符表*/
const UINT8* Configuration_Table[][2] =
{
{Configuration_DescriptorHS,Configuration_DescriptorHS},
{Configuration_DescriptorFS,Configuration_DescriptorFS}
};
/*接口描述符表*/
const UINT8* Interface_Table[1] =
{
&Configuration_DescriptorHS[9] // Interface #1
};
/*端点描述符表*/
const UINT8* Endpoint_Table[][2] = {
{&Configuration_DescriptorHS[18],&Configuration_DescriptorHS[25]},
{&Configuration_DescriptorFS[18],&Configuration_DescriptorFS[25]} // Endpoint #1
};
/*字符串描述符表*/
const UINT8* String_Table[4] = {
string_descriptor0, // 字符串0
string_descriptor1, // 字符串1
string_descriptor2, // 字符串2
string_descriptor1
};
#endif _H_USB_DESCRIPTOR_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -