📄 usb20.h
字号:
};
#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 + -