20#ifndef STM32F4xx_LL_USB_H
21#define STM32F4xx_LL_USB_H
30#if defined (USB_OTG_FS) || defined (USB_OTG_HS)
40#ifndef HAL_USB_TIMEOUT
41#define HAL_USB_TIMEOUT 0xF000000U
44#ifndef HAL_USB_CURRENT_MODE_MAX_DELAY_MS
45#define HAL_USB_CURRENT_MODE_MAX_DELAY_MS 200U
95 uint8_t dev_endpoints;
99 uint8_t Host_channels;
117 uint8_t low_power_enable;
121 uint8_t battery_charging_enable;
123 uint8_t vbus_sensing_enable;
125 uint8_t use_dedicated_ep1;
127 uint8_t use_external_vbus;
142 uint8_t is_iso_incomplete;
148 uint8_t data_pid_start;
160 uint8_t even_odd_frame;
163 uint16_t tx_fifo_num;
192 uint8_t ep_ss_schedule;
193 uint32_t iso_splt_xactPos;
195 uint8_t hub_port_nbr;
226 USB_URBStateTypeDef urb_state;
229 USB_HCStateTypeDef state;
233typedef USB_ModeTypeDef USB_OTG_ModeTypeDef;
234typedef USB_CfgTypeDef USB_OTG_CfgTypeDef;
235typedef USB_EPTypeDef USB_OTG_EPTypeDef;
236typedef USB_URBStateTypeDef USB_OTG_URBStateTypeDef;
237typedef USB_HCStateTypeDef USB_OTG_HCStateTypeDef;
238typedef USB_HCTypeDef USB_OTG_HCTypeDef;
246#if defined (USB_OTG_FS) || defined (USB_OTG_HS)
250#define USB_OTG_CORE_ID_300A 0x4F54300AU
251#define USB_OTG_CORE_ID_310A 0x4F54310AU
259#define USB_OTG_MODE_DEVICE 0U
260#define USB_OTG_MODE_HOST 1U
261#define USB_OTG_MODE_DRD 2U
269#define USB_OTG_SPEED_HIGH 0U
270#define USB_OTG_SPEED_HIGH_IN_FULL 1U
271#define USB_OTG_SPEED_FULL 3U
279#define USB_OTG_ULPI_PHY 1U
280#define USB_OTG_EMBEDDED_PHY 2U
288#ifndef USBD_HS_TRDT_VALUE
289#define USBD_HS_TRDT_VALUE 9U
291#ifndef USBD_FS_TRDT_VALUE
292#define USBD_FS_TRDT_VALUE 5U
293#define USBD_DEFAULT_TRDT_VALUE 9U
302#define USB_OTG_HS_MAX_PACKET_SIZE 512U
303#define USB_OTG_FS_MAX_PACKET_SIZE 64U
304#define USB_OTG_MAX_EP0_SIZE 64U
312#define DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ (0U << 1)
313#define DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ (1U << 1)
314#define DSTS_ENUMSPD_FS_PHY_48MHZ (3U << 1)
322#define DCFG_FRAME_INTERVAL_80 0U
323#define DCFG_FRAME_INTERVAL_85 1U
324#define DCFG_FRAME_INTERVAL_90 2U
325#define DCFG_FRAME_INTERVAL_95 3U
344#define EP_TYPE_CTRL 0U
345#define EP_TYPE_ISOC 1U
346#define EP_TYPE_BULK 2U
347#define EP_TYPE_INTR 3U
348#define EP_TYPE_MSK 3U
356#define EP_SPEED_LOW 0U
357#define EP_SPEED_FULL 1U
358#define EP_SPEED_HIGH 2U
366#define HC_PID_DATA0 0U
367#define HC_PID_DATA2 1U
368#define HC_PID_DATA1 2U
369#define HC_PID_SETUP 3U
377#define USBD_HS_SPEED 0U
378#define USBD_HSINFS_SPEED 1U
379#define USBH_HS_SPEED 0U
380#define USBD_FS_SPEED 2U
381#define USBH_FSLS_SPEED 1U
386#if defined (USB_OTG_FS) || defined (USB_OTG_HS)
390#define STS_GOUT_NAK 1U
391#define STS_DATA_UPDT 2U
392#define STS_XFER_COMP 3U
393#define STS_SETUP_COMP 4U
394#define STS_SETUP_UPDT 6U
402#define HCFG_30_60_MHZ 0U
403#define HCFG_48_MHZ 1U
412#define HFIR_6_MHZ 6000U
413#define HFIR_60_MHZ 60000U
414#define HFIR_48_MHZ 48000U
422#define HPRT0_PRTSPD_HIGH_SPEED 0UL
423#define HPRT0_PRTSPD_FULL_SPEED 1UL
424#define HPRT0_PRTSPD_LOW_SPEED 2UL
429#define HCCHAR_CTRL 0U
430#define HCCHAR_ISOC 1U
431#define HCCHAR_BULK 2U
432#define HCCHAR_INTR 3U
434#define GRXSTS_PKTSTS_IN 2U
435#define GRXSTS_PKTSTS_IN_XFER_COMP 3U
436#define GRXSTS_PKTSTS_DATA_TOGGLE_ERR 5U
437#define GRXSTS_PKTSTS_CH_HALTED 7U
439#define CLEAR_INTERRUPT_MASK 0xFFFFFFFFU
441#define HC_MAX_PKT_CNT 256U
442#define ISO_SPLT_MPS 188U
444#define HCSPLT_BEGIN 1U
445#define HCSPLT_MIDDLE 2U
447#define HCSPLT_FULL 4U
451#define TEST_SE0_NAK 3U
452#define TEST_PACKET 4U
453#define TEST_FORCE_EN 5U
455#define USBx_PCGCCTL *(__IO uint32_t *)((uint32_t)USBx_BASE + USB_OTG_PCGCCTL_BASE)
456#define USBx_HPRT0 *(__IO uint32_t *)((uint32_t)USBx_BASE + USB_OTG_HOST_PORT_BASE)
458#define USBx_DEVICE ((USB_OTG_DeviceTypeDef *)(USBx_BASE + USB_OTG_DEVICE_BASE))
459#define USBx_INEP(i) ((USB_OTG_INEndpointTypeDef *)(USBx_BASE\
460 + USB_OTG_IN_ENDPOINT_BASE + ((i) * USB_OTG_EP_REG_SIZE)))
462#define USBx_OUTEP(i) ((USB_OTG_OUTEndpointTypeDef *)(USBx_BASE\
463 + USB_OTG_OUT_ENDPOINT_BASE + ((i) * USB_OTG_EP_REG_SIZE)))
465#define USBx_DFIFO(i) *(__IO uint32_t *)(USBx_BASE + USB_OTG_FIFO_BASE + ((i) * USB_OTG_FIFO_SIZE))
467#define USBx_HOST ((USB_OTG_HostTypeDef *)(USBx_BASE + USB_OTG_HOST_BASE))
468#define USBx_HC(i) ((USB_OTG_HostChannelTypeDef *)(USBx_BASE\
469 + USB_OTG_HOST_CHANNEL_BASE\
470 + ((i) * USB_OTG_HOST_CHANNEL_SIZE)))
473#define EP_ADDR_MSK 0xFU
483#if defined (USB_OTG_FS) || defined (USB_OTG_HS)
484#define USB_MASK_INTERRUPT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->GINTMSK &= ~(__INTERRUPT__))
485#define USB_UNMASK_INTERRUPT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->GINTMSK |= (__INTERRUPT__))
487#define CLEAR_IN_EP_INTR(__EPNUM__, __INTERRUPT__) (USBx_INEP(__EPNUM__)->DIEPINT = (__INTERRUPT__))
488#define CLEAR_OUT_EP_INTR(__EPNUM__, __INTERRUPT__) (USBx_OUTEP(__EPNUM__)->DOEPINT = (__INTERRUPT__))
498#if defined (USB_OTG_FS) || defined (USB_OTG_HS)
499HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg);
500HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg);
503HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx, uint32_t hclk, uint8_t speed);
504HAL_StatusTypeDef USB_SetCurrentMode(USB_OTG_GlobalTypeDef *USBx, USB_OTG_ModeTypeDef mode);
505HAL_StatusTypeDef USB_SetDevSpeed(
const USB_OTG_GlobalTypeDef *USBx, uint8_t speed);
508HAL_StatusTypeDef USB_ActivateEndpoint(
const USB_OTG_GlobalTypeDef *USBx,
const USB_OTG_EPTypeDef *ep);
509HAL_StatusTypeDef USB_DeactivateEndpoint(
const USB_OTG_GlobalTypeDef *USBx,
const USB_OTG_EPTypeDef *ep);
510HAL_StatusTypeDef USB_ActivateDedicatedEndpoint(
const USB_OTG_GlobalTypeDef *USBx,
const USB_OTG_EPTypeDef *ep);
511HAL_StatusTypeDef USB_DeactivateDedicatedEndpoint(
const USB_OTG_GlobalTypeDef *USBx,
const USB_OTG_EPTypeDef *ep);
512HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep, uint8_t dma);
513HAL_StatusTypeDef USB_WritePacket(
const USB_OTG_GlobalTypeDef *USBx, uint8_t *src,
514 uint8_t ch_ep_num, uint16_t len, uint8_t dma);
516void *USB_ReadPacket(
const USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len);
517HAL_StatusTypeDef USB_EPSetStall(
const USB_OTG_GlobalTypeDef *USBx,
const USB_OTG_EPTypeDef *ep);
518HAL_StatusTypeDef USB_EPClearStall(
const USB_OTG_GlobalTypeDef *USBx,
const USB_OTG_EPTypeDef *ep);
519HAL_StatusTypeDef USB_EPStopXfer(
const USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep);
520HAL_StatusTypeDef USB_SetDevAddress(
const USB_OTG_GlobalTypeDef *USBx, uint8_t address);
525HAL_StatusTypeDef USB_EP0_OutStart(
const USB_OTG_GlobalTypeDef *USBx, uint8_t dma,
const uint8_t *psetup);
526uint8_t USB_GetDevSpeed(
const USB_OTG_GlobalTypeDef *USBx);
527uint32_t USB_GetMode(
const USB_OTG_GlobalTypeDef *USBx);
528uint32_t USB_ReadInterrupts(USB_OTG_GlobalTypeDef
const *USBx);
529uint32_t USB_ReadChInterrupts(
const USB_OTG_GlobalTypeDef *USBx, uint8_t chnum);
530uint32_t USB_ReadDevAllOutEpInterrupt(
const USB_OTG_GlobalTypeDef *USBx);
531uint32_t USB_ReadDevOutEPInterrupt(
const USB_OTG_GlobalTypeDef *USBx, uint8_t epnum);
532uint32_t USB_ReadDevAllInEpInterrupt(
const USB_OTG_GlobalTypeDef *USBx);
533uint32_t USB_ReadDevInEPInterrupt(
const USB_OTG_GlobalTypeDef *USBx, uint8_t epnum);
534void USB_ClearInterrupts(USB_OTG_GlobalTypeDef *USBx, uint32_t interrupt);
536HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg);
537HAL_StatusTypeDef USB_InitFSLSPClkSel(
const USB_OTG_GlobalTypeDef *USBx, uint8_t freq);
539HAL_StatusTypeDef USB_DriveVbus(
const USB_OTG_GlobalTypeDef *USBx, uint8_t state);
540uint32_t USB_GetHostSpeed(USB_OTG_GlobalTypeDef
const *USBx);
541uint32_t USB_GetCurrentFrame(USB_OTG_GlobalTypeDef
const *USBx);
543 uint8_t epnum, uint8_t dev_address, uint8_t speed,
544 uint8_t ep_type, uint16_t mps);
546 USB_OTG_HCTypeDef *hc, uint8_t dma);
548uint32_t USB_HC_ReadInterrupt(
const USB_OTG_GlobalTypeDef *USBx);
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef
HAL Status structures definition.