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

📄 usb20.h

📁 瑞芯微RK2608固件源代码
💻 H
📖 第 1 页 / 共 3 页
字号:
};
#endif


//高速设备描述符
USB_DEVICE_DESCRIPTOR HSDeviceDescr DRAM_USB_TABLE=
{
	sizeof(USB_DEVICE_DESCRIPTOR),				//描述符的大小18(1B)
	USB_DEVICE_DESCRIPTOR_TYPE,				//描述符的类型01(1B)
#ifdef __C51__	
	SWAP(0x0200),								//USB规划分布号(2B)
#endif
#ifdef __ZSP__
	LSB(0x0200),MSB(0x0200),						//USB规划分布号(2B)
#endif
	0,//	USB_CLASS_CODE_TEST_CLASS_DEVICE,			//1类型代码(由USB指定)(1B),0x00
	0, 0,											//子类型和协议(由USB分配)(2B)
	EP0_PACKET_SIZE,							//端点0最大包长(1B)
#ifdef __C51__
	SWAP(0x071b),
	SWAP(0x3203),
	SWAP(0x0100),								// 设备系列号

//	SWAP(0x0693),
//	SWAP(0x0003),
//	SWAP(0x0100),               						// 设备系列号

//	SWAP(0x0471),								//供应商ID(由USB分配)(2B)
//	SWAP(0x0666),								//产品ID(由厂商分配)(2B)
//	SWAP(0x0100),								//设备出厂编号(2B)
#endif
#ifdef __ZSP__
	LSB(0x071b),MSB(0x071b),
	LSB(0x3203),MSB(0x3203),
	LSB(0x0100),MSB(0x0100),
#endif
	iManufactuer, iProduct, iSerialNumber,				//厂商,产品,设备序列号字符串索引(3B)
	1											//可能的配置数(1B)
};

//配置描述符
USB_CONFIGURATION_DESCRIPTOR HSConfigDescr DRAM_USB_TABLE=
{
	sizeof(USB_CONFIGURATION_DESCRIPTOR),		//描述符的大小9(1B)
	USB_CONFIGURATION_DESCRIPTOR_TYPE,		//描述符的类型02(1B)
#ifdef __C51__	
	SWAP(CONFIG_DESCRIPTOR_LENGTH),			//返回整个数据的长度(配置,接口,端点和类型或供应商)(2B)
#endif
#ifdef __ZSP__
	LSB(CONFIG_DESCRIPTOR_LENGTH),MSB(CONFIG_DESCRIPTOR_LENGTH),
#endif
	1,											//配置所支持的接口数(1B)
	1,											//作为Set configuration的一个参数选择配置值(1B)
	iConfiguration,								//用于描述配置字符串的索引(1B)
	0x80,										//位图,总线供电&远程唤醒(1B)
	200											//最大消耗电流*2mA(1B)
};

//接口描述符
USB_INTERFACE_DESCRIPTOR HSInterfaceDescr DRAM_USB_TABLE=
{
	sizeof(USB_INTERFACE_DESCRIPTOR),			//描述符的大小9(1B)
	USB_INTERFACE_DESCRIPTOR_TYPE,				//描述符的类型04(1B)
	0,											//接口的编号(1B)
	0,											//用于为上一个字段可供替换的设置(1B)
	NUM_ENDPOINTS,								//使用的端点数(端点0除外)(1B)
	USB_DEVICE_CLASS_STORAGE,					//1类型代码(由USB分配)(1B),USB_DEVICE_CLASS_STORAGE=Mass Storage
	USB_SUBCLASS_CODE_SCSI,					//1子类型代码(由USB分配)(1B),"0x06=Reduced Block Commands(RBC)"
	USB_PROTOCOL_CODE_BULK,					//1协议代码(由USB分配)(1B),"0X50=Mass Storage Class Bulk-Only Transport"
	iInterface										//字符串描述的索引(1B)
};


USB_ENDPOINT_DESCRIPTOR HSMainEP_TXDescr DRAM_USB_TABLE=
{
	sizeof(USB_ENDPOINT_DESCRIPTOR),
	USB_ENDPOINT_DESCRIPTOR_TYPE,
	0x81,
	USB_ENDPOINT_TYPE_BULK,
#ifdef __C51__	
	SWAP(HS_BULK_RX_SIZE),
#endif
#ifdef __ZSP__
	LSB(HS_BULK_RX_SIZE),MSB(HS_BULK_RX_SIZE),
#endif
	0		//bulk trans invailed
};

USB_ENDPOINT_DESCRIPTOR HSMainEP_RXDescr DRAM_USB_TABLE=
{
	sizeof(USB_ENDPOINT_DESCRIPTOR),
	USB_ENDPOINT_DESCRIPTOR_TYPE,
	0x01,
	USB_ENDPOINT_TYPE_BULK,
#ifdef __C51__	
	SWAP(HS_BULK_RX_SIZE),
#endif
#ifdef __ZSP__
	LSB(HS_BULK_RX_SIZE),MSB(HS_BULK_RX_SIZE),
#endif
	0		//bulk trans invailed
};

