1 /** 2 ****************************************************************************** 3 * @file stm32l4xx_ll_usb.h 4 * @author MCD Application Team 5 * @brief Header file of USB Low Layer HAL module. 6 ****************************************************************************** 7 * @attention 8 * 9 * <h2><center>© Copyright (c) 2017 STMicroelectronics. 10 * All rights reserved.</center></h2> 11 * 12 * This software component is licensed by ST under BSD 3-Clause license, 13 * the "License"; You may not use this file except in compliance with the 14 * License. You may obtain a copy of the License at: 15 * opensource.org/licenses/BSD-3-Clause 16 * 17 ****************************************************************************** 18 */ 19 20 /* Define to prevent recursive inclusion -------------------------------------*/ 21 #ifndef STM32L4xx_LL_USB_H 22 #define STM32L4xx_LL_USB_H 23 24 #ifdef __cplusplus 25 extern "C" { 26 #endif 27 28 /* Includes ------------------------------------------------------------------*/ 29 #include "stm32l4xx_hal_def.h" 30 31 #if defined (USB) || defined (USB_OTG_FS) 32 /** @addtogroup STM32L4xx_HAL_Driver 33 * @{ 34 */ 35 36 /** @addtogroup USB_LL 37 * @{ 38 */ 39 40 /* Exported types ------------------------------------------------------------*/ 41 42 /** 43 * @brief USB Mode definition 44 */ 45 #if defined (USB_OTG_FS) 46 47 typedef enum 48 { 49 USB_DEVICE_MODE = 0, 50 USB_HOST_MODE = 1, 51 USB_DRD_MODE = 2 52 } USB_ModeTypeDef; 53 54 /** 55 * @brief URB States definition 56 */ 57 typedef enum 58 { 59 URB_IDLE = 0, 60 URB_DONE, 61 URB_NOTREADY, 62 URB_NYET, 63 URB_ERROR, 64 URB_STALL 65 } USB_OTG_URBStateTypeDef; 66 67 /** 68 * @brief Host channel States definition 69 */ 70 typedef enum 71 { 72 HC_IDLE = 0, 73 HC_XFRC, 74 HC_HALTED, 75 HC_NAK, 76 HC_NYET, 77 HC_STALL, 78 HC_XACTERR, 79 HC_BBLERR, 80 HC_DATATGLERR 81 } USB_OTG_HCStateTypeDef; 82 83 /** 84 * @brief USB OTG Initialization Structure definition 85 */ 86 typedef struct 87 { 88 uint32_t dev_endpoints; /*!< Device Endpoints number. 89 This parameter depends on the used USB core. 90 This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ 91 92 uint32_t Host_channels; /*!< Host Channels number. 93 This parameter Depends on the used USB core. 94 This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ 95 96 uint32_t speed; /*!< USB Core speed. 97 This parameter can be any value of @ref USB_Core_Speed_ */ 98 99 uint32_t dma_enable; /*!< Enable or disable of the USB embedded DMA used only for OTG HS. */ 100 101 uint32_t ep0_mps; /*!< Set the Endpoint 0 Max Packet size. */ 102 103 uint32_t phy_itface; /*!< Select the used PHY interface. 104 This parameter can be any value of @ref USB_Core_PHY_ */ 105 106 uint32_t Sof_enable; /*!< Enable or disable the output of the SOF signal. */ 107 108 uint32_t low_power_enable; /*!< Enable or disable the low power mode. */ 109 110 uint32_t lpm_enable; /*!< Enable or disable Link Power Management. */ 111 112 uint32_t battery_charging_enable; /*!< Enable or disable Battery charging. */ 113 114 uint32_t vbus_sensing_enable; /*!< Enable or disable the VBUS Sensing feature. */ 115 116 uint32_t use_dedicated_ep1; /*!< Enable or disable the use of the dedicated EP1 interrupt. */ 117 118 uint32_t use_external_vbus; /*!< Enable or disable the use of the external VBUS. */ 119 } USB_OTG_CfgTypeDef; 120 121 typedef struct 122 { 123 uint8_t num; /*!< Endpoint number 124 This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ 125 126 uint8_t is_in; /*!< Endpoint direction 127 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ 128 129 uint8_t is_stall; /*!< Endpoint stall condition 130 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ 131 132 uint8_t type; /*!< Endpoint type 133 This parameter can be any value of @ref USB_EP_Type_ */ 134 135 uint8_t data_pid_start; /*!< Initial data PID 136 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ 137 138 uint8_t even_odd_frame; /*!< IFrame parity 139 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ 140 141 uint16_t tx_fifo_num; /*!< Transmission FIFO number 142 This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ 143 144 uint32_t maxpacket; /*!< Endpoint Max packet size 145 This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */ 146 147 uint8_t *xfer_buff; /*!< Pointer to transfer buffer */ 148 149 uint32_t dma_addr; /*!< 32 bits aligned transfer buffer address */ 150 151 uint32_t xfer_len; /*!< Current transfer length */ 152 153 uint32_t xfer_count; /*!< Partial transfer length in case of multi packet transfer */ 154 } USB_OTG_EPTypeDef; 155 156 typedef struct 157 { 158 uint8_t dev_addr ; /*!< USB device address. 159 This parameter must be a number between Min_Data = 1 and Max_Data = 255 */ 160 161 uint8_t ch_num; /*!< Host channel number. 162 This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ 163 164 uint8_t ep_num; /*!< Endpoint number. 165 This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ 166 167 uint8_t ep_is_in; /*!< Endpoint direction 168 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ 169 170 uint8_t speed; /*!< USB Host speed. 171 This parameter can be any value of @ref USB_Core_Speed_ */ 172 173 uint8_t do_ping; /*!< Enable or disable the use of the PING protocol for HS mode. */ 174 175 uint8_t process_ping; /*!< Execute the PING protocol for HS mode. */ 176 177 uint8_t ep_type; /*!< Endpoint Type. 178 This parameter can be any value of @ref USB_EP_Type_ */ 179 180 uint16_t max_packet; /*!< Endpoint Max packet size. 181 This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */ 182 183 uint8_t data_pid; /*!< Initial data PID. 184 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ 185 186 uint8_t *xfer_buff; /*!< Pointer to transfer buffer. */ 187 188 uint32_t xfer_len; /*!< Current transfer length. */ 189 190 uint32_t xfer_count; /*!< Partial transfer length in case of multi packet transfer. */ 191 192 uint8_t toggle_in; /*!< IN transfer current toggle flag. 193 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ 194 195 uint8_t toggle_out; /*!< OUT transfer current toggle flag 196 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ 197 198 uint32_t dma_addr; /*!< 32 bits aligned transfer buffer address. */ 199 200 uint32_t ErrCnt; /*!< Host channel error count.*/ 201 202 USB_OTG_URBStateTypeDef urb_state; /*!< URB state. 203 This parameter can be any value of @ref USB_OTG_URBStateTypeDef */ 204 205 USB_OTG_HCStateTypeDef state; /*!< Host Channel state. 206 This parameter can be any value of @ref USB_OTG_HCStateTypeDef */ 207 } USB_OTG_HCTypeDef; 208 #endif /* defined (USB_OTG_FS) */ 209 210 #if defined (USB) 211 212 typedef enum 213 { 214 USB_DEVICE_MODE = 0 215 } USB_ModeTypeDef; 216 217 /** 218 * @brief USB Initialization Structure definition 219 */ 220 typedef struct 221 { 222 uint32_t dev_endpoints; /*!< Device Endpoints number. 223 This parameter depends on the used USB core. 224 This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ 225 226 uint32_t speed; /*!< USB Core speed. 227 This parameter can be any value of @ref USB_Core_Speed */ 228 229 uint32_t ep0_mps; /*!< Set the Endpoint 0 Max Packet size. */ 230 231 uint32_t phy_itface; /*!< Select the used PHY interface. 232 This parameter can be any value of @ref USB_Core_PHY */ 233 234 uint32_t Sof_enable; /*!< Enable or disable the output of the SOF signal. */ 235 236 uint32_t low_power_enable; /*!< Enable or disable Low Power mode */ 237 238 uint32_t lpm_enable; /*!< Enable or disable Battery charging. */ 239 240 uint32_t battery_charging_enable; /*!< Enable or disable Battery charging. */ 241 } USB_CfgTypeDef; 242 243 typedef struct 244 { 245 uint8_t num; /*!< Endpoint number 246 This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ 247 248 uint8_t is_in; /*!< Endpoint direction 249 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ 250 251 uint8_t is_stall; /*!< Endpoint stall condition 252 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ 253 254 uint8_t type; /*!< Endpoint type 255 This parameter can be any value of @ref USB_EP_Type */ 256 257 uint8_t data_pid_start; /*!< Initial data PID 258 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ 259 260 uint16_t pmaadress; /*!< PMA Address 261 This parameter can be any value between Min_addr = 0 and Max_addr = 1K */ 262 263 uint16_t pmaaddr0; /*!< PMA Address0 264 This parameter can be any value between Min_addr = 0 and Max_addr = 1K */ 265 266 uint16_t pmaaddr1; /*!< PMA Address1 267 This parameter can be any value between Min_addr = 0 and Max_addr = 1K */ 268 269 uint8_t doublebuffer; /*!< Double buffer enable 270 This parameter can be 0 or 1 */ 271 272 uint16_t tx_fifo_num; /*!< This parameter is not required by USB Device FS peripheral, it is used 273 only by USB OTG FS peripheral 274 This parameter is added to ensure compatibility across USB peripherals */ 275 276 uint32_t maxpacket; /*!< Endpoint Max packet size 277 This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */ 278 279 uint8_t *xfer_buff; /*!< Pointer to transfer buffer */ 280 281 uint32_t xfer_len; /*!< Current transfer length */ 282 283 uint32_t xfer_count; /*!< Partial transfer length in case of multi packet transfer */ 284 285 } USB_EPTypeDef; 286 #endif /* defined (USB) */ 287 288 /* Exported constants --------------------------------------------------------*/ 289 290 /** @defgroup PCD_Exported_Constants PCD Exported Constants 291 * @{ 292 */ 293 294 #if defined (USB_OTG_FS) 295 /** @defgroup USB_OTG_CORE VERSION ID 296 * @{ 297 */ 298 #define USB_OTG_CORE_ID_300A 0x4F54300AU 299 #define USB_OTG_CORE_ID_310A 0x4F54310AU 300 /** 301 * @} 302 */ 303 304 /** @defgroup USB_Core_Mode_ USB Core Mode 305 * @{ 306 */ 307 #define USB_OTG_MODE_DEVICE 0U 308 #define USB_OTG_MODE_HOST 1U 309 #define USB_OTG_MODE_DRD 2U 310 /** 311 * @} 312 */ 313 314 /** @defgroup USB_LL Device Speed 315 * @{ 316 */ 317 #define USBD_FS_SPEED 2U 318 #define USBH_FS_SPEED 1U 319 /** 320 * @} 321 */ 322 323 /** @defgroup USB_LL_Core_Speed USB Low Layer Core Speed 324 * @{ 325 */ 326 #define USB_OTG_SPEED_FULL 3U 327 /** 328 * @} 329 */ 330 331 /** @defgroup USB_LL_Core_PHY USB Low Layer Core PHY 332 * @{ 333 */ 334 #define USB_OTG_ULPI_PHY 1U 335 #define USB_OTG_EMBEDDED_PHY 2U 336 /** 337 * @} 338 */ 339 340 /** @defgroup USB_LL_Turnaround_Timeout Turnaround Timeout Value 341 * @{ 342 */ 343 #ifndef USBD_FS_TRDT_VALUE 344 #define USBD_FS_TRDT_VALUE 5U 345 #define USBD_DEFAULT_TRDT_VALUE 9U 346 #endif /* USBD_HS_TRDT_VALUE */ 347 /** 348 * @} 349 */ 350 351 /** @defgroup USB_LL_Core_MPS USB Low Layer Core MPS 352 * @{ 353 */ 354 #define USB_OTG_FS_MAX_PACKET_SIZE 64U 355 #define USB_OTG_MAX_EP0_SIZE 64U 356 /** 357 * @} 358 */ 359 360 /** @defgroup USB_LL_Core_PHY_Frequency USB Low Layer Core PHY Frequency 361 * @{ 362 */ 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_FS_PHY_48MHZ (3U << 1) 366 /** 367 * @} 368 */ 369 370 /** @defgroup USB_LL_CORE_Frame_Interval USB Low Layer Core Frame Interval 371 * @{ 372 */ 373 #define DCFG_FRAME_INTERVAL_80 0U 374 #define DCFG_FRAME_INTERVAL_85 1U 375 #define DCFG_FRAME_INTERVAL_90 2U 376 #define DCFG_FRAME_INTERVAL_95 3U 377 /** 378 * @} 379 */ 380 381 /** @defgroup USB_LL_EP0_MPS USB Low Layer EP0 MPS 382 * @{ 383 */ 384 #define DEP0CTL_MPS_64 0U 385 #define DEP0CTL_MPS_32 1U 386 #define DEP0CTL_MPS_16 2U 387 #define DEP0CTL_MPS_8 3U 388 /** 389 * @} 390 */ 391 392 /** @defgroup USB_LL_EP_Speed USB Low Layer EP Speed 393 * @{ 394 */ 395 #define EP_SPEED_LOW 0U 396 #define EP_SPEED_FULL 1U 397 #define EP_SPEED_HIGH 2U 398 /** 399 * @} 400 */ 401 402 /** @defgroup USB_LL_EP_Type USB Low Layer EP Type 403 * @{ 404 */ 405 #define EP_TYPE_CTRL 0U 406 #define EP_TYPE_ISOC 1U 407 #define EP_TYPE_BULK 2U 408 #define EP_TYPE_INTR 3U 409 #define EP_TYPE_MSK 3U 410 /** 411 * @} 412 */ 413 414 /** @defgroup USB_LL_STS_Defines USB Low Layer STS Defines 415 * @{ 416 */ 417 #define STS_GOUT_NAK 1U 418 #define STS_DATA_UPDT 2U 419 #define STS_XFER_COMP 3U 420 #define STS_SETUP_COMP 4U 421 #define STS_SETUP_UPDT 6U 422 /** 423 * @} 424 */ 425 426 /** @defgroup USB_LL_HCFG_SPEED_Defines USB Low Layer HCFG Speed Defines 427 * @{ 428 */ 429 #define HCFG_30_60_MHZ 0U 430 #define HCFG_48_MHZ 1U 431 #define HCFG_6_MHZ 2U 432 /** 433 * @} 434 */ 435 436 /** @defgroup USB_LL_HPRT0_PRTSPD_SPEED_Defines USB Low Layer HPRT0 PRTSPD Speed Defines 437 * @{ 438 */ 439 #define HPRT0_PRTSPD_HIGH_SPEED 0U 440 #define HPRT0_PRTSPD_FULL_SPEED 1U 441 #define HPRT0_PRTSPD_LOW_SPEED 2U 442 /** 443 * @} 444 */ 445 446 #define HCCHAR_CTRL 0U 447 #define HCCHAR_ISOC 1U 448 #define HCCHAR_BULK 2U 449 #define HCCHAR_INTR 3U 450 451 #define HC_PID_DATA0 0U 452 #define HC_PID_DATA2 1U 453 #define HC_PID_DATA1 2U 454 #define HC_PID_SETUP 3U 455 456 #define GRXSTS_PKTSTS_IN 2U 457 #define GRXSTS_PKTSTS_IN_XFER_COMP 3U 458 #define GRXSTS_PKTSTS_DATA_TOGGLE_ERR 5U 459 #define GRXSTS_PKTSTS_CH_HALTED 7U 460 461 #define USBx_PCGCCTL *(__IO uint32_t *)((uint32_t)USBx_BASE + USB_OTG_PCGCCTL_BASE) 462 #define USBx_HPRT0 *(__IO uint32_t *)((uint32_t)USBx_BASE + USB_OTG_HOST_PORT_BASE) 463 464 #define USBx_DEVICE ((USB_OTG_DeviceTypeDef *)(USBx_BASE + USB_OTG_DEVICE_BASE)) 465 #define USBx_INEP(i) ((USB_OTG_INEndpointTypeDef *)(USBx_BASE + USB_OTG_IN_ENDPOINT_BASE + ((i) * USB_OTG_EP_REG_SIZE))) 466 #define USBx_OUTEP(i) ((USB_OTG_OUTEndpointTypeDef *)(USBx_BASE + USB_OTG_OUT_ENDPOINT_BASE + ((i) * USB_OTG_EP_REG_SIZE))) 467 #define USBx_DFIFO(i) *(__IO uint32_t *)(USBx_BASE + USB_OTG_FIFO_BASE + ((i) * USB_OTG_FIFO_SIZE)) 468 469 #define USBx_HOST ((USB_OTG_HostTypeDef *)(USBx_BASE + USB_OTG_HOST_BASE)) 470 #define USBx_HC(i) ((USB_OTG_HostChannelTypeDef *)(USBx_BASE + USB_OTG_HOST_CHANNEL_BASE + ((i) * USB_OTG_HOST_CHANNEL_SIZE))) 471 #endif /* defined (USB_OTG_FS) */ 472 473 #if defined (USB) 474 /** @defgroup USB_LL_EP0_MPS USB Low Layer EP0 MPS 475 * @{ 476 */ 477 #define DEP0CTL_MPS_64 0U 478 #define DEP0CTL_MPS_32 1U 479 #define DEP0CTL_MPS_16 2U 480 #define DEP0CTL_MPS_8 3U 481 /** 482 * @} 483 */ 484 485 /** @defgroup USB_LL_EP_Type USB Low Layer EP Type 486 * @{ 487 */ 488 #define EP_TYPE_CTRL 0U 489 #define EP_TYPE_ISOC 1U 490 #define EP_TYPE_BULK 2U 491 #define EP_TYPE_INTR 3U 492 #define EP_TYPE_MSK 3U 493 /** 494 * @} 495 */ 496 497 /** @defgroup USB_LL Device Speed 498 * @{ 499 */ 500 #define USBD_FS_SPEED 2U 501 /** 502 * @} 503 */ 504 505 #define BTABLE_ADDRESS 0x000U 506 #define PMA_ACCESS 1U 507 #endif /* defined (USB) */ 508 #if defined (USB_OTG_FS) 509 #define EP_ADDR_MSK 0xFU 510 #endif /* defined (USB_OTG_FS) */ 511 #if defined (USB) 512 #define EP_ADDR_MSK 0x7U 513 #endif /* defined (USB) */ 514 /** 515 * @} 516 */ 517 518 /* Exported macro ------------------------------------------------------------*/ 519 /** @defgroup USB_LL_Exported_Macros USB Low Layer Exported Macros 520 * @{ 521 */ 522 #if defined (USB_OTG_FS) 523 #define USB_MASK_INTERRUPT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->GINTMSK &= ~(__INTERRUPT__)) 524 #define USB_UNMASK_INTERRUPT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->GINTMSK |= (__INTERRUPT__)) 525 526 #define CLEAR_IN_EP_INTR(__EPNUM__, __INTERRUPT__) (USBx_INEP(__EPNUM__)->DIEPINT = (__INTERRUPT__)) 527 #define CLEAR_OUT_EP_INTR(__EPNUM__, __INTERRUPT__) (USBx_OUTEP(__EPNUM__)->DOEPINT = (__INTERRUPT__)) 528 #endif /* defined (USB_OTG_FS) */ 529 /** 530 * @} 531 */ 532 533 /* Exported functions --------------------------------------------------------*/ 534 /** @addtogroup USB_LL_Exported_Functions USB Low Layer Exported Functions 535 * @{ 536 */ 537 #if defined (USB_OTG_FS) 538 HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg); 539 HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg); 540 HAL_StatusTypeDef USB_EnableGlobalInt(USB_OTG_GlobalTypeDef *USBx); 541 HAL_StatusTypeDef USB_DisableGlobalInt(USB_OTG_GlobalTypeDef *USBx); 542 HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx, uint32_t hclk, uint8_t speed); 543 HAL_StatusTypeDef USB_SetCurrentMode(USB_OTG_GlobalTypeDef *USBx, USB_ModeTypeDef mode); 544 HAL_StatusTypeDef USB_SetDevSpeed(USB_OTG_GlobalTypeDef *USBx, uint8_t speed); 545 HAL_StatusTypeDef USB_FlushRxFifo(USB_OTG_GlobalTypeDef *USBx); 546 HAL_StatusTypeDef USB_FlushTxFifo(USB_OTG_GlobalTypeDef *USBx, uint32_t num); 547 HAL_StatusTypeDef USB_ActivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); 548 HAL_StatusTypeDef USB_DeactivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); 549 HAL_StatusTypeDef USB_ActivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); 550 HAL_StatusTypeDef USB_DeactivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); 551 HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); 552 HAL_StatusTypeDef USB_EP0StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); 553 HAL_StatusTypeDef USB_WritePacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *src, uint8_t ch_ep_num, uint16_t len); 554 void *USB_ReadPacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len); 555 HAL_StatusTypeDef USB_EPSetStall(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); 556 HAL_StatusTypeDef USB_EPClearStall(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); 557 HAL_StatusTypeDef USB_SetDevAddress(USB_OTG_GlobalTypeDef *USBx, uint8_t address); 558 HAL_StatusTypeDef USB_DevConnect(USB_OTG_GlobalTypeDef *USBx); 559 HAL_StatusTypeDef USB_DevDisconnect(USB_OTG_GlobalTypeDef *USBx); 560 HAL_StatusTypeDef USB_StopDevice(USB_OTG_GlobalTypeDef *USBx); 561 HAL_StatusTypeDef USB_ActivateSetup(USB_OTG_GlobalTypeDef *USBx); 562 HAL_StatusTypeDef USB_EP0_OutStart(USB_OTG_GlobalTypeDef *USBx, uint8_t *psetup); 563 uint8_t USB_GetDevSpeed(USB_OTG_GlobalTypeDef *USBx); 564 uint32_t USB_GetMode(USB_OTG_GlobalTypeDef *USBx); 565 uint32_t USB_ReadInterrupts(USB_OTG_GlobalTypeDef *USBx); 566 uint32_t USB_ReadDevAllOutEpInterrupt(USB_OTG_GlobalTypeDef *USBx); 567 uint32_t USB_ReadDevOutEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum); 568 uint32_t USB_ReadDevAllInEpInterrupt(USB_OTG_GlobalTypeDef *USBx); 569 uint32_t USB_ReadDevInEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum); 570 void USB_ClearInterrupts(USB_OTG_GlobalTypeDef *USBx, uint32_t interrupt); 571 572 HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg); 573 HAL_StatusTypeDef USB_InitFSLSPClkSel(USB_OTG_GlobalTypeDef *USBx, uint8_t freq); 574 HAL_StatusTypeDef USB_ResetPort(USB_OTG_GlobalTypeDef *USBx); 575 HAL_StatusTypeDef USB_DriveVbus(USB_OTG_GlobalTypeDef *USBx, uint8_t state); 576 uint32_t USB_GetHostSpeed(USB_OTG_GlobalTypeDef *USBx); 577 uint32_t USB_GetCurrentFrame(USB_OTG_GlobalTypeDef *USBx); 578 HAL_StatusTypeDef USB_HC_Init(USB_OTG_GlobalTypeDef *USBx, 579 uint8_t ch_num, 580 uint8_t epnum, 581 uint8_t dev_address, 582 uint8_t speed, 583 uint8_t ep_type, 584 uint16_t mps); 585 HAL_StatusTypeDef USB_HC_StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_HCTypeDef *hc); 586 uint32_t USB_HC_ReadInterrupt(USB_OTG_GlobalTypeDef *USBx); 587 HAL_StatusTypeDef USB_HC_Halt(USB_OTG_GlobalTypeDef *USBx, uint8_t hc_num); 588 HAL_StatusTypeDef USB_DoPing(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num); 589 HAL_StatusTypeDef USB_StopHost(USB_OTG_GlobalTypeDef *USBx); 590 HAL_StatusTypeDef USB_ActivateRemoteWakeup(USB_OTG_GlobalTypeDef *USBx); 591 HAL_StatusTypeDef USB_DeActivateRemoteWakeup(USB_OTG_GlobalTypeDef *USBx); 592 #endif /* defined (USB_OTG_FS) */ 593 594 #if defined (USB) 595 HAL_StatusTypeDef USB_CoreInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg); 596 HAL_StatusTypeDef USB_DevInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg); 597 HAL_StatusTypeDef USB_EnableGlobalInt(USB_TypeDef *USBx); 598 HAL_StatusTypeDef USB_DisableGlobalInt(USB_TypeDef *USBx); 599 HAL_StatusTypeDef USB_SetCurrentMode(USB_TypeDef *USBx, USB_ModeTypeDef mode); 600 HAL_StatusTypeDef USB_SetDevSpeed(USB_TypeDef *USBx, uint8_t speed); 601 HAL_StatusTypeDef USB_FlushRxFifo(USB_TypeDef *USBx); 602 HAL_StatusTypeDef USB_FlushTxFifo(USB_TypeDef *USBx, uint32_t num); 603 HAL_StatusTypeDef USB_ActivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep); 604 HAL_StatusTypeDef USB_DeactivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep); 605 HAL_StatusTypeDef USB_EPStartXfer(USB_TypeDef *USBx, USB_EPTypeDef *ep); 606 HAL_StatusTypeDef USB_WritePacket(USB_TypeDef *USBx, uint8_t *src, uint8_t ch_ep_num, uint16_t len); 607 void *USB_ReadPacket(USB_TypeDef *USBx, uint8_t *dest, uint16_t len); 608 HAL_StatusTypeDef USB_EPSetStall(USB_TypeDef *USBx, USB_EPTypeDef *ep); 609 HAL_StatusTypeDef USB_EPClearStall(USB_TypeDef *USBx, USB_EPTypeDef *ep); 610 HAL_StatusTypeDef USB_SetDevAddress(USB_TypeDef *USBx, uint8_t address); 611 HAL_StatusTypeDef USB_DevConnect(USB_TypeDef *USBx); 612 HAL_StatusTypeDef USB_DevDisconnect(USB_TypeDef *USBx); 613 HAL_StatusTypeDef USB_StopDevice(USB_TypeDef *USBx); 614 HAL_StatusTypeDef USB_EP0_OutStart(USB_TypeDef *USBx, uint8_t *psetup); 615 uint32_t USB_ReadInterrupts(USB_TypeDef *USBx); 616 uint32_t USB_ReadDevAllOutEpInterrupt(USB_TypeDef *USBx); 617 uint32_t USB_ReadDevOutEPInterrupt(USB_TypeDef *USBx, uint8_t epnum); 618 uint32_t USB_ReadDevAllInEpInterrupt(USB_TypeDef *USBx); 619 uint32_t USB_ReadDevInEPInterrupt(USB_TypeDef *USBx, uint8_t epnum); 620 void USB_ClearInterrupts(USB_TypeDef *USBx, uint32_t interrupt); 621 622 HAL_StatusTypeDef USB_ActivateRemoteWakeup(USB_TypeDef *USBx); 623 HAL_StatusTypeDef USB_DeActivateRemoteWakeup(USB_TypeDef *USBx); 624 void USB_WritePMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes); 625 void USB_ReadPMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes); 626 #endif /* defined (USB) */ 627 /** 628 * @} 629 */ 630 631 /** 632 * @} 633 */ 634 635 /** 636 * @} 637 */ 638 639 /** 640 * @} 641 */ 642 #endif /* defined (USB) || defined (USB_OTG_FS) */ 643 644 #ifdef __cplusplus 645 } 646 #endif 647 648 649 #endif /* STM32L4xx_LL_USB_H */ 650 651 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 652