| Data Structures | |
| struct | XMC_USBH0_DEVICE_t | 
| struct | XMC_USBH0_pipe_t | 
| struct | XMC_USBH_CAPABILITIES_t | 
| struct | XMC_USBH_DRIVER_t | 
| struct | XMC_USBH_DRIVER_VERSION_t | 
| struct | XMC_USBH_PORT_STATE_t | 
| Macros | |
| #define | USB_CH_HCCHARx_DEVADDR(x) (((uint32_t) x << USB_CH_HCCHAR_DevAddr_Pos) & (uint32_t)USB_CH_HCCHAR_DevAddr_Msk) | 
| #define | USB_CH_HCCHARx_EPDIR(x) (((uint32_t) x << USB_CH_HCCHAR_EPDir_Pos) & (uint32_t)USB_CH_HCCHAR_EPDir_Msk) | 
| #define | USB_CH_HCCHARx_EPNUM(x) (((uint32_t) x << USB_CH_HCCHAR_EPNum_Pos) & (uint32_t)USB_CH_HCCHAR_EPNum_Msk) | 
| #define | USB_CH_HCCHARx_EPTYPE(x) (((uint32_t) x << USB_CH_HCCHAR_EPType_Pos) & (uint32_t)USB_CH_HCCHAR_EPType_Msk) | 
| #define | USB_CH_HCCHARx_MCEC(x) (((uint32_t) x << USB_CH_HCCHAR_MC_EC_Pos) & (uint32_t)USB_CH_HCCHAR_MC_EC_Msk) | 
| #define | USB_CH_HCCHARx_MPS(x) (((uint32_t) x ) & (uint32_t)USB_CH_HCCHAR_MPS_Msk) | 
| #define | USB_CH_HCFG_FSLSPCS(x) (((uint32_t) x ) & USB_HCFG_FSLSPclkSel_Msk) | 
| #define | USB_CH_HCFG_FSLSSUP(x) (((uint32_t) x << USB_HCFG_FSLSSupp_Pos) & USB_HCFG_FSLSSupp_Msk) | 
| #define | USB_CH_HCINTx_ALL | 
| #define | USB_CH_HCINTx_ERRORS | 
| #define | USB_CH_HCTSIZx_DPID(x) (((uint32_t) x << USB_CH_HCTSIZ_BUFFERMODE_Pid_Pos) & (uint32_t)USB_CH_HCTSIZ_BUFFERMODE_Pid_Msk) | 
| #define | USB_CH_HCTSIZx_DPID_DATA0 (USB_CH_HCTSIZx_DPID(0U)) | 
| #define | USB_CH_HCTSIZx_DPID_DATA1 (USB_CH_HCTSIZx_DPID(2U)) | 
| #define | USB_CH_HCTSIZx_DPID_DATA2 (USB_CH_HCTSIZx_DPID(1U)) | 
| #define | USB_CH_HCTSIZx_DPID_MDATA (USB_CH_HCTSIZx_DPID(3U)) | 
| #define | USB_CH_HCTSIZx_DPID_SETUP (USB_CH_HCTSIZx_DPID(3U)) | 
| #define | USB_GRXSTSR_HOSTMODE_PktSts_IN_DATA_PKT 0x2 | 
| #define | USB_GRXSTSR_HOSTMODE_PktSts_IN_TRSF_CPL 0x3 | 
| #define | USBH0_MAX_PIPE_NUM (14U) | 
| #define | USBH_PIPE_GET_INDEX(handle) (((uint32_t)handle - (uint32_t)USB0_CH0_BASE)/(0x20U)) | 
| #define | XMC_USB_DRIVE_PORT1 P3_2 | 
| #define | XMC_USB_DRIVE_PORT2 P0_1 | 
| #define | XMC_USBH_API_VERSION ((uint16_t)((uint16_t)XMC_LIB_MAJOR_VERSION << 8U) |XMC_LIB_MINOR_VERSION) | 
| #define | XMC_USBH_CLOCK_GATING_DISABLE 0 | 
| #define | XMC_USBH_CLOCK_GATING_ENABLE 1 | 
| #define | XMC_USBH_DRIVER_ERROR -1 | 
| #define | XMC_USBH_DRIVER_ERROR_BUSY -2 | 
| #define | XMC_USBH_DRIVER_ERROR_PARAMETER -5 | 
| #define | XMC_USBH_DRIVER_ERROR_SPECIFIC -6 | 
| #define | XMC_USBH_DRIVER_ERROR_TIMEOUT -3 | 
| #define | XMC_USBH_DRIVER_ERROR_UNSUPPORTED -4 | 
| #define | XMC_USBH_DRIVER_OK 0 | 
| #define | XMC_USBH_ENDPOINT_BULK 2 | 
| #define | XMC_USBH_ENDPOINT_CONTROL 0 | 
| #define | XMC_USBH_ENDPOINT_INTERRUPT 3 | 
| #define | XMC_USBH_ENDPOINT_ISOCHRONOUS 1 | 
| #define | XMC_USBH_EP_HANDLE XMC_USBH_PIPE_HANDLE | 
| #define | XMC_USBH_EVENT_BUS_ERROR (1UL << 6) | 
| #define | XMC_USBH_EVENT_CONNECT (1UL << 0) | 
| #define | XMC_USBH_EVENT_DISCONNECT (1UL << 1) | 
| #define | XMC_USBH_EVENT_HANDSHAKE_ERR (1UL << 5) | 
| #define | XMC_USBH_EVENT_HANDSHAKE_MDATA (1UL << 3) | 
| #define | XMC_USBH_EVENT_HANDSHAKE_NAK (1UL << 1) | 
| #define | XMC_USBH_EVENT_HANDSHAKE_NYET (1UL << 2) | 
| #define | XMC_USBH_EVENT_HANDSHAKE_STALL (1UL << 4) | 
| #define | XMC_USBH_EVENT_OVERCURRENT (1UL << 2) | 
| #define | XMC_USBH_EVENT_REMOTE_WAKEUP (1UL << 6) | 
| #define | XMC_USBH_EVENT_RESET (1UL << 3) | 
| #define | XMC_USBH_EVENT_RESUME (1UL << 5) | 
| #define | XMC_USBH_EVENT_SUSPEND (1UL << 4) | 
| #define | XMC_USBH_EVENT_TRANSFER_COMPLETE (1UL << 0) | 
| #define | XMC_USBH_PACKET_CSPLIT (0x0CUL << XMC_USBH_PACKET_SPLIT_Pos) | 
| #define | XMC_USBH_PACKET_DATA0 (0x01UL << XMC_USBH_PACKET_DATA_Pos) | 
| #define | XMC_USBH_PACKET_DATA1 (0x02UL << XMC_USBH_PACKET_DATA_Pos) | 
| #define | XMC_USBH_PACKET_DATA_Msk (0x0FUL << XMC_USBH_PACKET_DATA_Pos) | 
| #define | XMC_USBH_PACKET_DATA_Pos 4 | 
| #define | XMC_USBH_PACKET_IN (0x03UL << XMC_USBH_PACKET_TOKEN_Pos) | 
| #define | XMC_USBH_PACKET_OUT (0x02UL << XMC_USBH_PACKET_TOKEN_Pos) | 
| #define | XMC_USBH_PACKET_PING (0x04UL << XMC_USBH_PACKET_TOKEN_Pos) | 
| #define | XMC_USBH_PACKET_PRE (1UL << 12) | 
| #define | XMC_USBH_PACKET_SETUP (0x01UL << XMC_USBH_PACKET_TOKEN_Pos) | 
| #define | XMC_USBH_PACKET_SSPLIT (0x08UL << XMC_USBH_PACKET_SPLIT_Pos) | 
| #define | XMC_USBH_PACKET_SSPLIT_E (0x0AUL << XMC_USBH_PACKET_SPLIT_Pos) | 
| #define | XMC_USBH_PACKET_SSPLIT_S (0x09UL << XMC_USBH_PACKET_SPLIT_Pos) | 
| #define | XMC_USBH_PACKET_SSPLIT_S_E (0x0BUL << XMC_USBH_PACKET_SPLIT_Pos) | 
| #define | XMC_USBH_PACKET_TOKEN_Msk (0x0FUL << XMC_USBH_PACKET_TOKEN_Pos) | 
| #define | XMC_USBH_PACKET_TOKEN_Pos 0 | 
| #define | XMC_USBH_SignalEndpointEvent_t XMC_USBH_SignalPipeEvent_t | 
| #define | XMC_USBH_SPEED_FULL 1U | 
| #define | XMC_USBH_SPEED_HIGH 2U | 
| #define | XMC_USBH_SPEED_LOW 0U | 
| Typedefs | |
| typedef void(* | XMC_USBH_SignalPipeEvent_t) (XMC_USBH_PIPE_HANDLE pipe_hndl, uint32_t event) | 
| typedef void(* | XMC_USBH_SignalPortEvent_t) (uint8_t port, uint32_t event) | 
| Functions | |
| uint32_t | XMC_USBH_GetInterruptStatus (void) | 
| void | XMC_USBH_HandleIrq (uint32_t gintsts) | 
| uint8_t | XMC_USBH_osDelay (uint32_t ms) | 
| void | XMC_USBH_Select_VBUS (XMC_GPIO_PORT_t *port, uint32_t pin) | 
| void | XMC_USBH_TurnOffResumeBit (void) | 
The USBH is the host mode device driver for the USB0 hardware module on XMC4000 family of microcontrollers. The USB0 module can be used to establish a USB interface between outside world and XMC4000 family of controllers. The USB module includes the following features in host mode:
The below figure shows the overview of USB0 module in XMC4 microntroller.
 
