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

📄 usb110.h

📁 开发环境ADS 通过编写一段程序使PC机与实验箱的从USB相连接。连接的时候
💻 H
字号:
/************************************************************************
 *File	: Usb110.h														*
 *By 	: hugang, hgx2000@mail.china.com								*
 ************************************************************************/ 

#ifndef   __USB110_H__
#define   __USB110_H__

/********************************************************************************************************
 *USB标准请求代码	bRequest																			*
 *参照USB1.1标准第9章,Table9-4. Standard Request Codes													*
 ********************************************************************************************************/
#define USB_REQUEST_GET_STATUS      		0x00
#define USB_REQUEST_CLEAR_FEATURE      		0x01
		// Resevered for furture use		0x02
#define USB_REQUEST_SET_FEATURE             0x03
		// Resevered for furture use		0x04											
#define USB_REQUEST_SET_ADDRESS             0x05
#define USB_REQUEST_GET_DESCRIPTOR          0x06
#define USB_REQUEST_SET_DESCRIPTOR          0x07
#define USB_REQUEST_GET_CONFIGURATION       0x08
#define USB_REQUEST_SET_CONFIGURATION       0x09
#define USB_REQUEST_GET_INTERFACE           0x0A
#define USB_REQUEST_SET_INTERFACE           0x0B
#define USB_REQUEST_SYNC_FRAME              0x0C


/********************************************************************************************************
 *USB描述符类型代码																						*
 *参照USB1.1标准第9章,Table9-5. Descriptor Types														*
 ********************************************************************************************************/
#define USB_DEVICE_DESCRIPTOR_TYPE     		0x01
#define USB_CONFIGURATION_DESCRIPTOR_TYPE	0x02
#define USB_STRING_DESCRIPTOR_TYPE			0x03
#define USB_INTERFACE_DESCRIPTOR_TYPE		0x04
#define USB_ENDPOINT_DESCRIPTOR_TYPE		0x05


/********************************************************************************************************
 *USB特性选择符代码																						*
 *参照USB1.1标准第9章,Table9-6. Standard Feature Selectors												*
 ********************************************************************************************************/
#define USB_FEATURE_ENDPOINT_STALL          0x00
#define USB_FEATURE_REMOTE_WAKEUP           0x01


/********************************************************************************************************
 *USB Setup包掩码 	bRequestType																		*
 *参照USB1.1标准第9章,Table9-2. Format of Setup Data													*
 ********************************************************************************************************/
#define USB_ENDPOINT_DIRECTION_MASK			0x80

#define USB_RECIPIENT_MASK         			(unsigned char)0x1F
#define USB_RECIPIENT_DEVICE				(unsigned char)0x00
#define USB_RECIPIENT_INTERFACE				(unsigned char)0x01
#define USB_RECIPIENT_ENDPOINT				(unsigned char)0x02

#define USB_REQUEST_TYPE_MASK				(unsigned char)0x60
#define USB_STANDARD_REQUEST				(unsigned char)0x00
#define USB_CLASS_REQUEST					(unsigned char)0x20
#define USB_VENDOR_REQUEST					(unsigned char)0x40

#define USB_REQUEST_MASK					(unsigned char)0x0F


/********************************************************************************************************
 *USB设备请求Set_Address地址掩码	wValue																*
 *																										*
 ********************************************************************************************************/
#define USB_DEVICE_ADDRESS_MASK				0x7F


/********************************************************************************************************
 *USB设备请求端点号掩码	wIndex																			*
 *																										*
 ********************************************************************************************************/
 #define USB_ENDPOINT_NUMBER_MASK			(unsigned char)0x03


/********************************************************************************************************
 *USB端点传输方式代码																					*
 *																										*
 ********************************************************************************************************/
#define USB_ENDPOINT_TYPE_MASK				0x0B

#define USB_ENDPOINT_TYPE_CONTROL			0x00
#define USB_ENDPOINT_TYPE_ISOCHRONOUS		0x01
#define USB_ENDPOINT_TYPE_BULK				0x02
#define USB_ENDPOINT_TYPE_INTERRUPT			0x03


/********************************************************************************************************
 *USB设备类型代码																						*
 *																										*
 ********************************************************************************************************/
