小磷光一

USB模式下BF533设置

0
阅读(1909)

 

/*定义标准的描述符类型,即bDescriptorType字段的值*/
enum {
	DEVICE_DESCRIPTOR = 0x1,
	CONFIGURATION_DESCRIPTOR,
	STRING_DESCRIPTOR,
	INTERFACE_DESCRIPTOR,
	ENDPOINT_DESCRIPTOR,
	POWER_DESCRIPTOR,
	OTG_DESCRIPTOR = 0x9
};
/*定义标准的usb请求命令,即usb分配的各种请求的编号,即bRequest字段的值*/
enum {
	GET_STATUS = 0x0,
	CLEAR_FEATURE,
	SET_FEATURE = 0x3,
	SET_ADDRESS = 0x5,
	GET_DESCRIPTOR,
	SET_DESCRIPTOR,
	GET_CONFIGURATION,
	SET_CONFIGURATION,
	GET_INTERFACE,
	SET_INTERFACE,
	SYNCH_FRAME
};
/*定义端点类型*/
enum {
	ENDPOINT_TYPE_CONTROL,
	ENDPOINT_TYPE_ISOCHRONOUS,
	ENDPOINT_TYPE_BULK,
	ENDPOINT_TYPE_INTERRUPT
};

#define NUM_INTERFACE 0x01
#define NUM_ENDPOINT  0x02

#pragma pack(1)
struct dev_descriptor {
	unsigned char  bLength;
	unsigned char  bDescriptorType;
	unsigned short bcdUSB;
	unsigned char  bDeviceClass;
	unsigned char  bDeviceSubClass;
	unsigned char  bDeviceProtocol;
	unsigned char  bMaxPacketize0;
	unsigned short idVendor;
	unsigned short idProduct;
	unsigned short bcdDevice;
	unsigned char  iManufacturer;
    unsigned char  iProduct;
    unsigned char  iSerialNumber;
    unsigned char  bNumConfigurations;
};

struct dev_qualifier_descriptor {
	unsigned char  bLength;
	unsigned char  bDescriptorType;
	unsigned short bcdUSB;
	unsigned char  bDeviceClass;
	unsigned char  bDeviceSubClass;
	unsigned char  bDeviceProtocol;
	unsigned char  bMaxPacketSize0;
	unsigned char  bNumConfigurations;
	unsigned char  bReserved;
};

struct string_descriptor {
	unsigned char bLength;
	unsigned char bDescriptorType;
	unsigned char SomeDescriptor[36];
};

struct endpoint_descriptor {
	unsigned char  bLength;
	unsigned char  bDescriptorType;
	unsigned char  bEndpointAddress;
	unsigned char  bmAttributes;
	unsigned short wMaxPacketSize;
	unsigned char  bInterval;
};

struct 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;
	
	struct endpoint_descriptor endpoint[NUM_ENDPOINT];
};