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

📄 xllp_udc.h

📁 PXA270硬件测试源代码
💻 H
📖 第 1 页 / 共 3 页
字号:
#define XLLP_UDC_UDCBCR_BC_MASK     0x3ff

#define XLLP_UDC_MAX_EP_NUM         24
#define XLLP_UDC_USB_MAX_EP_NUM     16

#define XLLP_UDC_REQ_TYPE_MASK      (0x3 << 5)      // Used to identify a Request Type
#define XLLP_USB_REQ_RECIPIENT_MASK	0x1f		

#define XLLP_DMA_BUFF_SIZE_MIN      32
#define XLLP_OUT_EP_BUFF_SIZE       4064
#define XLLP_OUT_EP_NUM_BUFF        4

// Enumerate UDC Endpoints
typedef enum XLLP_UDC_EP_E
{
    ENDPOINT_0 = 0,
    ENDPOINT_A,
    ENDPOINT_B,
    ENDPOINT_C,
    ENDPOINT_D,
    ENDPOINT_E,
    ENDPOINT_F,
    ENDPOINT_G,
    ENDPOINT_H,
    ENDPOINT_I,
    ENDPOINT_J,
    ENDPOINT_K,
    ENDPOINT_L,
    ENDPOINT_M,
    ENDPOINT_N,
    ENDPOINT_P,
    ENDPOINT_Q,
    ENDPOINT_R,
    ENDPOINT_S,
    ENDPOINT_T,
    ENDPOINT_U,
    ENDPOINT_V,
    ENDPOINT_W,
    ENDPOINT_X
} XLLP_UDC_EP_T;

// Enumerate USB Endpoints
typedef enum XLLP_UDC_USB_EP_E
{
    USB_EP_0 = 0,
    USB_EP_1,
    USB_EP_2,
    USB_EP_3,
    USB_EP_4,
    USB_EP_5,
    USB_EP_6,
    USB_EP_7,
    USB_EP_8,
    USB_EP_9,
    USB_EP_10,
    USB_EP_11,
    USB_EP_12,
    USB_EP_13,
    USB_EP_14,
    USB_EP_15
} XLLP_UDC_USB_EP_T;

// Enumerate UDC Interrupts
typedef enum XLLP_UDC_INTERRUPTS_E
{
    INT_ENDPOINT_0  = 0,
    INT_ENDPOINT_A,
    INT_ENDPOINT_B,
    INT_ENDPOINT_C,
    INT_ENDPOINT_D,
    INT_ENDPOINT_E,
    INT_ENDPOINT_F,
    INT_ENDPOINT_G,
    INT_ENDPOINT_H,
    INT_ENDPOINT_I,
    INT_ENDPOINT_J,
    INT_ENDPOINT_K,
    INT_ENDPOINT_L,
    INT_ENDPOINT_M,
    INT_ENDPOINT_N,
    INT_ENDPOINT_P  = 15,

    INT_ENDPOINT_Q  = 16,
    INT_ENDPOINT_R,
    INT_ENDPOINT_S,
    INT_ENDPOINT_T,
    INT_ENDPOINT_U,
    INT_ENDPOINT_V,
    INT_ENDPOINT_W,
    INT_ENDPOINT_X,

    INT_RESET       = 27,
    INT_SUSPEND     = 28,
    INT_RESUME      = 29,
    INT_SOF         = 30,
    INT_CONFIG      = 31
} XLLP_UDC_INTERRUPTS_T;

// Enumerate UDC Transfers Types
typedef enum XLLP_UDC_EP_TYPE_E
{
    CNTRL   = 0x00,
    ISO     = 0x01,
    BULK    = 0x02,
    INTERPT = 0x03
} XLLP_UDC_EP_TYPE_T;

// Enumerate UDC Endpoint Direction
typedef enum XLLP_UDC_EP_DIR_E
{
    OUT = 0x00,
    IN  = 0x01
} XLLP_UDC_EP_DIR_T;