#define USB_DEVICE_CLASS_RESERVED			0x00
#define USB_DEVICE_CLASS_AUDIO				0x01
#define USB_DEVICE_CLASS_COMMUNICATIONS		0x02
#define USB_DEVICE_CLASS_HUMAN_INTERFACE	0x03
#define USB_DEVICE_CLASS_MONITOR			0x04
#define USB_DEVICE_CLASS_PHYSICAL_INTERFACE	0x05
#define USB_DEVICE_CLASS_POWER				0x06
#define USB_DEVICE_CLASS_PRINTER			0x07
#define USB_DEVICE_CLASS_STORAGE			0x08
#define USB_DEVICE_CLASS_HUB				0x09
#define USB_DEVICE_CLASS_VENDOR_SPECIFIC	0xFF

#define USB_CLASS_CODE_TEST_CLASS_DEVICE	0xDC
#define USB_SUBCLASS_CODE_TEST_CLASS_D12	0xA0
#define USB_PROTOCOL_CODE_TEST_CLASS_D12	0xB0

#define USB_CLASS_MASS_STORAGE				0x08
#define USB_SUBCLASS_MASS_STORAGE			0x06
#define USB_PROTOCOL_MASS_STORAGE			0x50
/********************************************************************************************************
 *USB描述符结构																							*
 *																										*
 ********************************************************************************************************/
 //设备描述符
typedef __packed struct _USB_DEVICE_DESCRIPTOR 
{
    unsigned char 	bLength;
    unsigned char 	bDescriptorType;
    unsigned short 	bcdUSB;
    unsigned char 	bDeviceClass;
    unsigned char 	bDeviceSubClass;
    unsigned char 	bDeviceProtocol;
    unsigned char 	bMaxPacketSize0;
    unsigned short 	idVendor;
    unsigned short 	idProduct;
    unsigned short 	bcdDevice;
    unsigned char 	iManufacturer;
    unsigned char 	iProduct;
    unsigned char 	iSerialNumber;
    unsigned char 	bNumConfigurations;
} USB_DEVICE_DESCRIPTOR, *pUSB_DEVICE_DESCRIPTOR;

//端点描述符
typedef __packed struct _USB_ENDPOINT_DESCRIPTOR 
{
    unsigned char	bLength;
    unsigned char	bDescriptorType;
    unsigned char	bEndpointAddress;
    unsigned char	bmAttributes;
    unsigned short	wMaxPacketSize;
    unsigned char	bInterval;
} USB_ENDPOINT_DESCRIPTOR, *pUSB_ENDPOINT_DESCRIPTOR;

//配置描述符
typedef __packed struct _USB_CONFIGURATION_DESCRIPTOR 
{
    unsigned char	bLength;
    unsigned char	bDescriptorType;
    unsigned short	wTotalLength;
    unsigned char	bNumInterfaces;
    unsigned char	bConfigurationValue;
    unsigned char	iConfiguration;
    unsigned char	bmAttributes;
    unsigned char	MaxPower;
} USB_CONFIGURATION_DESCRIPTOR, *pUSB_CONFIGURATION_DESCRIPTOR;

//接口描述符
typedef __packed struct _USB_INTERFACE_DESCRIPTOR 
{
    unsigned char	bLength;
    unsigned char	bDescriptorType;
    unsigned char	bInterfaceNumber;
    unsigned char	bAlternateSetting;
    unsigned char	bNumEndpoints;
    unsigned char	bInterfaceClass;
    unsigned char	bInterfaceSubClass;
    unsigned char	bInterfaceProtocol;
    unsigned char	iInterface;
} USB_INTERFACE_DESCRIPTOR, *pUSB_INTERFACE_DESCRIPTOR;

//字符串描述符
typedef __packed struct _USB_STRING_DESCRIPTOR 
{
    unsigned char	bLength;
    unsigned char	bDescriptorType;
    unsigned char	bString[1];
} USB_STRING_DESCRIPTOR, *pUSB_STRING_DESCRIPTOR;

typedef __packed struct _USB_TOTAL_DESCRIPTOR 
{
	USB_CONFIGURATION_DESCRIPTOR 	usb_configuration;
	USB_INTERFACE_DESCRIPTOR		usb_interface;
	USB_ENDPOINT_DESCRIPTOR			usb_endpoint_1;
	USB_ENDPOINT_DESCRIPTOR			usb_endpoint_2;
	USB_ENDPOINT_DESCRIPTOR			usb_endpoint_3;
	USB_ENDPOINT_DESCRIPTOR			usb_endpoint_4;
} USB_TOTAL_DESCRIPTOR, *pUSB_TOTAL_DESCRIPTOR;


#endif   /* __USB110_H__ */

⌨️ 快捷键说明

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