#ifdef OT2
//配置描述符集合
uint8 HSConfigDescrs[] DRAM_USB_TABLE=
{
	sizeof(USB_CONFIGURATION_DESCRIPTOR),		//描述符的大小9(1B)
	USB_CONFIGURATION_DESCRIPTOR_TYPE,		//描述符的类型02(1B)
	LSB(CONFIG_DESCRIPTOR_LENGTH),MSB(CONFIG_DESCRIPTOR_LENGTH),
	1,											//配置所支持的接口数(1B)
	1,											//作为Set configuration的一个参数选择配置值(1B)
	iConfiguration,								//用于描述配置字符串的索引(1B)
	0x80,										//位图,总线供电&远程唤醒(1B)
	200,											//最大消耗电流*2mA(1B)

//接口描述符
	sizeof(USB_INTERFACE_DESCRIPTOR),			//描述符的大小9(1B)
	USB_INTERFACE_DESCRIPTOR_TYPE,				//描述符的类型04(1B)
	0,											//接口的编号(1B)
	0,											//用于为上一个字段可供替换的设置(1B)
	NUM_ENDPOINTS,								//使用的端点数(端点0除外)(1B)
	USB_DEVICE_CLASS_STORAGE,					//1类型代码(由USB分配)(1B),USB_DEVICE_CLASS_STORAGE=Mass Storage
	USB_SUBCLASS_CODE_SCSI,					//1子类型代码(由USB分配)(1B),"0x06=Reduced Block Commands(RBC)"
	USB_PROTOCOL_CODE_BULK,					//1协议代码(由USB分配)(1B),"0X50=Mass Storage Class Bulk-Only Transport"
	iInterface,										//字符串描述的索引(1B)

//端点描述符
	sizeof(USB_ENDPOINT_DESCRIPTOR),
	USB_ENDPOINT_DESCRIPTOR_TYPE,
	0x81,
	USB_ENDPOINT_TYPE_BULK,
	LSB(HS_BULK_RX_SIZE),MSB(HS_BULK_RX_SIZE),
	0,		//bulk trans invailed

//端点描述符
	sizeof(USB_ENDPOINT_DESCRIPTOR),
	USB_ENDPOINT_DESCRIPTOR_TYPE,
	0x01,
	USB_ENDPOINT_TYPE_BULK,
	LSB(HS_BULK_RX_SIZE),MSB(HS_BULK_RX_SIZE),
	0		//bulk trans invailed
};
#endif


//其它速度配置描述符
OTHER_SPEED_CONFIG_DESCRIPTOR Other_Speed_Config_Descriptor DRAM_USB_TABLE=
{
	sizeof(OTHER_SPEED_CONFIG_DESCRIPTOR),	//length of other speed configuration descriptor
	0x07,									//Other speed configuration Type
#ifdef __C51__	
	SWAP(CONFIG_DESCRIPTOR_LENGTH),		//返回整个数据的长度(配置,接口,端点和类型或供应商)(2B)
#endif
#ifdef __ZSP__
	LSB(CONFIG_DESCRIPTOR_LENGTH),MSB(CONFIG_DESCRIPTOR_LENGTH),
#endif
	1,										//配置所支持的接口数(1B)
	1,										//作为Set configuration的一个参数选择配置值(1B)
	iConfiguration,							//用于描述配置字符串的索引(1B)
	0x80,									//位图,总线供电&远程唤醒(1B)
	200										//最大消耗电流*2mA(1B)
};

//高速设备限制描述符
HS_DEVICE_QUALIFIER HS_Device_Qualifier DRAM_USB_TABLE=
{
	sizeof(HS_DEVICE_QUALIFIER),		//length of HS Device Descriptor
	0x06,							//HS Device Qualifier Type
#ifdef __C51__	
	SWAP(0x0200),					// USB 2.0 version
#endif
#ifdef __ZSP__
	LSB(0x0200),MSB(0x0200),
#endif
	USB_DEVICE_CLASS_STORAGE,		//Device class
	USB_SUBCLASS_CODE_SCSI,		//Device SubClass
	USB_PROTOCOL_CODE_BULK, 		//Device Protocol Code
	FS_BULK_RX_SIZE,				//Maximum Packet SIze for other speed
	0x01,							//Number of Other speed configurations
	0x00							//Reserved
};

//字符串描述符,LangId
uint8 LangId[] DRAM_USB_TABLE=
{
	0x04,
	0x03,

	0x09, 0x04		//English--0x0409
//	0x04, 0x08		//Chinese--0x0804
};

