Aditya Mehrotra / mbed-dev

Dependents:   CAN_TEST SPIne_Plus_DYNO_SENSORS SPIne_Plus_v2 SPIne_Plus_Dyno_v2

Committer:
adimmit
Date:
Tue Mar 09 20:33:24 2021 +0000
Revision:
3:993b4d6ff61e
Parent:
0:083111ae2a11
added CAN3

Who changed what in which revision?

UserRevisionLine numberNew contents of line
saloutos 0:083111ae2a11 1 /**
saloutos 0:083111ae2a11 2 ******************************************************************************
saloutos 0:083111ae2a11 3 * @file stm32f7xx_hal_hcd.h
saloutos 0:083111ae2a11 4 * @author MCD Application Team
saloutos 0:083111ae2a11 5 * @version V1.2.2
saloutos 0:083111ae2a11 6 * @date 14-April-2017
saloutos 0:083111ae2a11 7 * @brief Header file of HCD HAL module.
saloutos 0:083111ae2a11 8 ******************************************************************************
saloutos 0:083111ae2a11 9 * @attention
saloutos 0:083111ae2a11 10 *
saloutos 0:083111ae2a11 11 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
saloutos 0:083111ae2a11 12 *
saloutos 0:083111ae2a11 13 * Redistribution and use in source and binary forms, with or without modification,
saloutos 0:083111ae2a11 14 * are permitted provided that the following conditions are met:
saloutos 0:083111ae2a11 15 * 1. Redistributions of source code must retain the above copyright notice,
saloutos 0:083111ae2a11 16 * this list of conditions and the following disclaimer.
saloutos 0:083111ae2a11 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
saloutos 0:083111ae2a11 18 * this list of conditions and the following disclaimer in the documentation
saloutos 0:083111ae2a11 19 * and/or other materials provided with the distribution.
saloutos 0:083111ae2a11 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
saloutos 0:083111ae2a11 21 * may be used to endorse or promote products derived from this software
saloutos 0:083111ae2a11 22 * without specific prior written permission.
saloutos 0:083111ae2a11 23 *
saloutos 0:083111ae2a11 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
saloutos 0:083111ae2a11 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
saloutos 0:083111ae2a11 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
saloutos 0:083111ae2a11 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
saloutos 0:083111ae2a11 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
saloutos 0:083111ae2a11 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
saloutos 0:083111ae2a11 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
saloutos 0:083111ae2a11 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
saloutos 0:083111ae2a11 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
saloutos 0:083111ae2a11 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
saloutos 0:083111ae2a11 34 *
saloutos 0:083111ae2a11 35 ******************************************************************************
saloutos 0:083111ae2a11 36 */
saloutos 0:083111ae2a11 37
saloutos 0:083111ae2a11 38 /* Define to prevent recursive inclusion -------------------------------------*/
saloutos 0:083111ae2a11 39 #ifndef __STM32F7xx_HAL_HCD_H
saloutos 0:083111ae2a11 40 #define __STM32F7xx_HAL_HCD_H
saloutos 0:083111ae2a11 41
saloutos 0:083111ae2a11 42 #ifdef __cplusplus
saloutos 0:083111ae2a11 43 extern "C" {
saloutos 0:083111ae2a11 44 #endif
saloutos 0:083111ae2a11 45
saloutos 0:083111ae2a11 46 /* Includes ------------------------------------------------------------------*/
saloutos 0:083111ae2a11 47 #include "stm32f7xx_ll_usb.h"
saloutos 0:083111ae2a11 48
saloutos 0:083111ae2a11 49 /** @addtogroup STM32F7xx_HAL_Driver
saloutos 0:083111ae2a11 50 * @{
saloutos 0:083111ae2a11 51 */
saloutos 0:083111ae2a11 52
saloutos 0:083111ae2a11 53 /** @defgroup HCD HCD
saloutos 0:083111ae2a11 54 * @brief HCD HAL module driver
saloutos 0:083111ae2a11 55 * @{
saloutos 0:083111ae2a11 56 */
saloutos 0:083111ae2a11 57
saloutos 0:083111ae2a11 58 /* Exported types ------------------------------------------------------------*/
saloutos 0:083111ae2a11 59 /** @defgroup HCD_Exported_Types HCD Exported Types
saloutos 0:083111ae2a11 60 * @{
saloutos 0:083111ae2a11 61 */
saloutos 0:083111ae2a11 62
saloutos 0:083111ae2a11 63 /** @defgroup HCD_Exported_Types_Group1 HCD State Structure definition
saloutos 0:083111ae2a11 64 * @{
saloutos 0:083111ae2a11 65 */
saloutos 0:083111ae2a11 66 typedef enum
saloutos 0:083111ae2a11 67 {
saloutos 0:083111ae2a11 68 HAL_HCD_STATE_RESET = 0x00U,
saloutos 0:083111ae2a11 69 HAL_HCD_STATE_READY = 0x01U,
saloutos 0:083111ae2a11 70 HAL_HCD_STATE_ERROR = 0x02U,
saloutos 0:083111ae2a11 71 HAL_HCD_STATE_BUSY = 0x03U,
saloutos 0:083111ae2a11 72 HAL_HCD_STATE_TIMEOUT = 0x04U
saloutos 0:083111ae2a11 73 } HCD_StateTypeDef;
saloutos 0:083111ae2a11 74
saloutos 0:083111ae2a11 75 typedef USB_OTG_GlobalTypeDef HCD_TypeDef;
saloutos 0:083111ae2a11 76 typedef USB_OTG_CfgTypeDef HCD_InitTypeDef;
saloutos 0:083111ae2a11 77 typedef USB_OTG_HCTypeDef HCD_HCTypeDef ;
saloutos 0:083111ae2a11 78 typedef USB_OTG_URBStateTypeDef HCD_URBStateTypeDef ;
saloutos 0:083111ae2a11 79 typedef USB_OTG_HCStateTypeDef HCD_HCStateTypeDef ;
saloutos 0:083111ae2a11 80 /**
saloutos 0:083111ae2a11 81 * @}
saloutos 0:083111ae2a11 82 */
saloutos 0:083111ae2a11 83
saloutos 0:083111ae2a11 84 /** @defgroup HCD_Exported_Types_Group2 HCD Handle Structure definition
saloutos 0:083111ae2a11 85 * @{
saloutos 0:083111ae2a11 86 */
saloutos 0:083111ae2a11 87 typedef struct
saloutos 0:083111ae2a11 88 {
saloutos 0:083111ae2a11 89 HCD_TypeDef *Instance; /*!< Register base address */
saloutos 0:083111ae2a11 90 HCD_InitTypeDef Init; /*!< HCD required parameters */
saloutos 0:083111ae2a11 91 HCD_HCTypeDef hc[15]; /*!< Host channels parameters */
saloutos 0:083111ae2a11 92 HAL_LockTypeDef Lock; /*!< HCD peripheral status */
saloutos 0:083111ae2a11 93 __IO HCD_StateTypeDef State; /*!< HCD communication state */
saloutos 0:083111ae2a11 94 void *pData; /*!< Pointer Stack Handler */
saloutos 0:083111ae2a11 95 } HCD_HandleTypeDef;
saloutos 0:083111ae2a11 96 /**
saloutos 0:083111ae2a11 97 * @}
saloutos 0:083111ae2a11 98 */
saloutos 0:083111ae2a11 99
saloutos 0:083111ae2a11 100 /**
saloutos 0:083111ae2a11 101 * @}
saloutos 0:083111ae2a11 102 */
saloutos 0:083111ae2a11 103
saloutos 0:083111ae2a11 104 /* Exported constants --------------------------------------------------------*/
saloutos 0:083111ae2a11 105 /** @defgroup HCD_Exported_Constants HCD Exported Constants
saloutos 0:083111ae2a11 106 * @{
saloutos 0:083111ae2a11 107 */
saloutos 0:083111ae2a11 108
saloutos 0:083111ae2a11 109 /** @defgroup HCD_Speed HCD Speed
saloutos 0:083111ae2a11 110 * @{
saloutos 0:083111ae2a11 111 */
saloutos 0:083111ae2a11 112 #define HCD_SPEED_HIGH 0U
saloutos 0:083111ae2a11 113 #define HCD_SPEED_LOW 2U
saloutos 0:083111ae2a11 114 #define HCD_SPEED_FULL 3U
saloutos 0:083111ae2a11 115 /**
saloutos 0:083111ae2a11 116 * @}
saloutos 0:083111ae2a11 117 */
saloutos 0:083111ae2a11 118
saloutos 0:083111ae2a11 119 /** @defgroup HCD_PHY_Module HCD PHY Module
saloutos 0:083111ae2a11 120 * @{
saloutos 0:083111ae2a11 121 */
saloutos 0:083111ae2a11 122 #define HCD_PHY_ULPI 1U
saloutos 0:083111ae2a11 123 #define HCD_PHY_EMBEDDED 2U
saloutos 0:083111ae2a11 124 /**
saloutos 0:083111ae2a11 125 * @}
saloutos 0:083111ae2a11 126 */
saloutos 0:083111ae2a11 127
saloutos 0:083111ae2a11 128 /**
saloutos 0:083111ae2a11 129 * @}
saloutos 0:083111ae2a11 130 */
saloutos 0:083111ae2a11 131
saloutos 0:083111ae2a11 132 /* Exported macro ------------------------------------------------------------*/
saloutos 0:083111ae2a11 133 /** @defgroup HCD_Exported_Macros HCD Exported Macros
saloutos 0:083111ae2a11 134 * @brief macros to handle interrupts and specific clock configurations
saloutos 0:083111ae2a11 135 * @{
saloutos 0:083111ae2a11 136 */
saloutos 0:083111ae2a11 137 #define __HAL_HCD_ENABLE(__HANDLE__) USB_EnableGlobalInt ((__HANDLE__)->Instance)
saloutos 0:083111ae2a11 138 #define __HAL_HCD_DISABLE(__HANDLE__) USB_DisableGlobalInt ((__HANDLE__)->Instance)
saloutos 0:083111ae2a11 139
saloutos 0:083111ae2a11 140 #define __HAL_HCD_GET_FLAG(__HANDLE__, __INTERRUPT__) ((USB_ReadInterrupts((__HANDLE__)->Instance) & (__INTERRUPT__)) == (__INTERRUPT__))
saloutos 0:083111ae2a11 141 #define __HAL_HCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->GINTSTS) = (__INTERRUPT__))
saloutos 0:083111ae2a11 142 #define __HAL_HCD_IS_INVALID_INTERRUPT(__HANDLE__) (USB_ReadInterrupts((__HANDLE__)->Instance) == 0U)
saloutos 0:083111ae2a11 143
saloutos 0:083111ae2a11 144 #define __HAL_HCD_CLEAR_HC_INT(chnum, __INTERRUPT__) (USBx_HC(chnum)->HCINT = (__INTERRUPT__))
saloutos 0:083111ae2a11 145 #define __HAL_HCD_MASK_HALT_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINTMSK_CHHM)
saloutos 0:083111ae2a11 146 #define __HAL_HCD_UNMASK_HALT_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_CHHM)
saloutos 0:083111ae2a11 147 #define __HAL_HCD_MASK_ACK_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINTMSK_ACKM)
saloutos 0:083111ae2a11 148 #define __HAL_HCD_UNMASK_ACK_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_ACKM)
saloutos 0:083111ae2a11 149 /**
saloutos 0:083111ae2a11 150 * @}
saloutos 0:083111ae2a11 151 */
saloutos 0:083111ae2a11 152
saloutos 0:083111ae2a11 153 /* Exported functions --------------------------------------------------------*/
saloutos 0:083111ae2a11 154 /** @addtogroup HCD_Exported_Functions HCD Exported Functions
saloutos 0:083111ae2a11 155 * @{
saloutos 0:083111ae2a11 156 */
saloutos 0:083111ae2a11 157
saloutos 0:083111ae2a11 158 /** @defgroup HCD_Exported_Functions_Group1 Initialization and de-initialization functions
saloutos 0:083111ae2a11 159 * @{
saloutos 0:083111ae2a11 160 */
saloutos 0:083111ae2a11 161 HAL_StatusTypeDef HAL_HCD_Init(HCD_HandleTypeDef *hhcd);
saloutos 0:083111ae2a11 162 HAL_StatusTypeDef HAL_HCD_DeInit (HCD_HandleTypeDef *hhcd);
saloutos 0:083111ae2a11 163 HAL_StatusTypeDef HAL_HCD_HC_Init(HCD_HandleTypeDef *hhcd,
saloutos 0:083111ae2a11 164 uint8_t ch_num,
saloutos 0:083111ae2a11 165 uint8_t epnum,
saloutos 0:083111ae2a11 166 uint8_t dev_address,
saloutos 0:083111ae2a11 167 uint8_t speed,
saloutos 0:083111ae2a11 168 uint8_t ep_type,
saloutos 0:083111ae2a11 169 uint16_t mps);
saloutos 0:083111ae2a11 170
saloutos 0:083111ae2a11 171 HAL_StatusTypeDef HAL_HCD_HC_Halt(HCD_HandleTypeDef *hhcd, uint8_t ch_num);
saloutos 0:083111ae2a11 172 void HAL_HCD_MspInit(HCD_HandleTypeDef *hhcd);
saloutos 0:083111ae2a11 173 void HAL_HCD_MspDeInit(HCD_HandleTypeDef *hhcd);
saloutos 0:083111ae2a11 174 /**
saloutos 0:083111ae2a11 175 * @}
saloutos 0:083111ae2a11 176 */
saloutos 0:083111ae2a11 177
saloutos 0:083111ae2a11 178 /* I/O operation functions ***************************************************/
saloutos 0:083111ae2a11 179 /** @addtogroup HCD_Exported_Functions_Group2 Input and Output operation functions
saloutos 0:083111ae2a11 180 * @{
saloutos 0:083111ae2a11 181 */
saloutos 0:083111ae2a11 182 HAL_StatusTypeDef HAL_HCD_HC_SubmitRequest(HCD_HandleTypeDef *hhcd,
saloutos 0:083111ae2a11 183 uint8_t pipe,
saloutos 0:083111ae2a11 184 uint8_t direction ,
saloutos 0:083111ae2a11 185 uint8_t ep_type,
saloutos 0:083111ae2a11 186 uint8_t token,
saloutos 0:083111ae2a11 187 uint8_t* pbuff,
saloutos 0:083111ae2a11 188 uint16_t length,
saloutos 0:083111ae2a11 189 uint8_t do_ping);
saloutos 0:083111ae2a11 190
saloutos 0:083111ae2a11 191 /* Non-Blocking mode: Interrupt */
saloutos 0:083111ae2a11 192 void HAL_HCD_IRQHandler(HCD_HandleTypeDef *hhcd);
saloutos 0:083111ae2a11 193 void HAL_HCD_SOF_Callback(HCD_HandleTypeDef *hhcd);
saloutos 0:083111ae2a11 194 void HAL_HCD_Connect_Callback(HCD_HandleTypeDef *hhcd);
saloutos 0:083111ae2a11 195 void HAL_HCD_Disconnect_Callback(HCD_HandleTypeDef *hhcd);
saloutos 0:083111ae2a11 196 void HAL_HCD_HC_NotifyURBChange_Callback(HCD_HandleTypeDef *hhcd,
saloutos 0:083111ae2a11 197 uint8_t chnum,
saloutos 0:083111ae2a11 198 HCD_URBStateTypeDef urb_state);
saloutos 0:083111ae2a11 199 /**
saloutos 0:083111ae2a11 200 * @}
saloutos 0:083111ae2a11 201 */
saloutos 0:083111ae2a11 202
saloutos 0:083111ae2a11 203 /* Peripheral Control functions **********************************************/
saloutos 0:083111ae2a11 204 /** @addtogroup HCD_Exported_Functions_Group3 Peripheral Control functions
saloutos 0:083111ae2a11 205 * @{
saloutos 0:083111ae2a11 206 */
saloutos 0:083111ae2a11 207 HAL_StatusTypeDef HAL_HCD_ResetPort(HCD_HandleTypeDef *hhcd);
saloutos 0:083111ae2a11 208 HAL_StatusTypeDef HAL_HCD_Start(HCD_HandleTypeDef *hhcd);
saloutos 0:083111ae2a11 209 HAL_StatusTypeDef HAL_HCD_Stop(HCD_HandleTypeDef *hhcd);
saloutos 0:083111ae2a11 210 /**
saloutos 0:083111ae2a11 211 * @}
saloutos 0:083111ae2a11 212 */
saloutos 0:083111ae2a11 213
saloutos 0:083111ae2a11 214 /* Peripheral State functions ************************************************/
saloutos 0:083111ae2a11 215 /** @addtogroup HCD_Exported_Functions_Group4 Peripheral State functions
saloutos 0:083111ae2a11 216 * @{
saloutos 0:083111ae2a11 217 */
saloutos 0:083111ae2a11 218 HCD_StateTypeDef HAL_HCD_GetState(HCD_HandleTypeDef *hhcd);
saloutos 0:083111ae2a11 219 HCD_URBStateTypeDef HAL_HCD_HC_GetURBState(HCD_HandleTypeDef *hhcd, uint8_t chnum);
saloutos 0:083111ae2a11 220 uint32_t HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef *hhcd, uint8_t chnum);
saloutos 0:083111ae2a11 221 HCD_HCStateTypeDef HAL_HCD_HC_GetState(HCD_HandleTypeDef *hhcd, uint8_t chnum);
saloutos 0:083111ae2a11 222 uint32_t HAL_HCD_GetCurrentFrame(HCD_HandleTypeDef *hhcd);
saloutos 0:083111ae2a11 223 uint32_t HAL_HCD_GetCurrentSpeed(HCD_HandleTypeDef *hhcd);
saloutos 0:083111ae2a11 224 /**
saloutos 0:083111ae2a11 225 * @}
saloutos 0:083111ae2a11 226 */
saloutos 0:083111ae2a11 227
saloutos 0:083111ae2a11 228 /**
saloutos 0:083111ae2a11 229 * @}
saloutos 0:083111ae2a11 230 */
saloutos 0:083111ae2a11 231
saloutos 0:083111ae2a11 232 /* Private macros ------------------------------------------------------------*/
saloutos 0:083111ae2a11 233 /** @defgroup HCD_Private_Macros HCD Private Macros
saloutos 0:083111ae2a11 234 * @{
saloutos 0:083111ae2a11 235 */
saloutos 0:083111ae2a11 236 /** @defgroup HCD_Instance_definition HCD Instance definition
saloutos 0:083111ae2a11 237 * @{
saloutos 0:083111ae2a11 238 */
saloutos 0:083111ae2a11 239 #define IS_HCD_ALL_INSTANCE(INSTANCE) (((INSTANCE) == USB_OTG_FS) || \
saloutos 0:083111ae2a11 240 ((INSTANCE) == USB_OTG_HS))
saloutos 0:083111ae2a11 241 /**
saloutos 0:083111ae2a11 242 * @}
saloutos 0:083111ae2a11 243 */
saloutos 0:083111ae2a11 244
saloutos 0:083111ae2a11 245 /**
saloutos 0:083111ae2a11 246 * @}
saloutos 0:083111ae2a11 247 */
saloutos 0:083111ae2a11 248
saloutos 0:083111ae2a11 249 /* Private functions prototypes ----------------------------------------------*/
saloutos 0:083111ae2a11 250 /** @defgroup HCD_Private_Functions_Prototypes HCD Private Functions Prototypes
saloutos 0:083111ae2a11 251 * @{
saloutos 0:083111ae2a11 252 */
saloutos 0:083111ae2a11 253
saloutos 0:083111ae2a11 254 /**
saloutos 0:083111ae2a11 255 * @}
saloutos 0:083111ae2a11 256 */
saloutos 0:083111ae2a11 257
saloutos 0:083111ae2a11 258 /* Private functions ---------------------------------------------------------*/
saloutos 0:083111ae2a11 259 /** @defgroup HCD_Private_Functions HCD Private Functions
saloutos 0:083111ae2a11 260 * @{
saloutos 0:083111ae2a11 261 */
saloutos 0:083111ae2a11 262
saloutos 0:083111ae2a11 263 /**
saloutos 0:083111ae2a11 264 * @}
saloutos 0:083111ae2a11 265 */
saloutos 0:083111ae2a11 266
saloutos 0:083111ae2a11 267 /**
saloutos 0:083111ae2a11 268 * @}
saloutos 0:083111ae2a11 269 */
saloutos 0:083111ae2a11 270
saloutos 0:083111ae2a11 271 /**
saloutos 0:083111ae2a11 272 * @}
saloutos 0:083111ae2a11 273 */
saloutos 0:083111ae2a11 274
saloutos 0:083111ae2a11 275 #ifdef __cplusplus
saloutos 0:083111ae2a11 276 }
saloutos 0:083111ae2a11 277 #endif
saloutos 0:083111ae2a11 278
saloutos 0:083111ae2a11 279 #endif /* __STM32F7xx_HAL_HCD_H */
saloutos 0:083111ae2a11 280
saloutos 0:083111ae2a11 281 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/