// Enumerate UDC Endpoint Max. Packet Size
typedef enum XLLP_UDC_EP_MPS_E
{
    MPS_CNTRL_8  = 8,
    MPS_CNTRL_16 = 16,
    MPS_BULK_8  = 8,
    MPS_BULK_16 = 16,
    MPS_BULK_32 = 32,
    MPS_BULK_64 = 64,
    MPS_INT_8   = 8,
    MPS_INT_16  = 16, 
    MPS_INT_32  = 32,
    MPS_INT_64  = 64,
    MPS_ISO_256 = 256,
    MPS_ISO_512 = 512,
    MPS_ISO_1023 = 1023, 
    MPS_ISO_LSB_256 = 0x00, 
    MPS_ISO_MSB_256 = 0x01,
    MPS_ISO_LSB_512 = 0x00, 
    MPS_ISO_MSB_512 = 0x02,
    MPS_ISO_LSB_1023 = 0xff,
    MPS_ISO_MSB_1023 = 0x03 
} XLLP_UDC_EP_MPS_T;

// Enumerate UDC Endpoint Double Buffering Enabled/Disabled
typedef enum XLLP_UDC_EP_DOUBLE_BUFF_E
{
    DB_DIS  = 0,
    DB_EN   = 1
} XLLP_UDC_EP_DOUBLE_BUFF_T;

// Enumerate UDC Endpoint Enabled/Disabled
typedef enum XLLP_UDC_EP_ENABLED_E
{
    EP_DIS  = 0,
    EP_EN   = 1
} XLLP_UDC_EP_ENABLED_T;

// Enumerate UDC Endpoint Interrupts
typedef enum XLLP_UDC_EP_INTERRUPT_TYPE_E
{
    PACKET_COMPL_INT = 0,
    FIFO_ERROR_INT   = 1
} XLLP_UDC_EP_INTERRUPT_TYPE_T;

// Enumerate EP0 State machine
typedef enum XLLP_UDC_EP0_STATE_E
{
    EP0_IDLE_STATE      = 0,
    EP0_OUT_DATA_STATE  = 1,
    EP0_IN_DATA_STATE   = 2,
    EP0_END_XFER_STATE  = 3,
    EP0_JUMP_TO_IDLE    = 0xfe 
} XLLP_UDC_EP0_STATE_T;

// Enumerate Request types
typedef enum XLLP_UDC_USB_REQUEST_TYPE_E
{
    STANDARD_REQ    = 0x00,
    CLASS_REQ       = 0x01,
    VENDOR_REQ      = 0x02
} XLLP_UDC_USB_REQUEST_TYPE_T;

// Enumerate USB Standard Request types
typedef enum XLLP_UDC_USB_STANDARD_REQ_E
{
    GET_STATUS      = 0x00,
    CLEAR_FEATURE   = 0x01,
    SET_FEATURE     = 0x03,
    SET_ADDRESS     = 0x05,
    GET_DESCRIPTOR  = 0x06,
    SET_DESCRIPTOR  = 0x07,
    GET_CONFIGURATION = 0x08,
    SET_CONFIGURATION = 0x09,
    GET_INTERFACE   = 0x0a,
    SET_INTERFACE   = 0x0b,
    SYNC_FRAME      = 0x0c
} XLLP_UDC_USB_STANDARD_REQ_T;

// USB Descriptor types
typedef enum XLLP_UDC_USB_DESCRIPTORS_E
{
    DEVICE_DESCRIPTOR   = 0x01,
    CONFIG_DESCRIPTOR   = 0x02,
    STRING_DESCRIPTOR   = 0x03,
    INTERFACE_DESCRIPTOR = 0x04,
    ENDPOINT_DESCRIPTOR = 0x05
} XLLP_UDC_USB_DESCRIPTORS_T;

// Enumerate Vendor Requests
typedef enum XLLP_UDC_VENDOR_REQ_E
{
    VENDOR_SETUP_IN_EP     = 0x01,
    VENDOR_SETUP_OUT_EP    = 0x02,
    VENDOR_SETUP_INT_EP    = 0x03,
    VENDOR_SETUP_LOOPBACK  = 0x04
} XLLP_UDC_VENDOR_REQ_T;

/*

⌨️ 快捷键说明

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