//字符串描述符
uint8 StringManufacture[] DRAM_USB_TABLE=
{
	18,
	0x03,

	'R', 0x00,
	'o', 0x00,
	'c', 0x00,
	'k', 0x00,
	'C', 0x00,
	'h', 0x00,
	'i', 0x00,
	'p', 0x00
};

uint8 StringProduct[] DRAM_USB_TABLE=
{
	18,
	0x03,

	'R', 0x00,
	'O', 0x00,
	'C', 0x00,
	'K', 0x00,
	' ', 0x00,
	'M', 0x00,
	'P', 0x00,
	'3', 0x00
};

uint8 StringSerialNumbel[] DRAM_USB_TABLE=
{
	18,
	0x03,

	'U', 0x00,
	'S', 0x00,
	'B', 0x00,
	'V', 0x00,
	'1', 0x00,
	'.', 0x00,
	'0', 0x00,
	'0', 0x00
};

uint8 StringConfig[] DRAM_USB_TABLE=
{
	18,
	0x03,

	'C', 0x00,
	'O', 0x00,
	'N', 0x00,
	'F', 0x00,
	'I', 0x00,
	'G', 0x00,
	' ', 0x00,
	' ', 0x00
};

uint8 StringInterface[] DRAM_USB_TABLE=
{
	18,
	0x03,

	'I', 0x00,
	'N', 0x00,
	'T', 0x00,
	'E', 0x00,
	'R', 0x00,
	'F', 0x00,
	'A', 0x00,
	'C', 0x00
};


/**************************************************************************
 USB protocol function pointer arrays
**************************************************************************/
//USB标准请求
void (*StandardDeviceRequest[])(void) DRAM_USB_TABLE=
{
	get_status,
	clear_feature,
	reserved,
	set_feature,
	reserved,
	set_address,
	get_descriptor,
	reserved,
	get_configuration,
	set_configuration,
	get_interface,
	set_interface,
	reserved,
	reserved,
	reserved,
	reserved
};

//用户厂商请求
void (*VendorDeviceRequest[])(void) DRAM_USB_TABLE=
{
	reserved,
	reserved,
	reserved,
	reserved,
	reserved,
	reserved,
	reserved,
	reserved,
	reserved,
	reserved,
	reserved,
	reserved,
	read_write_register,
	reserved,
	reserved,
	reserved
};

#if 0
char * _NAME_USB_REQUEST_DIRECTION[] DRAM_USB_TABLE=
{
	"Host_to_device",
	"Device_to_host"
};

char * _NAME_USB_REQUEST_RECIPIENT[] DRAM_USB_TABLE=
{
	"Device",
	"Interface",
	"Endpoint(0)",
	"Other"
};

char * _NAME_USB_REQUEST_TYPE[] DRAM_USB_TABLE=
{
	"Standard",
	"Class",
	"Vendor",
	"Reserved"
};

char * _NAME_USB_STANDARD_REQUEST[] DRAM_USB_TABLE=
{
	"GET_STATUS",
	"CLEAR_FEATURE",
	"RESERVED",
	"SET_FEATURE",
	"RESERVED",
	"SET_ADDRESS",
	"GET_DESCRIPTOR",
	"SET_DESCRIPTOR",
	"GET_CONFIGURATION",
	"SET_CONFIGURATION",
	"GET_INTERFACE",
	"SET_INTERFACE",
	"SYNC_FRAME"
};
#endif

#else
extern	USB_DEVICE_DESCRIPTOR 			DeviceDescr;
extern	USB_CONFIGURATION_DESCRIPTOR 	ConfigDescr;
extern	USB_INTERFACE_DESCRIPTOR 		InterfaceDescr;
extern	USB_ENDPOINT_DESCRIPTOR 		MainEP_TXDescr;
extern	USB_ENDPOINT_DESCRIPTOR 		MainEP_RXDescr;

extern	USB_DEVICE_DESCRIPTOR 			HSDeviceDescr;
extern	USB_CONFIGURATION_DESCRIPTOR 	HSConfigDescr;
extern	USB_INTERFACE_DESCRIPTOR 		HSInterfaceDescr;
extern	USB_ENDPOINT_DESCRIPTOR 		HSMainEP_TXDescr;
extern	USB_ENDPOINT_DESCRIPTOR 		HSMainEP_RXDescr;

extern	OTHER_SPEED_CONFIG_DESCRIPTOR Other_Speed_Config_Descriptor;
extern	HS_DEVICE_QUALIFIER 			HS_Device_Qualifier;
extern	void (*StandardDeviceRequest[])(void);
extern	void (*VendorDeviceRequest[])(void);
extern	uint8 LangId[4];
extern	uint8 StringManufacture[18];
extern	uint8 StringProduct[18];
extern	uint8 StringSerialNumbel[18];
extern	uint8 StringConfig[18];
extern	uint8 StringInterface[18];
#ifdef OT2
extern	uint8 HSConfigDescrs[];
extern	uint8 FSConfigDescrs[];
#endif
#endif
#endif
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -