⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usb_descriptor.h

📁 学习资料S12源程序UF32 USB MCU方测试程序 CW环境
💻 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 + -