📄 xllp_udc.h
字号:
#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 + -