The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
Parent:
171:3a7713b1edbc
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Anna Bridge 160:5571c4ff569f 1 /**
Anna Bridge 160:5571c4ff569f 2 ******************************************************************************
Anna Bridge 160:5571c4ff569f 3 * @file stm32f4xx_ll_usb.h
Anna Bridge 160:5571c4ff569f 4 * @author MCD Application Team
Anna Bridge 160:5571c4ff569f 5 * @brief Header file of USB Core HAL module.
Anna Bridge 160:5571c4ff569f 6 ******************************************************************************
Anna Bridge 160:5571c4ff569f 7 * @attention
Anna Bridge 160:5571c4ff569f 8 *
Anna Bridge 160:5571c4ff569f 9 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
Anna Bridge 160:5571c4ff569f 10 *
Anna Bridge 160:5571c4ff569f 11 * Redistribution and use in source and binary forms, with or without modification,
Anna Bridge 160:5571c4ff569f 12 * are permitted provided that the following conditions are met:
Anna Bridge 160:5571c4ff569f 13 * 1. Redistributions of source code must retain the above copyright notice,
Anna Bridge 160:5571c4ff569f 14 * this list of conditions and the following disclaimer.
Anna Bridge 160:5571c4ff569f 15 * 2. Redistributions in binary form must reproduce the above copyright notice,
Anna Bridge 160:5571c4ff569f 16 * this list of conditions and the following disclaimer in the documentation
Anna Bridge 160:5571c4ff569f 17 * and/or other materials provided with the distribution.
Anna Bridge 160:5571c4ff569f 18 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Anna Bridge 160:5571c4ff569f 19 * may be used to endorse or promote products derived from this software
Anna Bridge 160:5571c4ff569f 20 * without specific prior written permission.
Anna Bridge 160:5571c4ff569f 21 *
Anna Bridge 160:5571c4ff569f 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Anna Bridge 160:5571c4ff569f 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Anna Bridge 160:5571c4ff569f 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Anna Bridge 160:5571c4ff569f 25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Anna Bridge 160:5571c4ff569f 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Anna Bridge 160:5571c4ff569f 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Anna Bridge 160:5571c4ff569f 28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Anna Bridge 160:5571c4ff569f 29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Anna Bridge 160:5571c4ff569f 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Anna Bridge 160:5571c4ff569f 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Anna Bridge 160:5571c4ff569f 32 *
Anna Bridge 160:5571c4ff569f 33 ******************************************************************************
Anna Bridge 160:5571c4ff569f 34 */
Anna Bridge 160:5571c4ff569f 35
Anna Bridge 160:5571c4ff569f 36 /* Define to prevent recursive inclusion -------------------------------------*/
Anna Bridge 160:5571c4ff569f 37 #ifndef __STM32F4xx_LL_USB_H
Anna Bridge 160:5571c4ff569f 38 #define __STM32F4xx_LL_USB_H
Anna Bridge 160:5571c4ff569f 39
Anna Bridge 160:5571c4ff569f 40 #ifdef __cplusplus
Anna Bridge 160:5571c4ff569f 41 extern "C" {
Anna Bridge 160:5571c4ff569f 42 #endif
Anna Bridge 160:5571c4ff569f 43 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) || \
Anna Bridge 160:5571c4ff569f 44 defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) || \
Anna Bridge 160:5571c4ff569f 45 defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx) || \
Anna Bridge 160:5571c4ff569f 46 defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || \
Anna Bridge 160:5571c4ff569f 47 defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
Anna Bridge 160:5571c4ff569f 48 /* Includes ------------------------------------------------------------------*/
Anna Bridge 160:5571c4ff569f 49 #include "stm32f4xx_hal_def.h"
Anna Bridge 160:5571c4ff569f 50
Anna Bridge 160:5571c4ff569f 51 /** @addtogroup STM32F4xx_HAL
Anna Bridge 160:5571c4ff569f 52 * @{
Anna Bridge 160:5571c4ff569f 53 */
Anna Bridge 160:5571c4ff569f 54
Anna Bridge 160:5571c4ff569f 55 /** @addtogroup USB_Core
Anna Bridge 160:5571c4ff569f 56 * @{
Anna Bridge 160:5571c4ff569f 57 */
Anna Bridge 160:5571c4ff569f 58
Anna Bridge 160:5571c4ff569f 59 /* Exported types ------------------------------------------------------------*/
Anna Bridge 160:5571c4ff569f 60
Anna Bridge 160:5571c4ff569f 61 /**
Anna Bridge 160:5571c4ff569f 62 * @brief USB Mode definition
Anna Bridge 160:5571c4ff569f 63 */
Anna Bridge 160:5571c4ff569f 64 typedef enum
Anna Bridge 160:5571c4ff569f 65 {
Anna Bridge 160:5571c4ff569f 66 USB_OTG_DEVICE_MODE = 0U,
Anna Bridge 160:5571c4ff569f 67 USB_OTG_HOST_MODE = 1U,
Anna Bridge 160:5571c4ff569f 68 USB_OTG_DRD_MODE = 2U
Anna Bridge 160:5571c4ff569f 69
Anna Bridge 160:5571c4ff569f 70 }USB_OTG_ModeTypeDef;
Anna Bridge 160:5571c4ff569f 71
Anna Bridge 160:5571c4ff569f 72 /**
Anna Bridge 160:5571c4ff569f 73 * @brief URB States definition
Anna Bridge 160:5571c4ff569f 74 */
Anna Bridge 160:5571c4ff569f 75 typedef enum {
Anna Bridge 160:5571c4ff569f 76 URB_IDLE = 0U,
Anna Bridge 160:5571c4ff569f 77 URB_DONE,
Anna Bridge 160:5571c4ff569f 78 URB_NOTREADY,
Anna Bridge 160:5571c4ff569f 79 URB_NYET,
Anna Bridge 160:5571c4ff569f 80 URB_ERROR,
Anna Bridge 160:5571c4ff569f 81 URB_STALL
Anna Bridge 160:5571c4ff569f 82
Anna Bridge 160:5571c4ff569f 83 }USB_OTG_URBStateTypeDef;
Anna Bridge 160:5571c4ff569f 84
Anna Bridge 160:5571c4ff569f 85 /**
Anna Bridge 160:5571c4ff569f 86 * @brief Host channel States definition
Anna Bridge 160:5571c4ff569f 87 */
Anna Bridge 160:5571c4ff569f 88 typedef enum {
Anna Bridge 160:5571c4ff569f 89 HC_IDLE = 0U,
Anna Bridge 160:5571c4ff569f 90 HC_XFRC,
Anna Bridge 160:5571c4ff569f 91 HC_HALTED,
Anna Bridge 160:5571c4ff569f 92 HC_NAK,
Anna Bridge 160:5571c4ff569f 93 HC_NYET,
Anna Bridge 160:5571c4ff569f 94 HC_STALL,
Anna Bridge 160:5571c4ff569f 95 HC_XACTERR,
Anna Bridge 160:5571c4ff569f 96 HC_BBLERR,
Anna Bridge 160:5571c4ff569f 97 HC_DATATGLERR
Anna Bridge 160:5571c4ff569f 98
Anna Bridge 160:5571c4ff569f 99 }USB_OTG_HCStateTypeDef;
Anna Bridge 160:5571c4ff569f 100
Anna Bridge 160:5571c4ff569f 101 /**
Anna Bridge 160:5571c4ff569f 102 * @brief PCD Initialization Structure definition
Anna Bridge 160:5571c4ff569f 103 */
Anna Bridge 160:5571c4ff569f 104 typedef struct
Anna Bridge 160:5571c4ff569f 105 {
Anna Bridge 160:5571c4ff569f 106 uint32_t dev_endpoints; /*!< Device Endpoints number.
Anna Bridge 160:5571c4ff569f 107 This parameter depends on the used USB core.
Anna Bridge 160:5571c4ff569f 108 This parameter must be a number between Min_Data = 1 and Max_Data = 15 */
Anna Bridge 160:5571c4ff569f 109
Anna Bridge 160:5571c4ff569f 110 uint32_t Host_channels; /*!< Host Channels number.
Anna Bridge 160:5571c4ff569f 111 This parameter Depends on the used USB core.
Anna Bridge 160:5571c4ff569f 112 This parameter must be a number between Min_Data = 1 and Max_Data = 15 */
Anna Bridge 160:5571c4ff569f 113
Anna Bridge 160:5571c4ff569f 114 uint32_t speed; /*!< USB Core speed.
Anna Bridge 160:5571c4ff569f 115 This parameter can be any value of @ref USB_Core_Speed_ */
Anna Bridge 160:5571c4ff569f 116
Anna Bridge 160:5571c4ff569f 117 uint32_t dma_enable; /*!< Enable or disable of the USB embedded DMA. */
Anna Bridge 160:5571c4ff569f 118
Anna Bridge 160:5571c4ff569f 119 uint32_t ep0_mps; /*!< Set the Endpoint 0 Max Packet size.
Anna Bridge 160:5571c4ff569f 120 This parameter can be any value of @ref USB_EP0_MPS_ */
Anna Bridge 160:5571c4ff569f 121
Anna Bridge 160:5571c4ff569f 122 uint32_t phy_itface; /*!< Select the used PHY interface.
Anna Bridge 160:5571c4ff569f 123 This parameter can be any value of @ref USB_Core_PHY_ */
Anna Bridge 160:5571c4ff569f 124
Anna Bridge 160:5571c4ff569f 125 uint32_t Sof_enable; /*!< Enable or disable the output of the SOF signal. */
Anna Bridge 160:5571c4ff569f 126
Anna Bridge 160:5571c4ff569f 127 uint32_t low_power_enable; /*!< Enable or disable the low power mode. */
Anna Bridge 160:5571c4ff569f 128
Anna Bridge 160:5571c4ff569f 129 uint32_t lpm_enable; /*!< Enable or disable Link Power Management. */
Anna Bridge 160:5571c4ff569f 130
Anna Bridge 160:5571c4ff569f 131 uint32_t battery_charging_enable; /*!< Enable or disable Battery charging. */
Anna Bridge 160:5571c4ff569f 132
Anna Bridge 160:5571c4ff569f 133 uint32_t vbus_sensing_enable; /*!< Enable or disable the VBUS Sensing feature. */
Anna Bridge 160:5571c4ff569f 134
Anna Bridge 160:5571c4ff569f 135 uint32_t use_dedicated_ep1; /*!< Enable or disable the use of the dedicated EP1 interrupt. */
Anna Bridge 160:5571c4ff569f 136
Anna Bridge 160:5571c4ff569f 137 uint32_t use_external_vbus; /*!< Enable or disable the use of the external VBUS. */
Anna Bridge 160:5571c4ff569f 138
Anna Bridge 160:5571c4ff569f 139 }USB_OTG_CfgTypeDef;
Anna Bridge 160:5571c4ff569f 140
Anna Bridge 160:5571c4ff569f 141 /**
Anna Bridge 160:5571c4ff569f 142 * @brief OTG End Point Initialization Structure definition
Anna Bridge 160:5571c4ff569f 143 */
Anna Bridge 160:5571c4ff569f 144 typedef struct
Anna Bridge 160:5571c4ff569f 145 {
Anna Bridge 160:5571c4ff569f 146 uint8_t num; /*!< Endpoint number
Anna Bridge 160:5571c4ff569f 147 This parameter must be a number between Min_Data = 1 and Max_Data = 15 */
Anna Bridge 160:5571c4ff569f 148
Anna Bridge 160:5571c4ff569f 149 uint8_t is_in; /*!< Endpoint direction
Anna Bridge 160:5571c4ff569f 150 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */
Anna Bridge 160:5571c4ff569f 151
Anna Bridge 160:5571c4ff569f 152 uint8_t is_stall; /*!< Endpoint stall condition
Anna Bridge 160:5571c4ff569f 153 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */
Anna Bridge 160:5571c4ff569f 154
Anna Bridge 160:5571c4ff569f 155 uint8_t type; /*!< Endpoint type
Anna Bridge 160:5571c4ff569f 156 This parameter can be any value of @ref USB_EP_Type_ */
Anna Bridge 160:5571c4ff569f 157
Anna Bridge 160:5571c4ff569f 158 uint8_t data_pid_start; /*!< Initial data PID
Anna Bridge 160:5571c4ff569f 159 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */
Anna Bridge 160:5571c4ff569f 160
Anna Bridge 160:5571c4ff569f 161 uint8_t even_odd_frame; /*!< IFrame parity
Anna Bridge 160:5571c4ff569f 162 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */
Anna Bridge 160:5571c4ff569f 163
Anna Bridge 160:5571c4ff569f 164 uint16_t tx_fifo_num; /*!< Transmission FIFO number
Anna Bridge 160:5571c4ff569f 165 This parameter must be a number between Min_Data = 1 and Max_Data = 15 */
Anna Bridge 160:5571c4ff569f 166
Anna Bridge 160:5571c4ff569f 167 uint32_t maxpacket; /*!< Endpoint Max packet size
Anna Bridge 160:5571c4ff569f 168 This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */
Anna Bridge 160:5571c4ff569f 169
Anna Bridge 160:5571c4ff569f 170 uint8_t *xfer_buff; /*!< Pointer to transfer buffer */
Anna Bridge 160:5571c4ff569f 171
Anna Bridge 160:5571c4ff569f 172 uint32_t dma_addr; /*!< 32 bits aligned transfer buffer address */
Anna Bridge 160:5571c4ff569f 173
Anna Bridge 160:5571c4ff569f 174 uint32_t xfer_len; /*!< Current transfer length */
Anna Bridge 160:5571c4ff569f 175
Anna Bridge 160:5571c4ff569f 176 uint32_t xfer_count; /*!< Partial transfer length in case of multi packet transfer */
Anna Bridge 160:5571c4ff569f 177
Anna Bridge 160:5571c4ff569f 178 }USB_OTG_EPTypeDef;
Anna Bridge 160:5571c4ff569f 179
Anna Bridge 160:5571c4ff569f 180 /**
Anna Bridge 160:5571c4ff569f 181 * @brief OTG HC Initialization Structure definition
Anna Bridge 160:5571c4ff569f 182 */
Anna Bridge 160:5571c4ff569f 183 typedef struct
Anna Bridge 160:5571c4ff569f 184 {
Anna Bridge 160:5571c4ff569f 185 uint8_t dev_addr ; /*!< USB device address.
Anna Bridge 160:5571c4ff569f 186 This parameter must be a number between Min_Data = 1 and Max_Data = 255 */
Anna Bridge 160:5571c4ff569f 187
Anna Bridge 160:5571c4ff569f 188 uint8_t ch_num; /*!< Host channel number.
Anna Bridge 160:5571c4ff569f 189 This parameter must be a number between Min_Data = 1 and Max_Data = 15 */
Anna Bridge 160:5571c4ff569f 190
Anna Bridge 160:5571c4ff569f 191 uint8_t ep_num; /*!< Endpoint number.
Anna Bridge 160:5571c4ff569f 192 This parameter must be a number between Min_Data = 1 and Max_Data = 15 */
Anna Bridge 160:5571c4ff569f 193
Anna Bridge 160:5571c4ff569f 194 uint8_t ep_is_in; /*!< Endpoint direction
Anna Bridge 160:5571c4ff569f 195 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */
Anna Bridge 160:5571c4ff569f 196
Anna Bridge 160:5571c4ff569f 197 uint8_t speed; /*!< USB Host speed.
Anna Bridge 160:5571c4ff569f 198 This parameter can be any value of @ref USB_Core_Speed_ */
Anna Bridge 160:5571c4ff569f 199
Anna Bridge 160:5571c4ff569f 200 uint8_t do_ping; /*!< Enable or disable the use of the PING protocol for HS mode. */
Anna Bridge 160:5571c4ff569f 201
Anna Bridge 160:5571c4ff569f 202 uint8_t process_ping; /*!< Execute the PING protocol for HS mode. */
Anna Bridge 160:5571c4ff569f 203
Anna Bridge 160:5571c4ff569f 204 uint8_t ep_type; /*!< Endpoint Type.
Anna Bridge 160:5571c4ff569f 205 This parameter can be any value of @ref USB_EP_Type_ */
Anna Bridge 160:5571c4ff569f 206
Anna Bridge 160:5571c4ff569f 207 uint16_t max_packet; /*!< Endpoint Max packet size.
Anna Bridge 160:5571c4ff569f 208 This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */
Anna Bridge 160:5571c4ff569f 209
Anna Bridge 160:5571c4ff569f 210 uint8_t data_pid; /*!< Initial data PID.
Anna Bridge 160:5571c4ff569f 211 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */
Anna Bridge 160:5571c4ff569f 212
Anna Bridge 160:5571c4ff569f 213 uint8_t *xfer_buff; /*!< Pointer to transfer buffer. */
Anna Bridge 160:5571c4ff569f 214
Anna Bridge 160:5571c4ff569f 215 uint32_t xfer_len; /*!< Current transfer length. */
Anna Bridge 160:5571c4ff569f 216
Anna Bridge 160:5571c4ff569f 217 uint32_t xfer_count; /*!< Partial transfer length in case of multi packet transfer. */
Anna Bridge 160:5571c4ff569f 218
Anna Bridge 160:5571c4ff569f 219 uint8_t toggle_in; /*!< IN transfer current toggle flag.
Anna Bridge 160:5571c4ff569f 220 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */
Anna Bridge 160:5571c4ff569f 221
Anna Bridge 160:5571c4ff569f 222 uint8_t toggle_out; /*!< OUT transfer current toggle flag
Anna Bridge 160:5571c4ff569f 223 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */
Anna Bridge 160:5571c4ff569f 224
Anna Bridge 160:5571c4ff569f 225 uint32_t dma_addr; /*!< 32 bits aligned transfer buffer address. */
Anna Bridge 160:5571c4ff569f 226
Anna Bridge 160:5571c4ff569f 227 uint32_t ErrCnt; /*!< Host channel error count.*/
Anna Bridge 160:5571c4ff569f 228
Anna Bridge 160:5571c4ff569f 229 USB_OTG_URBStateTypeDef urb_state; /*!< URB state.
Anna Bridge 160:5571c4ff569f 230 This parameter can be any value of @ref USB_OTG_URBStateTypeDef */
Anna Bridge 160:5571c4ff569f 231
Anna Bridge 160:5571c4ff569f 232 USB_OTG_HCStateTypeDef state; /*!< Host Channel state.
Anna Bridge 160:5571c4ff569f 233 This parameter can be any value of @ref USB_OTG_HCStateTypeDef */
Anna Bridge 160:5571c4ff569f 234
Anna Bridge 160:5571c4ff569f 235 }USB_OTG_HCTypeDef;
Anna Bridge 160:5571c4ff569f 236
Anna Bridge 160:5571c4ff569f 237 /* Exported constants --------------------------------------------------------*/
Anna Bridge 160:5571c4ff569f 238
Anna Bridge 160:5571c4ff569f 239 /** @defgroup PCD_Exported_Constants PCD Exported Constants
Anna Bridge 160:5571c4ff569f 240 * @{
Anna Bridge 160:5571c4ff569f 241 */
Anna Bridge 160:5571c4ff569f 242
Anna Bridge 160:5571c4ff569f 243 /** @defgroup USB_Core_Mode_ USB Core Mode
Anna Bridge 160:5571c4ff569f 244 * @{
Anna Bridge 160:5571c4ff569f 245 */
Anna Bridge 160:5571c4ff569f 246 #define USB_OTG_MODE_DEVICE 0U
Anna Bridge 160:5571c4ff569f 247 #define USB_OTG_MODE_HOST 1U
Anna Bridge 160:5571c4ff569f 248 #define USB_OTG_MODE_DRD 2U
Anna Bridge 160:5571c4ff569f 249 /**
Anna Bridge 160:5571c4ff569f 250 * @}
Anna Bridge 160:5571c4ff569f 251 */
Anna Bridge 160:5571c4ff569f 252
Anna Bridge 160:5571c4ff569f 253 /** @defgroup USB_Core_Speed_ USB Core Speed
Anna Bridge 160:5571c4ff569f 254 * @{
Anna Bridge 160:5571c4ff569f 255 */
Anna Bridge 160:5571c4ff569f 256 #define USB_OTG_SPEED_HIGH 0U
Anna Bridge 160:5571c4ff569f 257 #define USB_OTG_SPEED_HIGH_IN_FULL 1U
Anna Bridge 160:5571c4ff569f 258 #define USB_OTG_SPEED_LOW 2U
Anna Bridge 160:5571c4ff569f 259 #define USB_OTG_SPEED_FULL 3U
Anna Bridge 160:5571c4ff569f 260 /**
Anna Bridge 160:5571c4ff569f 261 * @}
Anna Bridge 160:5571c4ff569f 262 */
Anna Bridge 160:5571c4ff569f 263
Anna Bridge 160:5571c4ff569f 264 /** @defgroup USB_Core_PHY_ USB Core PHY
Anna Bridge 160:5571c4ff569f 265 * @{
Anna Bridge 160:5571c4ff569f 266 */
Anna Bridge 160:5571c4ff569f 267 #define USB_OTG_ULPI_PHY 1U
Anna Bridge 160:5571c4ff569f 268 #define USB_OTG_EMBEDDED_PHY 2U
Anna Bridge 160:5571c4ff569f 269 /**
Anna Bridge 160:5571c4ff569f 270 * @}
Anna Bridge 160:5571c4ff569f 271 */
Anna Bridge 160:5571c4ff569f 272
Anna Bridge 160:5571c4ff569f 273 /** @defgroup USB_Core_MPS_ USB Core MPS
Anna Bridge 160:5571c4ff569f 274 * @{
Anna Bridge 160:5571c4ff569f 275 */
Anna Bridge 160:5571c4ff569f 276 #define USB_OTG_HS_MAX_PACKET_SIZE 512U
Anna Bridge 160:5571c4ff569f 277 #define USB_OTG_FS_MAX_PACKET_SIZE 64U
Anna Bridge 160:5571c4ff569f 278 #define USB_OTG_MAX_EP0_SIZE 64U
Anna Bridge 160:5571c4ff569f 279 /**
Anna Bridge 160:5571c4ff569f 280 * @}
Anna Bridge 160:5571c4ff569f 281 */
Anna Bridge 160:5571c4ff569f 282
Anna Bridge 160:5571c4ff569f 283 /** @defgroup USB_Core_Phy_Frequency_ USB Core Phy Frequency
Anna Bridge 160:5571c4ff569f 284 * @{
Anna Bridge 160:5571c4ff569f 285 */
Anna Bridge 160:5571c4ff569f 286 #define DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ (0U << 1U)
Anna Bridge 160:5571c4ff569f 287 #define DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ (1U << 1U)
Anna Bridge 160:5571c4ff569f 288 #define DSTS_ENUMSPD_LS_PHY_6MHZ (2U << 1U)
Anna Bridge 160:5571c4ff569f 289 #define DSTS_ENUMSPD_FS_PHY_48MHZ (3U << 1U)
Anna Bridge 160:5571c4ff569f 290 /**
Anna Bridge 160:5571c4ff569f 291 * @}
Anna Bridge 160:5571c4ff569f 292 */
Anna Bridge 160:5571c4ff569f 293
Anna Bridge 160:5571c4ff569f 294 /** @defgroup USB_CORE_Frame_Interval_ USB CORE Frame Interval
Anna Bridge 160:5571c4ff569f 295 * @{
Anna Bridge 160:5571c4ff569f 296 */
Anna Bridge 160:5571c4ff569f 297 #define DCFG_FRAME_INTERVAL_80 0U
Anna Bridge 160:5571c4ff569f 298 #define DCFG_FRAME_INTERVAL_85 1U
Anna Bridge 160:5571c4ff569f 299 #define DCFG_FRAME_INTERVAL_90 2U
Anna Bridge 160:5571c4ff569f 300 #define DCFG_FRAME_INTERVAL_95 3U
Anna Bridge 160:5571c4ff569f 301 /**
Anna Bridge 160:5571c4ff569f 302 * @}
Anna Bridge 160:5571c4ff569f 303 */
Anna Bridge 160:5571c4ff569f 304
Anna Bridge 160:5571c4ff569f 305 /** @defgroup USB_EP0_MPS_ USB EP0 MPS
Anna Bridge 160:5571c4ff569f 306 * @{
Anna Bridge 160:5571c4ff569f 307 */
Anna Bridge 160:5571c4ff569f 308 #define DEP0CTL_MPS_64 0U
Anna Bridge 160:5571c4ff569f 309 #define DEP0CTL_MPS_32 1U
Anna Bridge 160:5571c4ff569f 310 #define DEP0CTL_MPS_16 2U
Anna Bridge 160:5571c4ff569f 311 #define DEP0CTL_MPS_8 3U
Anna Bridge 160:5571c4ff569f 312 /**
Anna Bridge 160:5571c4ff569f 313 * @}
Anna Bridge 160:5571c4ff569f 314 */
Anna Bridge 160:5571c4ff569f 315
Anna Bridge 160:5571c4ff569f 316 /** @defgroup USB_EP_Speed_ USB EP Speed
Anna Bridge 160:5571c4ff569f 317 * @{
Anna Bridge 160:5571c4ff569f 318 */
Anna Bridge 160:5571c4ff569f 319 #define EP_SPEED_LOW 0U
Anna Bridge 160:5571c4ff569f 320 #define EP_SPEED_FULL 1U
Anna Bridge 160:5571c4ff569f 321 #define EP_SPEED_HIGH 2U
Anna Bridge 160:5571c4ff569f 322 /**
Anna Bridge 160:5571c4ff569f 323 * @}
Anna Bridge 160:5571c4ff569f 324 */
Anna Bridge 160:5571c4ff569f 325
Anna Bridge 160:5571c4ff569f 326 /** @defgroup USB_EP_Type_ USB EP Type
Anna Bridge 160:5571c4ff569f 327 * @{
Anna Bridge 160:5571c4ff569f 328 */
Anna Bridge 160:5571c4ff569f 329 #define EP_TYPE_CTRL 0U
Anna Bridge 160:5571c4ff569f 330 #define EP_TYPE_ISOC 1U
Anna Bridge 160:5571c4ff569f 331 #define EP_TYPE_BULK 2U
Anna Bridge 160:5571c4ff569f 332 #define EP_TYPE_INTR 3U
Anna Bridge 160:5571c4ff569f 333 #define EP_TYPE_MSK 3U
Anna Bridge 160:5571c4ff569f 334 /**
Anna Bridge 160:5571c4ff569f 335 * @}
Anna Bridge 160:5571c4ff569f 336 */
Anna Bridge 160:5571c4ff569f 337
Anna Bridge 160:5571c4ff569f 338 /** @defgroup USB_STS_Defines_ USB STS Defines
Anna Bridge 160:5571c4ff569f 339 * @{
Anna Bridge 160:5571c4ff569f 340 */
Anna Bridge 160:5571c4ff569f 341 #define STS_GOUT_NAK 1U
Anna Bridge 160:5571c4ff569f 342 #define STS_DATA_UPDT 2U
Anna Bridge 160:5571c4ff569f 343 #define STS_XFER_COMP 3U
Anna Bridge 160:5571c4ff569f 344 #define STS_SETUP_COMP 4U
Anna Bridge 160:5571c4ff569f 345 #define STS_SETUP_UPDT 6U
Anna Bridge 160:5571c4ff569f 346 /**
Anna Bridge 160:5571c4ff569f 347 * @}
Anna Bridge 160:5571c4ff569f 348 */
Anna Bridge 160:5571c4ff569f 349
Anna Bridge 160:5571c4ff569f 350 /** @defgroup HCFG_SPEED_Defines_ HCFG SPEED Defines
Anna Bridge 160:5571c4ff569f 351 * @{
Anna Bridge 160:5571c4ff569f 352 */
Anna Bridge 160:5571c4ff569f 353 #define HCFG_30_60_MHZ 0U
Anna Bridge 160:5571c4ff569f 354 #define HCFG_48_MHZ 1U
Anna Bridge 160:5571c4ff569f 355 #define HCFG_6_MHZ 2U
Anna Bridge 160:5571c4ff569f 356 /**
Anna Bridge 160:5571c4ff569f 357 * @}
Anna Bridge 160:5571c4ff569f 358 */
Anna Bridge 160:5571c4ff569f 359
Anna Bridge 160:5571c4ff569f 360 /** @defgroup HPRT0_PRTSPD_SPEED_Defines_ HPRT0 PRTSPD SPEED Defines
Anna Bridge 160:5571c4ff569f 361 * @{
Anna Bridge 160:5571c4ff569f 362 */
Anna Bridge 160:5571c4ff569f 363 #define HPRT0_PRTSPD_HIGH_SPEED 0U
Anna Bridge 160:5571c4ff569f 364 #define HPRT0_PRTSPD_FULL_SPEED 1U
Anna Bridge 160:5571c4ff569f 365 #define HPRT0_PRTSPD_LOW_SPEED 2U
Anna Bridge 160:5571c4ff569f 366 /**
Anna Bridge 160:5571c4ff569f 367 * @}
Anna Bridge 160:5571c4ff569f 368 */
Anna Bridge 160:5571c4ff569f 369
Anna Bridge 160:5571c4ff569f 370 #define HCCHAR_CTRL 0U
Anna Bridge 160:5571c4ff569f 371 #define HCCHAR_ISOC 1U
Anna Bridge 160:5571c4ff569f 372 #define HCCHAR_BULK 2U
Anna Bridge 160:5571c4ff569f 373 #define HCCHAR_INTR 3U
Anna Bridge 160:5571c4ff569f 374
Anna Bridge 160:5571c4ff569f 375 #define HC_PID_DATA0 0U
Anna Bridge 160:5571c4ff569f 376 #define HC_PID_DATA2 1U
Anna Bridge 160:5571c4ff569f 377 #define HC_PID_DATA1 2U
Anna Bridge 160:5571c4ff569f 378 #define HC_PID_SETUP 3U
Anna Bridge 160:5571c4ff569f 379
Anna Bridge 160:5571c4ff569f 380 #define GRXSTS_PKTSTS_IN 2U
Anna Bridge 160:5571c4ff569f 381 #define GRXSTS_PKTSTS_IN_XFER_COMP 3U
Anna Bridge 160:5571c4ff569f 382 #define GRXSTS_PKTSTS_DATA_TOGGLE_ERR 5U
Anna Bridge 160:5571c4ff569f 383 #define GRXSTS_PKTSTS_CH_HALTED 7U
Anna Bridge 160:5571c4ff569f 384
Anna Bridge 160:5571c4ff569f 385 #define USBx_PCGCCTL *(__IO uint32_t *)((uint32_t)USBx + USB_OTG_PCGCCTL_BASE)
Anna Bridge 160:5571c4ff569f 386 #define USBx_HPRT0 *(__IO uint32_t *)((uint32_t)USBx + USB_OTG_HOST_PORT_BASE)
Anna Bridge 160:5571c4ff569f 387
Anna Bridge 160:5571c4ff569f 388 #define USBx_DEVICE ((USB_OTG_DeviceTypeDef *)((uint32_t )USBx + USB_OTG_DEVICE_BASE))
Anna Bridge 160:5571c4ff569f 389 #define USBx_INEP(i) ((USB_OTG_INEndpointTypeDef *)((uint32_t)USBx + USB_OTG_IN_ENDPOINT_BASE + (i)*USB_OTG_EP_REG_SIZE))
Anna Bridge 160:5571c4ff569f 390 #define USBx_OUTEP(i) ((USB_OTG_OUTEndpointTypeDef *)((uint32_t)USBx + USB_OTG_OUT_ENDPOINT_BASE + (i)*USB_OTG_EP_REG_SIZE))
Anna Bridge 160:5571c4ff569f 391 #define USBx_DFIFO(i) *(__IO uint32_t *)((uint32_t)USBx + USB_OTG_FIFO_BASE + (i) * USB_OTG_FIFO_SIZE)
Anna Bridge 160:5571c4ff569f 392
Anna Bridge 160:5571c4ff569f 393 #define USBx_HOST ((USB_OTG_HostTypeDef *)((uint32_t )USBx + USB_OTG_HOST_BASE))
Anna Bridge 160:5571c4ff569f 394 #define USBx_HC(i) ((USB_OTG_HostChannelTypeDef *)((uint32_t)USBx + USB_OTG_HOST_CHANNEL_BASE + (i)*USB_OTG_HOST_CHANNEL_SIZE))
Anna Bridge 160:5571c4ff569f 395 /**
Anna Bridge 160:5571c4ff569f 396 * @}
Anna Bridge 160:5571c4ff569f 397 */
Anna Bridge 160:5571c4ff569f 398 /* Exported macro ------------------------------------------------------------*/
Anna Bridge 160:5571c4ff569f 399 #define USB_MASK_INTERRUPT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->GINTMSK &= ~(__INTERRUPT__))
Anna Bridge 160:5571c4ff569f 400 #define USB_UNMASK_INTERRUPT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->GINTMSK |= (__INTERRUPT__))
Anna Bridge 160:5571c4ff569f 401
Anna Bridge 160:5571c4ff569f 402 #define CLEAR_IN_EP_INTR(__EPNUM__, __INTERRUPT__) (USBx_INEP(__EPNUM__)->DIEPINT = (__INTERRUPT__))
Anna Bridge 160:5571c4ff569f 403 #define CLEAR_OUT_EP_INTR(__EPNUM__, __INTERRUPT__) (USBx_OUTEP(__EPNUM__)->DOEPINT = (__INTERRUPT__))
Anna Bridge 160:5571c4ff569f 404
Anna Bridge 160:5571c4ff569f 405 /* Exported functions --------------------------------------------------------*/
Anna Bridge 160:5571c4ff569f 406 HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef Init);
Anna Bridge 160:5571c4ff569f 407 HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef Init);
Anna Bridge 160:5571c4ff569f 408 HAL_StatusTypeDef USB_EnableGlobalInt(USB_OTG_GlobalTypeDef *USBx);
Anna Bridge 160:5571c4ff569f 409 HAL_StatusTypeDef USB_DisableGlobalInt(USB_OTG_GlobalTypeDef *USBx);
Anna Bridge 160:5571c4ff569f 410 HAL_StatusTypeDef USB_SetCurrentMode(USB_OTG_GlobalTypeDef *USBx , USB_OTG_ModeTypeDef mode);
Anna Bridge 160:5571c4ff569f 411 HAL_StatusTypeDef USB_SetDevSpeed(USB_OTG_GlobalTypeDef *USBx , uint8_t speed);
Anna Bridge 160:5571c4ff569f 412 HAL_StatusTypeDef USB_FlushRxFifo (USB_OTG_GlobalTypeDef *USBx);
Anna Bridge 160:5571c4ff569f 413 HAL_StatusTypeDef USB_FlushTxFifo (USB_OTG_GlobalTypeDef *USBx, uint32_t num );
Anna Bridge 160:5571c4ff569f 414 HAL_StatusTypeDef USB_ActivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep);
Anna Bridge 160:5571c4ff569f 415 HAL_StatusTypeDef USB_DeactivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep);
Anna Bridge 160:5571c4ff569f 416 HAL_StatusTypeDef USB_ActivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep);
Anna Bridge 160:5571c4ff569f 417 HAL_StatusTypeDef USB_DeactivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep);
Anna Bridge 160:5571c4ff569f 418 HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx , USB_OTG_EPTypeDef *ep, uint8_t dma);
Anna Bridge 160:5571c4ff569f 419 HAL_StatusTypeDef USB_EP0StartXfer(USB_OTG_GlobalTypeDef *USBx , USB_OTG_EPTypeDef *ep, uint8_t dma);
Anna Bridge 160:5571c4ff569f 420 HAL_StatusTypeDef USB_WritePacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *src, uint8_t ch_ep_num, uint16_t len, uint8_t dma);
Anna Bridge 160:5571c4ff569f 421 void * USB_ReadPacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len);
Anna Bridge 160:5571c4ff569f 422 HAL_StatusTypeDef USB_EPSetStall(USB_OTG_GlobalTypeDef *USBx , USB_OTG_EPTypeDef *ep);
Anna Bridge 160:5571c4ff569f 423 HAL_StatusTypeDef USB_EPClearStall(USB_OTG_GlobalTypeDef *USBx , USB_OTG_EPTypeDef *ep);
Anna Bridge 160:5571c4ff569f 424 HAL_StatusTypeDef USB_SetDevAddress (USB_OTG_GlobalTypeDef *USBx, uint8_t address);
Anna Bridge 160:5571c4ff569f 425 HAL_StatusTypeDef USB_DevConnect (USB_OTG_GlobalTypeDef *USBx);
Anna Bridge 160:5571c4ff569f 426 HAL_StatusTypeDef USB_DevDisconnect (USB_OTG_GlobalTypeDef *USBx);
Anna Bridge 160:5571c4ff569f 427 HAL_StatusTypeDef USB_StopDevice(USB_OTG_GlobalTypeDef *USBx);
Anna Bridge 160:5571c4ff569f 428 HAL_StatusTypeDef USB_ActivateSetup (USB_OTG_GlobalTypeDef *USBx);
Anna Bridge 160:5571c4ff569f 429 HAL_StatusTypeDef USB_EP0_OutStart(USB_OTG_GlobalTypeDef *USBx, uint8_t dma, uint8_t *psetup);
Anna Bridge 160:5571c4ff569f 430 uint8_t USB_GetDevSpeed(USB_OTG_GlobalTypeDef *USBx);
Anna Bridge 160:5571c4ff569f 431 uint32_t USB_GetMode(USB_OTG_GlobalTypeDef *USBx);
Anna Bridge 160:5571c4ff569f 432 uint32_t USB_ReadInterrupts (USB_OTG_GlobalTypeDef *USBx);
Anna Bridge 160:5571c4ff569f 433 uint32_t USB_ReadDevAllOutEpInterrupt (USB_OTG_GlobalTypeDef *USBx);
Anna Bridge 160:5571c4ff569f 434 uint32_t USB_ReadDevOutEPInterrupt (USB_OTG_GlobalTypeDef *USBx , uint8_t epnum);
Anna Bridge 160:5571c4ff569f 435 uint32_t USB_ReadDevAllInEpInterrupt (USB_OTG_GlobalTypeDef *USBx);
Anna Bridge 160:5571c4ff569f 436 uint32_t USB_ReadDevInEPInterrupt (USB_OTG_GlobalTypeDef *USBx , uint8_t epnum);
Anna Bridge 160:5571c4ff569f 437 void USB_ClearInterrupts (USB_OTG_GlobalTypeDef *USBx, uint32_t interrupt);
Anna Bridge 160:5571c4ff569f 438
Anna Bridge 160:5571c4ff569f 439 HAL_StatusTypeDef USB_HostInit (USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg);
Anna Bridge 160:5571c4ff569f 440 HAL_StatusTypeDef USB_InitFSLSPClkSel(USB_OTG_GlobalTypeDef *USBx , uint8_t freq);
Anna Bridge 160:5571c4ff569f 441 HAL_StatusTypeDef USB_ResetPort(USB_OTG_GlobalTypeDef *USBx);
Anna Bridge 160:5571c4ff569f 442 HAL_StatusTypeDef USB_DriveVbus (USB_OTG_GlobalTypeDef *USBx, uint8_t state);
Anna Bridge 160:5571c4ff569f 443 uint32_t USB_GetHostSpeed (USB_OTG_GlobalTypeDef *USBx);
Anna Bridge 160:5571c4ff569f 444 uint32_t USB_GetCurrentFrame (USB_OTG_GlobalTypeDef *USBx);
Anna Bridge 160:5571c4ff569f 445 HAL_StatusTypeDef USB_HC_Init(USB_OTG_GlobalTypeDef *USBx,
Anna Bridge 160:5571c4ff569f 446 uint8_t ch_num,
Anna Bridge 160:5571c4ff569f 447 uint8_t epnum,
Anna Bridge 160:5571c4ff569f 448 uint8_t dev_address,
Anna Bridge 160:5571c4ff569f 449 uint8_t speed,
Anna Bridge 160:5571c4ff569f 450 uint8_t ep_type,
Anna Bridge 160:5571c4ff569f 451 uint16_t mps);
Anna Bridge 160:5571c4ff569f 452 HAL_StatusTypeDef USB_HC_StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_HCTypeDef *hc, uint8_t dma);
Anna Bridge 160:5571c4ff569f 453 uint32_t USB_HC_ReadInterrupt (USB_OTG_GlobalTypeDef *USBx);
Anna Bridge 160:5571c4ff569f 454 HAL_StatusTypeDef USB_HC_Halt(USB_OTG_GlobalTypeDef *USBx , uint8_t hc_num);
Anna Bridge 160:5571c4ff569f 455 HAL_StatusTypeDef USB_DoPing(USB_OTG_GlobalTypeDef *USBx , uint8_t ch_num);
Anna Bridge 160:5571c4ff569f 456 HAL_StatusTypeDef USB_StopHost(USB_OTG_GlobalTypeDef *USBx);
Anna Bridge 160:5571c4ff569f 457
Anna Bridge 160:5571c4ff569f 458 /**
Anna Bridge 160:5571c4ff569f 459 * @}
Anna Bridge 160:5571c4ff569f 460 */
Anna Bridge 160:5571c4ff569f 461
Anna Bridge 160:5571c4ff569f 462 /**
Anna Bridge 160:5571c4ff569f 463 * @}
Anna Bridge 160:5571c4ff569f 464 */
Anna Bridge 160:5571c4ff569f 465 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx ||
Anna Bridge 160:5571c4ff569f 466 STM32F401xC || STM32F401xE || STM32F411xE || STM32F446xx || STM32F469xx || STM32F479xx || STM32F412Zx || STM32F412Rx ||
Anna Bridge 160:5571c4ff569f 467 STM32F412Vx || STM32F412Cx || STM32F413xx || STM32F423xx */
Anna Bridge 160:5571c4ff569f 468 #ifdef __cplusplus
Anna Bridge 160:5571c4ff569f 469 }
Anna Bridge 160:5571c4ff569f 470 #endif
Anna Bridge 160:5571c4ff569f 471
Anna Bridge 160:5571c4ff569f 472
Anna Bridge 160:5571c4ff569f 473 #endif /* __STM32F4xx_LL_USB_H */
Anna Bridge 160:5571c4ff569f 474
Anna Bridge 160:5571c4ff569f 475 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/