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

📄 usb.h

📁 AVR2560 Sample C Code(usb.c)
💻 H
字号:
#ifndef __USB
#define __USB

#define __USB_NUM_ENDPOINTS							4
#define __USB_MAX_ENDPOINTS							3

#define __EP0_DATA_PHASE_PACKET    					3
#define __EP0_TX_FIFO_SIZE   						16
#define __EP0_RX_FIFO_SIZE   						16
#define __EP0_PACKET_SIZE    						16

#define __EP1_TX_FIFO_SIZE   						16
#define __EP1_RX_FIFO_SIZE   						16
#define __EP1_PACKET_SIZE    						16

#define __EP2_TX_FIFO_SIZE   						64
#define __EP2_RX_FIFO_SIZE   						64
#define __EP2_PACKET_SIZE							64
#define __MAX_CONTROLDATA_SIZE						8

//###
//### Descriptor type俊 措秦 沥狼茄促.
//###
#define __DEVICE_DESCRIPTOR_TYPE                	0x01
#define __CONFIGURATION_DESCRIPTOR_TYPE         	0x02
#define __INTERFACE_DESCRIPTOR_TYPE             	0x04
#define __ENDPOINT_DESCRIPTOR_TYPE              	0x05
#define __STRING_DESCRIPTOR_TYPE                	0x03
#define __POWER_DESCRIPTOR_TYPE                 	0x06

//###
//### Device Request 秦籍阑 困茄 Macro沥狼.
//###
#define __USB_ENDPOINT_DIRECTION_MASK              	0x80
#define __USB_DEVICE_ADDRESS_MASK      				0x7F

#define __USB_RECIPIENT            					0x1F
#define __USB_RECIPIENT_DEVICE     					0x00
#define __USB_RECIPIENT_INTERFACE  					0x01
#define __USB_RECIPIENT_ENDPOINT   					0x02

#define __USB_REQUEST_TYPE_MASK    					0x60
#define __USB_STANDARD_REQUEST     					0x00
#define __USB_CLASS_REQUEST       					0x20
#define __USB_VENDOR_REQUEST       					0x40

#define __USB_REQUEST_MASK         					0x0F

#define __USB_FEATURE_ENDPOINT_STALL          		0x0000
#define __USB_FEATURE_REMOTE_WAKEUP           		0x0001
#define __USB_FEATURE_POWER_D0                		0x0002
#define __USB_FEATURE_POWER_D1                		0x0003
#define __USB_FEATURE_POWER_D2                		0x0004
#define __USB_FEATURE_POWER_D3                		0x0005


#define __USB_REQUEST_TYPE_MASK    					0x60
#define __USB_STANDARD_REQUEST     					0x00
#define __USB_CLASS_REQUEST        					0x20
#define __USB_VENDOR_REQUEST       					0x40
#define __USB_REQUEST_MASK         					0x0F

#define __USB_ENDPOINT_TYPE_MASK                    0x03
#define __USB_ENDPOINT_TYPE_CONTROL                 0x00
#define __USB_ENDPOINT_TYPE_ISOCHRONOUS             0x01
#define __USB_ENDPOINT_TYPE_BULK                    0x02
#define __USB_ENDPOINT_TYPE_INTERRUPT               0x03

#define __USB_REQUEST_GET_STATUS                    0x00
#define __USB_REQUEST_CLEAR_FEATURE                 0x01
#define __USB_REQUEST_SET_FEATURE                   0x03
#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


#define __USB_IDLE           						0
#define __USB_TRANSMIT       						1
#define __USB_RECEIVE        						2

#define __STR_INDEX_LANGUAGE					    0x00	
#define __STR_INDEX_MANUFACTURER				    0x01	
#define __STR_INDEX_PRODUCT						    0x02	
#define __STR_INDEX_SERIALNUMBER				    0x03
#define __STR_INDEX_CONFIGURATION				    0x04	
#define __STR_INDEX_INTERFACE					    0x05


