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

📄 usb.h

📁 USB-TEST是USB通信的例子
💻 H
字号:
/*********************************************************************************************
* File:	usb.h
* Author:	Embest	
* Desc:	header file of s3c2410x's usb controller for main configuration
*			definitions(USB data structure) for USB setup operation.
*			Because It's h/w independent file, it may be used without any change in future.
* History:	
*            1)Y.J.Guo, Reuse and modify the source of S3C2410X u24xmon, April 28, 2005
*********************************************************************************************/
#ifndef __USB_H__
#define __USB_H__

/*------------------------------------------------------------------------------------------*/
/*						Macro defines forEndpoint 0											*/      
/*------------------------------------------------------------------------------------------*/
// Standard bmRequestTyje (Direction) 
#define HOST_TO_DEVICE              (0x00)
#define DEVICE_TO_HOST              (0x80)    

// Standard bmRequestType (Type) 
#define STANDARD_TYPE               (0x00)
#define CLASS_TYPE                  (0x20)
#define VENDOR_TYPE                 (0x40)
#define RESERVED_TYPE               (0x60)

// Standard bmRequestType (Recipient) 
#define DEVICE_RECIPIENT            (0)
#define INTERFACE_RECIPIENT         (1)
#define ENDPOINT_RECIPIENT          (2)
#define OTHER_RECIPIENT             (3)

// Feature Selectors 
#define DEVICE_REMOTE_WAKEUP        (1)
#define EP_STALL                    (0)

// Standard Request Codes 
#define GET_STATUS                  (0)
#define CLEAR_FEATURE               (1)
#define SET_FEATURE                 (3)
#define SET_ADDRESS                 (5)
#define GET_DESCRIPTOR              (6)
#define SET_DESCRIPTOR              (7)
#define GET_CONFIGURATION           (8)
#define SET_CONFIGURATION           (9)
#define GET_INTERFACE               (10)
#define SET_INTERFACE               (11)
#define SYNCH_FRAME                 (12)

// Class-specific Request Codes 
#define GET_DEVICE_ID               (0)
#define GET_PORT_STATUS             (1)
#define SOFT_RESET                  (2)

// Descriptor Types
#define DEVICE_TYPE                 (1)
#define CONFIGURATION_TYPE          (2)
#define STRING_TYPE                 (3)
#define INTERFACE_TYPE              (4)
#define ENDPOINT_TYPE               (5)

//configuration descriptor: bmAttributes 
#define CONF_ATTR_DEFAULT			(0x80) 						//Spec 1.0 it was BUSPOWERED bit.
#define CONF_ATTR_REMOTE_WAKEUP     (0x20)
#define CONF_ATTR_SELFPOWERED       (0x40)

//endpoint descriptor
#define EP_ADDR_IN					(0x80)	
#define EP_ADDR_OUT					(0x00)

#define EP_ATTR_CONTROL				(0x0)	
#define EP_ATTR_ISOCHRONOUS			(0x1)
#define EP_ATTR_BULK				(0x2)
#define EP_ATTR_INTERRUPT			(0x3)	


//string descriptor
#define LANGID_US_L					(0x09)  
#define LANGID_US_H					(0x04)

/*------------------------------------------------------------------------------------------*/
/*						Struct defines forEndpoint 0										*/      
/*------------------------------------------------------------------------------------------*/
struct USB_SETUP_DATA{
    UINT8T bmRequestType;    
    UINT8T bRequest;         
    UINT8T bValueL;          
    UINT8T bValueH;          
    UINT8T bIndexL;          
    UINT8T bIndexH;          
    UINT8T bLengthL;         
    UINT8T bLengthH;         
};


struct USB_DEVICE_DESCRIPTOR{
    UINT8T bLength;    
    UINT8T bDescriptorType;         
    UINT8T bcdUSBL;
    UINT8T bcdUSBH;
    UINT8T bDeviceClass;          
    UINT8T bDeviceSubClass;          
    UINT8T bDeviceProtocol;          
    UINT8T bMaxPacketSize0;         
    UINT8T idVendorL;
    UINT8T idVendorH;
    UINT8T idProductL;
    UINT8T idProductH;
    UINT8T bcdDeviceL;
    UINT8T bcdDeviceH;
    UINT8T iManufacturer;
    UINT8T iProduct;
    UINT8T iSerialNumber;
    UINT8T bNumConfigurations;
};


struct USB_CONFIGURATION_DESCRIPTOR{
    UINT8T bLength;    
    UINT8T bDescriptorType;         
    UINT8T wTotalLengthL;
    UINT8T wTotalLengthH;
    UINT8T bNumInterfaces;
    UINT8T bConfigurationValue;
    UINT8T iConfiguration;
    UINT8T bmAttributes;
    UINT8T maxPower;          
};
    

struct USB_INTERFACE_DESCRIPTOR{
    UINT8T bLength;    
    UINT8T bDescriptorType;         
    UINT8T bInterfaceNumber;
    UINT8T bAlternateSetting;
    UINT8T bNumEndpoints;
    UINT8T bInterfaceClass;
    UINT8T bInterfaceSubClass;
    UINT8T bInterfaceProtocol;
    UINT8T iInterface;
};


struct USB_ENDPOINT_DESCRIPTOR{
    UINT8T bLength;    
    UINT8T bDescriptorType;         
    UINT8T bEndpointAddress;
    UINT8T bmAttributes;
    UINT8T wMaxPacketSizeL;
    UINT8T wMaxPacketSizeH;
    UINT8T bInterval;
};

#endif 															//__USB_H__                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            

⌨️ 快捷键说明

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