The USBH device driver supports the following features:
The USBH device driver expects registration of callback functions XMC_USBH_SignalPortEvent_t and XMC_USBH_SignalPipeEvent_t to be executed when there is port event interrupt and pipe event interrupt respectively.
The USBH driver is CMSIS API compatible. Please use Driver_USBH0 to access the USBH API.
For example, to initialize the USB host controller, use Driver_USBH0.Initialize().
| #define USB_CH_HCCHARx_DEVADDR | ( | x | ) | (((uint32_t) x << USB_CH_HCCHAR_DevAddr_Pos) & (uint32_t)USB_CH_HCCHAR_DevAddr_Msk) | 
Shifts the value to the position of endpoint type(EPType) in the HCCHAR register
| #define USB_CH_HCCHARx_EPDIR | ( | x | ) | (((uint32_t) x << USB_CH_HCCHAR_EPDir_Pos) & (uint32_t)USB_CH_HCCHAR_EPDir_Msk) | 
Shifts the value to the position of endpoint direction(EPDir) in the HCCHAR register
| #define USB_CH_HCCHARx_EPNUM | ( | x | ) | (((uint32_t) x << USB_CH_HCCHAR_EPNum_Pos) & (uint32_t)USB_CH_HCCHAR_EPNum_Msk) | 
Shifts the value to the position of endpoint number(EPNum) in the HCCHAR register
| #define USB_CH_HCCHARx_EPTYPE | ( | x | ) | (((uint32_t) x << USB_CH_HCCHAR_EPType_Pos) & (uint32_t)USB_CH_HCCHAR_EPType_Msk) | 
Shifts the value to the position of endpoint type(EPType) in the HCCHAR register
| #define USB_CH_HCCHARx_MCEC | ( | x | ) | (((uint32_t) x << USB_CH_HCCHAR_MC_EC_Pos) & (uint32_t)USB_CH_HCCHAR_MC_EC_Msk) | 
Shifts the value to the position of multi-count(MC_EC) field in the HCCHAR register
| #define USB_CH_HCCHARx_MPS | ( | x | ) | (((uint32_t) x ) & (uint32_t)USB_CH_HCCHAR_MPS_Msk) | 
Masks maximum packet size information from the HCCHAR register value provided as input
| #define USB_CH_HCFG_FSLSPCS | ( | x | ) | (((uint32_t) x ) & USB_HCFG_FSLSPclkSel_Msk) | 
Provides register value to update PHY clock selection in register HCFG
| #define USB_CH_HCFG_FSLSSUP | ( | x | ) | (((uint32_t) x << USB_HCFG_FSLSSupp_Pos) & USB_HCFG_FSLSSupp_Msk) | 
Provides register value to update USB full speed related mask FLSSupp of register HCFG
| #define USB_CH_HCINTx_ALL | 
Mask for selecting all channel related events
| #define USB_CH_HCINTx_ERRORS | 
Mask for selecting all channel error related events
| #define USB_CH_HCTSIZx_DPID | ( | x | ) | (((uint32_t) x << USB_CH_HCTSIZ_BUFFERMODE_Pid_Pos) & (uint32_t)USB_CH_HCTSIZ_BUFFERMODE_Pid_Msk) | 
Shifts the value to the position of packet ID (PID) in the HCTSIZ register
| #define USB_CH_HCTSIZx_DPID_DATA0 (USB_CH_HCTSIZx_DPID(0U)) | 
Represents DATA toggle DATA0 as in HCTSIZ register
| #define USB_CH_HCTSIZx_DPID_DATA1 (USB_CH_HCTSIZx_DPID(2U)) | 
Represents DATA toggle DATA1 as in HCTSIZ register
| #define USB_CH_HCTSIZx_DPID_DATA2 (USB_CH_HCTSIZx_DPID(1U)) | 
Represents DATA toggle DATA2 as in HCTSIZ register
| #define USB_CH_HCTSIZx_DPID_MDATA (USB_CH_HCTSIZx_DPID(3U)) | 
Represents DATA toggle MDATA as in HCTSIZ register
| #define USB_CH_HCTSIZx_DPID_SETUP (USB_CH_HCTSIZx_DPID(3U)) | 
Represents SETUP token as in HCTSIZ register
| #define USB_GRXSTSR_HOSTMODE_PktSts_IN_DATA_PKT 0x2 | 
Represents IN data token as in receive status pop register(GRXSTSP)
| #define USB_GRXSTSR_HOSTMODE_PktSts_IN_TRSF_CPL 0x3 | 
Represents paket status information as in receive status pop register(GRXSTSP)
| #define USBH0_MAX_PIPE_NUM (14U) | 
Representation of number of pipes available
| #define USBH_PIPE_GET_INDEX | ( | handle | ) | (((uint32_t)handle - (uint32_t)USB0_CH0_BASE)/(0x20U)) | 
Macro provides index of the USB channel based on its base address
| #define XMC_USB_DRIVE_PORT1 P3_2 | 
Default port(PORT3, pin 2) used to enable VBUS voltage regulator on the board
| #define XMC_USB_DRIVE_PORT2 P0_1 | 
Alternate port that can be used to enable VBUS voltage regulator(PORT0, pin 1)
| #define XMC_USBH_API_VERSION ((uint16_t)((uint16_t)XMC_LIB_MAJOR_VERSION << 8U) |XMC_LIB_MINOR_VERSION) | 
USBH low level driver API version
| #define XMC_USBH_CLOCK_GATING_DISABLE 0 | 
Used to disable clock gating when the driver is fully powered
| #define XMC_USBH_CLOCK_GATING_ENABLE 1 | 
Used to enable clock gating when the driver is powered down
| #define XMC_USBH_DRIVER_ERROR -1 | 
Unspecified error
| #define XMC_USBH_DRIVER_ERROR_BUSY -2 | 
Driver is busy
| #define XMC_USBH_DRIVER_ERROR_PARAMETER -5 | 
Parameter error
| #define XMC_USBH_DRIVER_ERROR_SPECIFIC -6 | 
Start of driver specific errors
| #define XMC_USBH_DRIVER_ERROR_TIMEOUT -3 | 
Timeout occurred
| #define XMC_USBH_DRIVER_ERROR_UNSUPPORTED -4 | 
Operation not supported
| #define XMC_USBH_DRIVER_OK 0 | 
Operation succeeded
| #define XMC_USBH_ENDPOINT_BULK 2 | 
Bulk Endpoint
| #define XMC_USBH_ENDPOINT_CONTROL 0 | 
Control Endpoint
| #define XMC_USBH_ENDPOINT_INTERRUPT 3 | 
Interrupt Endpoint
| #define XMC_USBH_ENDPOINT_ISOCHRONOUS 1 | 
Isochronous Endpoint
| #define XMC_USBH_EP_HANDLE XMC_USBH_PIPE_HANDLE | 
Legacy name for pipe handle used by CMSIS
| #define XMC_USBH_EVENT_BUS_ERROR (1UL << 6) | 
Bus Error detected
| #define XMC_USBH_EVENT_CONNECT (1UL << 0) | 
USB Device Connected to Port
| #define XMC_USBH_EVENT_DISCONNECT (1UL << 1) | 
USB Device Disconnected from Port
| #define XMC_USBH_EVENT_HANDSHAKE_ERR (1UL << 5) | 
ERR Handshake received
| #define XMC_USBH_EVENT_HANDSHAKE_MDATA (1UL << 3) | 
MDATA Handshake received
| #define XMC_USBH_EVENT_HANDSHAKE_NAK (1UL << 1) | 
NAK Handshake received
| #define XMC_USBH_EVENT_HANDSHAKE_NYET (1UL << 2) | 
NYET Handshake received
| #define XMC_USBH_EVENT_HANDSHAKE_STALL (1UL << 4) | 
STALL Handshake received
| #define XMC_USBH_EVENT_OVERCURRENT (1UL << 2) | 
USB Device caused Overcurrent
| #define XMC_USBH_EVENT_REMOTE_WAKEUP (1UL << 6) | 
USB Device activated Remote Wakeup
| #define XMC_USBH_EVENT_RESET (1UL << 3) | 
USB Reset completed
| #define XMC_USBH_EVENT_RESUME (1UL << 5) | 
USB Resume occurred
| #define XMC_USBH_EVENT_SUSPEND (1UL << 4) | 
USB Suspend occurred
| #define XMC_USBH_EVENT_TRANSFER_COMPLETE (1UL << 0) | 
Transfer completed
| #define XMC_USBH_PACKET_CSPLIT (0x0CUL << XMC_USBH_PACKET_SPLIT_Pos) | 
CSPLIT Packet
| #define XMC_USBH_PACKET_DATA0 (0x01UL << XMC_USBH_PACKET_DATA_Pos) | 
DATA0 PID
| #define XMC_USBH_PACKET_DATA1 (0x02UL << XMC_USBH_PACKET_DATA_Pos) | 
DATA1 PID
| #define XMC_USBH_PACKET_DATA_Msk (0x0FUL << XMC_USBH_PACKET_DATA_Pos) | 
Packet data PID mask
| #define XMC_USBH_PACKET_DATA_Pos 4 | 
Packet data PID position
| #define XMC_USBH_PACKET_IN (0x03UL << XMC_USBH_PACKET_TOKEN_Pos) | 
IN Packet
| #define XMC_USBH_PACKET_OUT (0x02UL << XMC_USBH_PACKET_TOKEN_Pos) | 
OUT Packet
| #define XMC_USBH_PACKET_PING (0x04UL << XMC_USBH_PACKET_TOKEN_Pos) | 
PING Packet
| #define XMC_USBH_PACKET_PRE (1UL << 12) | 
PRE Token
| #define XMC_USBH_PACKET_SETUP (0x01UL << XMC_USBH_PACKET_TOKEN_Pos) | 
SETUP Packet
| #define XMC_USBH_PACKET_SSPLIT (0x08UL << XMC_USBH_PACKET_SPLIT_Pos) | 
SSPLIT Packet
| #define XMC_USBH_PACKET_SSPLIT_E (0x0AUL << XMC_USBH_PACKET_SPLIT_Pos) | 
SSPLIT Packet: Data End
| #define XMC_USBH_PACKET_SSPLIT_S (0x09UL << XMC_USBH_PACKET_SPLIT_Pos) | 
SSPLIT Packet: Data Start
| #define XMC_USBH_PACKET_SSPLIT_S_E (0x0BUL << XMC_USBH_PACKET_SPLIT_Pos) | 
SSPLIT Packet: Data All
| #define XMC_USBH_PACKET_TOKEN_Msk (0x0FUL << XMC_USBH_PACKET_TOKEN_Pos) | 
Packet token mask
| #define XMC_USBH_PACKET_TOKEN_Pos 0 | 
Packet token position
| #define XMC_USBH_SignalEndpointEvent_t XMC_USBH_SignalPipeEvent_t | 
Legacy name for the pipe event handler
| #define XMC_USBH_SPEED_FULL 1U | 
Full-speed USB
| #define XMC_USBH_SPEED_HIGH 2U | 
High-speed USB
| #define XMC_USBH_SPEED_LOW 0U | 
Low-speed USB
| typedef void(* XMC_USBH_SignalPipeEvent_t) (XMC_USBH_PIPE_HANDLE pipe_hndl, uint32_t event) | 
Pointer to ARM_USBH_SignalPipeEvent : Signal Pipe Event.
| typedef void(* XMC_USBH_SignalPortEvent_t) (uint8_t port, uint32_t event) | 
Pointer to ARM_USBH_SignalPortEvent : Signal Root HUB Port Event.
| uint32_t XMC_USBH_GetInterruptStatus | ( | void | ) | 
| void XMC_USBH_HandleIrq | ( | uint32_t | gintsts | ) | 
| gintsts | USB global interrupt status. | 
| uint8_t XMC_USBH_osDelay | ( | uint32_t | ms | ) | 
| ms | Delay in milliseconds. | 
| void XMC_USBH_Select_VBUS | ( | XMC_GPIO_PORT_t * | port, | 
| uint32_t | pin | ||
| ) | 
| port | Address of the port which has the pin used to enable VBUS charge pump. | 
| pin | Pin number in the port selected in previous argument using which the VBUS charge pump has to be enabled. | 
| void XMC_USBH_TurnOffResumeBit | ( | void | ) |