#define __USB_JOB_IDLE								0x00
#define __USB_JOB_BUS_RESET							0x01
#define __USB_JOB_SUSPEND							0x02
#define __USB_JOB_SETUP_PACKET						0x04
#define __USB_JOB_REMOTE_WAKEUP						0x08
//#define __USB_JOB_IN_ISR							0x10
#define __USB_JOB_CONFIGURED						0x20
#define __USB_JOB_TIMEOUT							0x40
#define __USB_JOB_EP1_RX_DONE						0x80

//*************************************************************************
// USB Protocol Layer
//*************************************************************************

typedef struct __STRING_PRODUCT_DESCRIPTOR
{
	unsigned short  bLength;
	unsigned short  bDescriptorType;
	unsigned short  Product[14];
}STRING_PRODUCT_DESCRIPTOR;

typedef struct __STRING_MANUFACTURER_DESCRIPTOR
{
	unsigned short  bLength;
	unsigned short  bDescriptorType;
	unsigned short  Manufacturer[12];
}STRING_MANUFACTURER_DESCRIPTOR;

typedef struct __DEVICE_REQUEST
{
	unsigned char bmRequestType;
	unsigned char bRequest;
	unsigned short wValue;
	unsigned short wIndex;
	unsigned short wLength;
}DEVICE_REQUEST;

typedef struct __DEVICE_DESCRIPTOR
{
    UCHAR bLength;
    UCHAR bDescriptorType;
    USHORT bcdUSB;
    UCHAR bDeviceClass;
    UCHAR bDeviceSubClass;
    UCHAR bDeviceProtocol;
    UCHAR bMaxPacketSize0;
    USHORT idVendor;
    USHORT idProduct;
    USHORT bcdDevice;
    UCHAR iManufacturer;
    UCHAR iProduct;
    UCHAR iSerialNumber;
    UCHAR bNumConfigurations;
}DEVICE_DESCRIPTOR;

typedef struct __ENDPOINT_DESCRIPTOR
{
    UCHAR bLength;
    UCHAR bDescriptorType;
    UCHAR bEndpointAddress;
    UCHAR bmAttributes;
    USHORT wMaxPacketSize;
    UCHAR bInterval;
}ENDPOINT_DESCRIPTOR;

typedef struct __CONFIGURATION_DESCRIPTOR
{
    UCHAR bLength;
    UCHAR bDescriptorType;
    USHORT wTotalLength;
    UCHAR bNumInterfaces;
    UCHAR bConfigurationValue;
    UCHAR iConfiguration;
    UCHAR bmAttributes;
    UCHAR MaxPower;
}CONFIGURATION_DESCRIPTOR;

typedef struct __INTERFACE_DESCRIPTOR
{
    UCHAR bLength;
    UCHAR bDescriptorType;
    UCHAR bInterfaceNumber;
    UCHAR bAlternateSetting;
    UCHAR bNumEndpoints;
    UCHAR bInterfaceClass;
    UCHAR bInterfaceSubClass;
    UCHAR bInterfaceProtocol;
    UCHAR iInterface;
}INTERFACE_DESCRIPTOR;

typedef struct __CONFIG_DATA
{
	CONFIGURATION_DESCRIPTOR 	stConfigDesc;
	INTERFACE_DESCRIPTOR 		stInterfaceDesc;
	ENDPOINT_DESCRIPTOR 		stEndpoint1In;
	ENDPOINT_DESCRIPTOR 		stEndpoint1Out;
	ENDPOINT_DESCRIPTOR 		stEndpoint2In;
	ENDPOINT_DESCRIPTOR 		stEndpoint2Out;
}CONFIG_DATA;

void USB_Init(void);
void USB_Reset(void);
void USB_Run(void);
void USB_MgnRoutine(void);								//USB(PDIUSBD12 包府甫 困茄 MainRoutine栏肺 main窃荐狼 while巩 加俊 馆靛矫 器窃且巴.

#endif

⌨️ 快捷键说明

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