21 #ifndef STM32L4xx_LL_USB_H 22 #define STM32L4xx_LL_USB_H 31 #if defined (USB) || defined (USB_OTG_FS) 45 #if defined (USB_OTG_FS) 294 #if defined (USB_OTG_FS) 298 #define USB_OTG_CORE_ID_300A 0x4F54300AU 299 #define USB_OTG_CORE_ID_310A 0x4F54310AU 307 #define USB_OTG_MODE_DEVICE 0U 308 #define USB_OTG_MODE_HOST 1U 309 #define USB_OTG_MODE_DRD 2U 317 #define USBD_FS_SPEED 2U 318 #define USBH_FS_SPEED 1U 326 #define USB_OTG_SPEED_FULL 3U 334 #define USB_OTG_ULPI_PHY 1U 335 #define USB_OTG_EMBEDDED_PHY 2U 343 #ifndef USBD_FS_TRDT_VALUE 344 #define USBD_FS_TRDT_VALUE 5U 345 #define USBD_DEFAULT_TRDT_VALUE 9U 354 #define USB_OTG_FS_MAX_PACKET_SIZE 64U 355 #define USB_OTG_MAX_EP0_SIZE 64U 363 #define DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ (0U << 1) 364 #define DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ (1U << 1) 365 #define DSTS_ENUMSPD_LS_PHY_6MHZ (2U << 1) 366 #define DSTS_ENUMSPD_FS_PHY_48MHZ (3U << 1) 374 #define DCFG_FRAME_INTERVAL_80 0U 375 #define DCFG_FRAME_INTERVAL_85 1U 376 #define DCFG_FRAME_INTERVAL_90 2U 377 #define DCFG_FRAME_INTERVAL_95 3U 385 #define DEP0CTL_MPS_64 0U 386 #define DEP0CTL_MPS_32 1U 387 #define DEP0CTL_MPS_16 2U 388 #define DEP0CTL_MPS_8 3U 396 #define EP_SPEED_LOW 0U 397 #define EP_SPEED_FULL 1U 398 #define EP_SPEED_HIGH 2U 406 #define EP_TYPE_CTRL 0U 407 #define EP_TYPE_ISOC 1U 408 #define EP_TYPE_BULK 2U 409 #define EP_TYPE_INTR 3U 410 #define EP_TYPE_MSK 3U 418 #define STS_GOUT_NAK 1U 419 #define STS_DATA_UPDT 2U 420 #define STS_XFER_COMP 3U 421 #define STS_SETUP_COMP 4U 422 #define STS_SETUP_UPDT 6U 430 #define HCFG_30_60_MHZ 0U 431 #define HCFG_48_MHZ 1U 432 #define HCFG_6_MHZ 2U 440 #define HPRT0_PRTSPD_HIGH_SPEED 0U 441 #define HPRT0_PRTSPD_FULL_SPEED 1U 442 #define HPRT0_PRTSPD_LOW_SPEED 2U 447 #define HCCHAR_CTRL 0U 448 #define HCCHAR_ISOC 1U 449 #define HCCHAR_BULK 2U 450 #define HCCHAR_INTR 3U 452 #define HC_PID_DATA0 0U 453 #define HC_PID_DATA2 1U 454 #define HC_PID_DATA1 2U 455 #define HC_PID_SETUP 3U 457 #define GRXSTS_PKTSTS_IN 2U 458 #define GRXSTS_PKTSTS_IN_XFER_COMP 3U 459 #define GRXSTS_PKTSTS_DATA_TOGGLE_ERR 5U 460 #define GRXSTS_PKTSTS_CH_HALTED 7U 462 #define USBx_PCGCCTL *(__IO uint32_t *)((uint32_t)USBx_BASE + USB_OTG_PCGCCTL_BASE) 463 #define USBx_HPRT0 *(__IO uint32_t *)((uint32_t)USBx_BASE + USB_OTG_HOST_PORT_BASE) 465 #define USBx_DEVICE ((USB_OTG_DeviceTypeDef *)(USBx_BASE + USB_OTG_DEVICE_BASE)) 466 #define USBx_INEP(i) ((USB_OTG_INEndpointTypeDef *)(USBx_BASE + USB_OTG_IN_ENDPOINT_BASE + ((i) * USB_OTG_EP_REG_SIZE))) 467 #define USBx_OUTEP(i) ((USB_OTG_OUTEndpointTypeDef *)(USBx_BASE + USB_OTG_OUT_ENDPOINT_BASE + ((i) * USB_OTG_EP_REG_SIZE))) 468 #define USBx_DFIFO(i) *(__IO uint32_t *)(USBx_BASE + USB_OTG_FIFO_BASE + ((i) * USB_OTG_FIFO_SIZE)) 470 #define USBx_HOST ((USB_OTG_HostTypeDef *)(USBx_BASE + USB_OTG_HOST_BASE)) 471 #define USBx_HC(i) ((USB_OTG_HostChannelTypeDef *)(USBx_BASE + USB_OTG_HOST_CHANNEL_BASE + ((i) * USB_OTG_HOST_CHANNEL_SIZE))) 478 #define DEP0CTL_MPS_64 0U 479 #define DEP0CTL_MPS_32 1U 480 #define DEP0CTL_MPS_16 2U 481 #define DEP0CTL_MPS_8 3U 489 #define EP_TYPE_CTRL 0U 490 #define EP_TYPE_ISOC 1U 491 #define EP_TYPE_BULK 2U 492 #define EP_TYPE_INTR 3U 493 #define EP_TYPE_MSK 3U 501 #define USBD_FS_SPEED 2U 506 #define BTABLE_ADDRESS 0x000U 507 #define PMA_ACCESS 1U 509 #if defined (USB_OTG_FS) 510 #define EP_ADDR_MSK 0xFU 513 #define EP_ADDR_MSK 0x7U 523 #if defined (USB_OTG_FS) 524 #define USB_MASK_INTERRUPT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->GINTMSK &= ~(__INTERRUPT__)) 525 #define USB_UNMASK_INTERRUPT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->GINTMSK |= (__INTERRUPT__)) 527 #define CLEAR_IN_EP_INTR(__EPNUM__, __INTERRUPT__) (USBx_INEP(__EPNUM__)->DIEPINT = (__INTERRUPT__)) 528 #define CLEAR_OUT_EP_INTR(__EPNUM__, __INTERRUPT__) (USBx_OUTEP(__EPNUM__)->DOEPINT = (__INTERRUPT__)) 538 #if defined (USB_OTG_FS) 545 HAL_StatusTypeDef
USB_SetDevSpeed(USB_OTG_GlobalTypeDef *USBx, uint8_t speed);
547 HAL_StatusTypeDef
USB_FlushTxFifo(USB_OTG_GlobalTypeDef *USBx, uint32_t num);
554 HAL_StatusTypeDef
USB_WritePacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *src, uint8_t ch_ep_num, uint16_t len);
555 void *
USB_ReadPacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len);
558 HAL_StatusTypeDef
USB_SetDevAddress(USB_OTG_GlobalTypeDef *USBx, uint8_t address);
563 HAL_StatusTypeDef
USB_EP0_OutStart(USB_OTG_GlobalTypeDef *USBx, uint8_t *psetup);
575 HAL_StatusTypeDef
USB_ResetPort(USB_OTG_GlobalTypeDef *USBx);
576 HAL_StatusTypeDef
USB_DriveVbus(USB_OTG_GlobalTypeDef *USBx, uint8_t state);
579 HAL_StatusTypeDef
USB_HC_Init(USB_OTG_GlobalTypeDef *USBx,
588 HAL_StatusTypeDef
USB_HC_Halt(USB_OTG_GlobalTypeDef *USBx, uint8_t hc_num);
589 HAL_StatusTypeDef
USB_DoPing(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num);
590 HAL_StatusTypeDef
USB_StopHost(USB_OTG_GlobalTypeDef *USBx);
607 HAL_StatusTypeDef
USB_WritePacket(USB_TypeDef *USBx, uint8_t *src, uint8_t ch_ep_num, uint16_t len);
608 void *
USB_ReadPacket(USB_TypeDef *USBx, uint8_t *dest, uint16_t len);
625 void USB_WritePMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes);
626 void USB_ReadPMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes);
USB_ModeTypeDef
USB Mode definition.
HAL_StatusTypeDef USB_HC_Init(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num, uint8_t epnum, uint8_t dev_address, uint8_t speed, uint8_t ep_type, uint16_t mps)
Initialize a host channel.
uint32_t USB_ReadDevOutEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum)
Returns Device OUT EP Interrupt register.
HAL_StatusTypeDef USB_SetDevAddress(USB_OTG_GlobalTypeDef *USBx, uint8_t address)
USB_SetDevAddress : Stop the usb device mode.
USB_OTG_URBStateTypeDef
URB States definition.
uint32_t low_power_enable
uint32_t USB_HC_ReadInterrupt(USB_OTG_GlobalTypeDef *USBx)
Read all host channel interrupts status.
HAL_StatusTypeDef USB_DriveVbus(USB_OTG_GlobalTypeDef *USBx, uint8_t state)
USB_DriveVbus : activate or de-activate vbus.
HAL_StatusTypeDef USB_DeActivateRemoteWakeup(USB_OTG_GlobalTypeDef *USBx)
USB_DeActivateRemoteWakeup de-active remote wakeup signalling.
HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep)
USB_EPStartXfer : setup and starts a transfer over an EP.
HAL_StatusTypeDef USB_EnableGlobalInt(USB_OTG_GlobalTypeDef *USBx)
USB_EnableGlobalInt Enables the controller's Global Int in the AHB Config reg.
HAL_StatusTypeDef USB_ActivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep)
Activate and configure an endpoint.
void * USB_ReadPacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len)
USB_ReadPacket : read a packet from the RX FIFO.
HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg)
USB_DevInit : Initializes the USB_OTG controller registers for device mode.
HAL_StatusTypeDef USB_ResetPort(USB_OTG_GlobalTypeDef *USBx)
USB_OTG_ResetPort : Reset Host Port.
USB_OTG_HCStateTypeDef state
HAL_StatusTypeDef USB_EP0_OutStart(USB_OTG_GlobalTypeDef *USBx, uint8_t *psetup)
Prepare the EP0 to start the first control setup.
HAL_StatusTypeDef USB_DoPing(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num)
Initiate Do Ping protocol.
HAL_StatusTypeDef USB_DeactivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep)
De-activate and de-initialize a dedicated endpoint.
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef USB_InitFSLSPClkSel(USB_OTG_GlobalTypeDef *USBx, uint8_t freq)
USB_InitFSLSPClkSel : Initializes the FSLSPClkSel field of the HCFG register on the PHY type and set ...
HAL_StatusTypeDef USB_WritePacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *src, uint8_t ch_ep_num, uint16_t len)
USB_WritePacket : Writes a packet into the Tx FIFO associated with the EP/channel.
HAL_StatusTypeDef USB_ActivateSetup(USB_OTG_GlobalTypeDef *USBx)
Activate EP0 for Setup transactions.
HAL_StatusTypeDef USB_ActivateRemoteWakeup(USB_OTG_GlobalTypeDef *USBx)
USB_ActivateRemoteWakeup active remote wakeup signalling.
uint32_t USB_ReadDevAllOutEpInterrupt(USB_OTG_GlobalTypeDef *USBx)
USB_ReadDevAllOutEpInterrupt: return the USB device OUT endpoints interrupt status.
HAL_StatusTypeDef USB_DisableGlobalInt(USB_OTG_GlobalTypeDef *USBx)
USB_DisableGlobalInt Disable the controller's Global Int in the AHB Config reg.
HAL_StatusTypeDef USB_HC_StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_HCTypeDef *hc)
Start a transfer over a host channel.
HAL_StatusTypeDef USB_EP0StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep)
USB_EP0StartXfer : setup and starts a transfer over the EP 0.
uint32_t USB_ReadInterrupts(USB_OTG_GlobalTypeDef *USBx)
USB_ReadInterrupts: return the global USB interrupt status.
HAL_StatusTypeDef USB_EPClearStall(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep)
USB_EPClearStall : Clear a stall condition over an EP.
HAL_StatusTypeDef USB_SetDevSpeed(USB_OTG_GlobalTypeDef *USBx, uint8_t speed)
USB_SetDevSpeed Initializes the DevSpd field of DCFG register depending the PHY type and the enumerat...
uint32_t use_external_vbus
HAL_StatusTypeDef USB_StopDevice(USB_OTG_GlobalTypeDef *USBx)
USB_StopDevice : Stop the usb device mode.
uint32_t USB_ReadDevInEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum)
Returns Device IN EP Interrupt register.
uint32_t use_dedicated_ep1
HAL_StatusTypeDef USB_HC_Halt(USB_OTG_GlobalTypeDef *USBx, uint8_t hc_num)
Halt a host channel.
HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg)
Initializes the USB Core.
USB_OTG_URBStateTypeDef urb_state
void USB_ClearInterrupts(USB_OTG_GlobalTypeDef *USBx, uint32_t interrupt)
USB_ClearInterrupts: clear a USB interrupt.
USB OTG Initialization Structure definition.
USB Initialization Structure definition.
uint32_t USB_ReadDevAllInEpInterrupt(USB_OTG_GlobalTypeDef *USBx)
USB_ReadDevAllInEpInterrupt: return the USB device IN endpoints interrupt status. ...
uint32_t vbus_sensing_enable
HAL_StatusTypeDef USB_ActivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep)
Activate and configure a dedicated endpoint.
uint32_t low_power_enable
uint32_t USB_GetCurrentFrame(USB_OTG_GlobalTypeDef *USBx)
Return Host Current Frame number.
uint32_t battery_charging_enable
void USB_ReadPMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes)
Copy a buffer from user memory area to packet memory area (PMA)
HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx, uint32_t hclk, uint8_t speed)
Set the USB turnaround time.
HAL_StatusTypeDef USB_FlushRxFifo(USB_OTG_GlobalTypeDef *USBx)
USB_FlushRxFifo : Flush Rx FIFO.
HAL_StatusTypeDef USB_DevDisconnect(USB_OTG_GlobalTypeDef *USBx)
USB_DevDisconnect : Disconnect the USB device by disabling the pull-up/pull-down. ...
USB_OTG_HCStateTypeDef
Host channel States definition.
HAL_StatusTypeDef USB_StopHost(USB_OTG_GlobalTypeDef *USBx)
Stop Host Core.
uint32_t battery_charging_enable
uint8_t USB_GetDevSpeed(USB_OTG_GlobalTypeDef *USBx)
USB_GetDevSpeed Return the Dev Speed.
HAL_StatusTypeDef USB_DevConnect(USB_OTG_GlobalTypeDef *USBx)
USB_DevConnect : Connect the USB device by enabling the pull-up/pull-down.
HAL_StatusTypeDef USB_SetCurrentMode(USB_OTG_GlobalTypeDef *USBx, USB_ModeTypeDef mode)
USB_SetCurrentMode : Set functional mode.
HAL_StatusTypeDef USB_FlushTxFifo(USB_OTG_GlobalTypeDef *USBx, uint32_t num)
USB_OTG_FlushTxFifo : Flush a Tx FIFO.
void USB_WritePMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes)
Copy a buffer from user memory area to packet memory area (PMA)
HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg)
USB_HostInit : Initializes the USB OTG controller registers for Host mode.
HAL_StatusTypeDef USB_DeactivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep)
De-activate and de-initialize an endpoint.
HAL_StatusTypeDef USB_EPSetStall(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep)
USB_EPSetStall : set a stall condition over an EP.
uint32_t USB_GetMode(USB_OTG_GlobalTypeDef *USBx)
Returns USB core mode.
uint32_t USB_GetHostSpeed(USB_OTG_GlobalTypeDef *USBx)
Return Host Core speed.