23 #ifndef __USB_CORE_H__
24 #define __USB_CORE_H__
46 #define USB_OTG_EP0_IDLE 0
47 #define USB_OTG_EP0_SETUP 1
48 #define USB_OTG_EP0_DATA_IN 2
49 #define USB_OTG_EP0_DATA_OUT 3
50 #define USB_OTG_EP0_STATUS_IN 4
51 #define USB_OTG_EP0_STATUS_OUT 5
52 #define USB_OTG_EP0_STALL 6
54 #define USB_OTG_EP_TX_DIS 0x0000
55 #define USB_OTG_EP_TX_STALL 0x0010
56 #define USB_OTG_EP_TX_NAK 0x0020
57 #define USB_OTG_EP_TX_VALID 0x0030
59 #define USB_OTG_EP_RX_DIS 0x0000
60 #define USB_OTG_EP_RX_STALL 0x1000
61 #define USB_OTG_EP_RX_NAK 0x2000
62 #define USB_OTG_EP_RX_VALID 0x3000
66 #define MAX_DATA_LENGTH 0xFF
136 uint8_t data_pid_start;
137 uint8_t even_odd_frame;
138 uint16_t tx_fifo_num;
146 uint32_t rem_data_len;
147 uint32_t total_data_len;
148 uint32_t ctl_data_len;
158 uint8_t host_channels;
159 uint8_t dev_endpoints;
163 uint16_t TotalFifoSize;
185 uint8_t *(*GetDeviceDescriptor)( uint8_t speed , uint16_t *length);
186 uint8_t *(*GetLangIDStrDescriptor)( uint8_t speed , uint16_t *length);
187 uint8_t *(*GetManufacturerStrDescriptor)( uint8_t speed , uint16_t *length);
188 uint8_t *(*GetProductStrDescriptor)( uint8_t speed , uint16_t *length);
189 uint8_t *(*GetSerialStrDescriptor)( uint8_t speed , uint16_t *length);
190 uint8_t *(*GetConfigurationStrDescriptor)( uint8_t speed , uint16_t *length);
191 uint8_t *(*GetInterfaceStrDescriptor)( uint8_t speed , uint16_t *length);
196 void (*Disconnect) (
void *phost);
197 void (*Connect) (
void *phost);
199 uint8_t DisconnStatus;
201 uint8_t DisconnHandled;
206 uint8_t (*Init) (
void *pdev , uint8_t cfgidx);
207 uint8_t (*DeInit) (
void *pdev , uint8_t cfgidx);
210 uint8_t (*EP0_TxSent) (
void *pdev );
211 uint8_t (*EP0_RxReady) (
void *pdev );
213 uint8_t (*DataIn) (
void *pdev , uint8_t epnum);
214 uint8_t (*DataOut) (
void *pdev , uint8_t epnum);
215 uint8_t (*SOF) (
void *pdev);
216 uint8_t (*IsoINIncomplete) (
void *pdev);
217 uint8_t (*IsoOUTIncomplete) (
void *pdev);
219 uint8_t *(*GetConfigDescriptor)( uint8_t speed , uint16_t *length);
220 #ifdef USB_OTG_HS_CORE
221 uint8_t *(*GetOtherConfigDescriptor)( uint8_t speed , uint16_t *length);
224 #ifdef USB_SUPPORT_USER_STRING_DESC
225 uint8_t *(*GetUsrStrDescriptor)( uint8_t speed ,uint8_t index, uint16_t *length);
235 void (*DeviceReset)(uint8_t speed);
236 void (*DeviceConfigured)(void);
237 void (*DeviceSuspended)(void);
238 void (*DeviceResumed)(void);
240 void (*DeviceConnected)(void);
241 void (*DeviceDisconnected)(void);
248 uint8_t device_config;
249 uint8_t device_state;
250 uint8_t device_status;
251 uint8_t device_address;
252 uint32_t DevRemoteWakeup;
255 uint8_t setup_packet [8*3];
259 uint8_t *pConfig_descriptor;
266 uint8_t Rx_Buffer [MAX_DATA_LENGTH];
267 __IO uint32_t ConnSts;
268 __IO uint32_t ErrCnt[USB_OTG_MAX_TX_FIFOS];
269 __IO uint32_t XferCnt[USB_OTG_MAX_TX_FIFOS];
270 __IO HC_STATUS HC_Status[USB_OTG_MAX_TX_FIFOS];
271 __IO URB_STATE URB_State[USB_OTG_MAX_TX_FIFOS];
273 uint16_t channel [USB_OTG_MAX_TX_FIFOS];
282 uint8_t OTG_PrevState;
291 #ifdef USE_DEVICE_MODE
330 USB_OTG_CORE_ID_TypeDef coreID);
369 #ifdef USE_DEVICE_MODE
uint8_t USB_OTG_IsHostMode(USB_OTG_CORE_HANDLE *pdev)
USB_OTG_IsHostMode : Check if it is host mode.
Definition: usb_core.c:610
uint8_t USB_OTG_IsDeviceMode(USB_OTG_CORE_HANDLE *pdev)
USB_OTG_IsDeviceMode : Check if it is device mode.
Definition: usb_core.c:599
Definition: usb_core.h:174
USB_OTG_STS USB_OTG_DisableGlobalInt(USB_OTG_CORE_HANDLE *pdev)
USB_OTG_DisableGlobalInt Enables the controller's Global Int in the AHB Config reg.
Definition: usb_core.c:481
Definition: usb_core.h:194
#define __IO
Definition: core_cm4.h:222
Definition: usb_core.h:232
USB_OTG_STS USB_OTG_SelectCore(USB_OTG_CORE_HANDLE *pdev, USB_OTG_CORE_ID_TypeDef coreID)
USB_OTG_SelectCore Initialize core registers address.
Definition: usb_core.c:216
Definition: usb_core.h:287
Definition: usb_core.h:279
Definition: usb_core.h:183
USB_OTG_STS USB_OTG_CoreInit(USB_OTG_CORE_HANDLE *pdev)
USB_OTG_CoreInit Initializes the USB_OTG controller registers and prepares the core device mode or ho...
Definition: usb_core.c:322
uint32_t USB_OTG_ReadOtgItr(USB_OTG_CORE_HANDLE *pdev)
USB_OTG_ReadOtgItr : returns the USB_OTG Interrupt register.
Definition: usb_core.c:635
uint32_t USB_OTG_ReadCoreItr(USB_OTG_CORE_HANDLE *pdev)
USB_OTG_ReadCoreItr : returns the Core Interrupt register.
Definition: usb_core.c:621
Definition: usb_core.h:246
void * USB_OTG_ReadPacket(USB_OTG_CORE_HANDLE *pdev, uint8_t *dest, uint16_t len)
USB_OTG_ReadPacket : Reads a packet from the Rx FIFO.
Definition: usb_core.c:192
USB_OTG_STS USB_OTG_WritePacket(USB_OTG_CORE_HANDLE *pdev, uint8_t *src, uint8_t ch_ep_num, uint16_t len)
USB_OTG_WritePacket : Writes a packet into the Tx FIFO associated with the EP.
Definition: usb_core.c:163
USB_OTG_STS USB_OTG_EnableGlobalInt(USB_OTG_CORE_HANDLE *pdev)
USB_OTG_EnableGlobalInt Enables the controller's Global Int in the AHB Config reg.
Definition: usb_core.c:463
Definition: usb_core.h:156
USB_OTG_STS USB_OTG_FlushTxFifo(USB_OTG_CORE_HANDLE *pdev, uint32_t num)
USB_OTG_FlushTxFifo : Flush a Tx FIFO.
Definition: usb_core.c:498
Definition: usb_regs.h:217
Definition: usb_core.h:130
Header of the Core Layer.
Definition: usb_core.h:111
USB_OTG_STS USB_OTG_SetCurrentMode(USB_OTG_CORE_HANDLE *pdev, uint8_t mode)
USB_OTG_SetCurrentMode : Set ID line.
Definition: usb_core.c:558
USB_OTG_STS USB_OTG_FlushRxFifo(USB_OTG_CORE_HANDLE *pdev)
USB_OTG_FlushRxFifo : Flush a Rx FIFO.
Definition: usb_core.c:528
Definition: usb_core.h:264
uint32_t USB_OTG_GetMode(USB_OTG_CORE_HANDLE *pdev)
USB_OTG_GetMode : Get current mode.
Definition: usb_core.c:588
Definition: usb_core.h:204