File indexing completed on 2025-05-11 08:23:35
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #ifndef STM32H7xx_HAL_HCD_H
0021 #define STM32H7xx_HAL_HCD_H
0022
0023 #ifdef __cplusplus
0024 extern "C" {
0025 #endif
0026
0027
0028 #include "stm32h7xx_ll_usb.h"
0029
0030 #if defined (USB_OTG_FS) || defined (USB_OTG_HS)
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049 typedef enum
0050 {
0051 HAL_HCD_STATE_RESET = 0x00,
0052 HAL_HCD_STATE_READY = 0x01,
0053 HAL_HCD_STATE_ERROR = 0x02,
0054 HAL_HCD_STATE_BUSY = 0x03,
0055 HAL_HCD_STATE_TIMEOUT = 0x04
0056 } HCD_StateTypeDef;
0057
0058 typedef USB_OTG_GlobalTypeDef HCD_TypeDef;
0059 typedef USB_OTG_CfgTypeDef HCD_InitTypeDef;
0060 typedef USB_OTG_HCTypeDef HCD_HCTypeDef;
0061 typedef USB_OTG_URBStateTypeDef HCD_URBStateTypeDef;
0062 typedef USB_OTG_HCStateTypeDef HCD_HCStateTypeDef;
0063
0064
0065
0066
0067
0068
0069
0070
0071 #if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U)
0072 typedef struct __HCD_HandleTypeDef
0073 #else
0074 typedef struct
0075 #endif
0076 {
0077 HCD_TypeDef *Instance;
0078 HCD_InitTypeDef Init;
0079 HCD_HCTypeDef hc[16];
0080 HAL_LockTypeDef Lock;
0081 __IO HCD_StateTypeDef State;
0082 __IO uint32_t ErrorCode;
0083 void *pData;
0084 #if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U)
0085 void (* SOFCallback)(struct __HCD_HandleTypeDef *hhcd);
0086 void (* ConnectCallback)(struct __HCD_HandleTypeDef *hhcd);
0087 void (* DisconnectCallback)(struct __HCD_HandleTypeDef *hhcd);
0088 void (* PortEnabledCallback)(struct __HCD_HandleTypeDef *hhcd);
0089 void (* PortDisabledCallback)(struct __HCD_HandleTypeDef *hhcd);
0090 void (* HC_NotifyURBChangeCallback)(struct __HCD_HandleTypeDef *hhcd, uint8_t chnum,
0091 HCD_URBStateTypeDef urb_state);
0092
0093 void (* MspInitCallback)(struct __HCD_HandleTypeDef *hhcd);
0094 void (* MspDeInitCallback)(struct __HCD_HandleTypeDef *hhcd);
0095 #endif
0096 } HCD_HandleTypeDef;
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115 #define HCD_SPEED_HIGH USBH_HS_SPEED
0116 #define HCD_SPEED_FULL USBH_FSLS_SPEED
0117 #define HCD_SPEED_LOW USBH_FSLS_SPEED
0118
0119
0120
0121
0122
0123
0124
0125
0126 #define HCD_DEVICE_SPEED_HIGH 0U
0127 #define HCD_DEVICE_SPEED_FULL 1U
0128 #define HCD_DEVICE_SPEED_LOW 2U
0129
0130
0131
0132
0133
0134
0135
0136
0137 #define HCD_PHY_ULPI 1U
0138 #define HCD_PHY_EMBEDDED 2U
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148 #if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U)
0149 #define HAL_HCD_ERROR_INVALID_CALLBACK (0x00000010U)
0150 #endif
0151
0152
0153
0154
0155
0156
0157
0158
0159
0160
0161
0162
0163
0164
0165
0166 #define __HAL_HCD_ENABLE(__HANDLE__) (void)USB_EnableGlobalInt ((__HANDLE__)->Instance)
0167 #define __HAL_HCD_DISABLE(__HANDLE__) (void)USB_DisableGlobalInt ((__HANDLE__)->Instance)
0168
0169 #define __HAL_HCD_GET_FLAG(__HANDLE__, __INTERRUPT__) ((USB_ReadInterrupts((__HANDLE__)->Instance)\
0170 & (__INTERRUPT__)) == (__INTERRUPT__))
0171
0172 #define __HAL_HCD_GET_CH_FLAG(__HANDLE__, __chnum__, __INTERRUPT__) \
0173 ((USB_ReadChInterrupts((__HANDLE__)->Instance, (__chnum__)) & (__INTERRUPT__)) == (__INTERRUPT__))
0174
0175 #define __HAL_HCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->GINTSTS) = (__INTERRUPT__))
0176 #define __HAL_HCD_IS_INVALID_INTERRUPT(__HANDLE__) (USB_ReadInterrupts((__HANDLE__)->Instance) == 0U)
0177
0178 #define __HAL_HCD_CLEAR_HC_INT(chnum, __INTERRUPT__) (USBx_HC(chnum)->HCINT = (__INTERRUPT__))
0179 #define __HAL_HCD_MASK_HALT_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINTMSK_CHHM)
0180 #define __HAL_HCD_UNMASK_HALT_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_CHHM)
0181 #define __HAL_HCD_MASK_ACK_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINTMSK_ACKM)
0182 #define __HAL_HCD_UNMASK_ACK_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_ACKM)
0183 #define __HAL_HCD_SET_HC_CSPLT(chnum) (USBx_HC(chnum)->HCSPLT |= USB_OTG_HCSPLT_COMPLSPLT)
0184 #define __HAL_HCD_CLEAR_HC_CSPLT(chnum) (USBx_HC(chnum)->HCSPLT &= ~USB_OTG_HCSPLT_COMPLSPLT)
0185 #define __HAL_HCD_CLEAR_HC_SSPLT(chnum) (USBx_HC(chnum)->HCSPLT &= ~USB_OTG_HCSPLT_SPLITEN)
0186
0187
0188
0189
0190
0191
0192
0193
0194
0195
0196
0197
0198
0199 HAL_StatusTypeDef HAL_HCD_Init(HCD_HandleTypeDef *hhcd);
0200 HAL_StatusTypeDef HAL_HCD_DeInit(HCD_HandleTypeDef *hhcd);
0201 HAL_StatusTypeDef HAL_HCD_HC_Init(HCD_HandleTypeDef *hhcd, uint8_t ch_num,
0202 uint8_t epnum, uint8_t dev_address,
0203 uint8_t speed, uint8_t ep_type, uint16_t mps);
0204
0205 HAL_StatusTypeDef HAL_HCD_HC_Halt(HCD_HandleTypeDef *hhcd, uint8_t ch_num);
0206 void HAL_HCD_MspInit(HCD_HandleTypeDef *hhcd);
0207 void HAL_HCD_MspDeInit(HCD_HandleTypeDef *hhcd);
0208
0209 #if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U)
0210
0211
0212
0213
0214
0215 typedef enum
0216 {
0217 HAL_HCD_SOF_CB_ID = 0x01,
0218 HAL_HCD_CONNECT_CB_ID = 0x02,
0219 HAL_HCD_DISCONNECT_CB_ID = 0x03,
0220 HAL_HCD_PORT_ENABLED_CB_ID = 0x04,
0221 HAL_HCD_PORT_DISABLED_CB_ID = 0x05,
0222
0223 HAL_HCD_MSPINIT_CB_ID = 0x06,
0224 HAL_HCD_MSPDEINIT_CB_ID = 0x07
0225
0226 } HAL_HCD_CallbackIDTypeDef;
0227
0228
0229
0230
0231
0232
0233
0234
0235
0236
0237 typedef void (*pHCD_CallbackTypeDef)(HCD_HandleTypeDef *hhcd);
0238 typedef void (*pHCD_HC_NotifyURBChangeCallbackTypeDef)(HCD_HandleTypeDef *hhcd,
0239 uint8_t epnum,
0240 HCD_URBStateTypeDef urb_state);
0241
0242
0243
0244
0245 HAL_StatusTypeDef HAL_HCD_RegisterCallback(HCD_HandleTypeDef *hhcd,
0246 HAL_HCD_CallbackIDTypeDef CallbackID,
0247 pHCD_CallbackTypeDef pCallback);
0248
0249 HAL_StatusTypeDef HAL_HCD_UnRegisterCallback(HCD_HandleTypeDef *hhcd,
0250 HAL_HCD_CallbackIDTypeDef CallbackID);
0251
0252 HAL_StatusTypeDef HAL_HCD_RegisterHC_NotifyURBChangeCallback(HCD_HandleTypeDef *hhcd,
0253 pHCD_HC_NotifyURBChangeCallbackTypeDef pCallback);
0254
0255 HAL_StatusTypeDef HAL_HCD_UnRegisterHC_NotifyURBChangeCallback(HCD_HandleTypeDef *hhcd);
0256 #endif
0257
0258
0259
0260
0261
0262
0263
0264
0265 HAL_StatusTypeDef HAL_HCD_HC_SubmitRequest(HCD_HandleTypeDef *hhcd, uint8_t ch_num,
0266 uint8_t direction, uint8_t ep_type,
0267 uint8_t token, uint8_t *pbuff,
0268 uint16_t length, uint8_t do_ping);
0269
0270 HAL_StatusTypeDef HAL_HCD_HC_SetHubInfo(HCD_HandleTypeDef *hhcd, uint8_t ch_num,
0271 uint8_t addr, uint8_t PortNbr);
0272
0273 HAL_StatusTypeDef HAL_HCD_HC_ClearHubInfo(HCD_HandleTypeDef *hhcd, uint8_t ch_num);
0274
0275
0276 void HAL_HCD_IRQHandler(HCD_HandleTypeDef *hhcd);
0277 void HAL_HCD_SOF_Callback(HCD_HandleTypeDef *hhcd);
0278 void HAL_HCD_Connect_Callback(HCD_HandleTypeDef *hhcd);
0279 void HAL_HCD_Disconnect_Callback(HCD_HandleTypeDef *hhcd);
0280 void HAL_HCD_PortEnabled_Callback(HCD_HandleTypeDef *hhcd);
0281 void HAL_HCD_PortDisabled_Callback(HCD_HandleTypeDef *hhcd);
0282 void HAL_HCD_HC_NotifyURBChange_Callback(HCD_HandleTypeDef *hhcd, uint8_t chnum,
0283 HCD_URBStateTypeDef urb_state);
0284
0285
0286
0287
0288
0289
0290
0291
0292 HAL_StatusTypeDef HAL_HCD_ResetPort(HCD_HandleTypeDef *hhcd);
0293 HAL_StatusTypeDef HAL_HCD_Start(HCD_HandleTypeDef *hhcd);
0294 HAL_StatusTypeDef HAL_HCD_Stop(HCD_HandleTypeDef *hhcd);
0295
0296
0297
0298
0299
0300
0301
0302
0303 HCD_StateTypeDef HAL_HCD_GetState(HCD_HandleTypeDef const *hhcd);
0304 HCD_URBStateTypeDef HAL_HCD_HC_GetURBState(HCD_HandleTypeDef const *hhcd, uint8_t chnum);
0305 HCD_HCStateTypeDef HAL_HCD_HC_GetState(HCD_HandleTypeDef const *hhcd, uint8_t chnum);
0306 uint32_t HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef const *hhcd, uint8_t chnum);
0307 uint32_t HAL_HCD_GetCurrentFrame(HCD_HandleTypeDef *hhcd);
0308 uint32_t HAL_HCD_GetCurrentSpeed(HCD_HandleTypeDef *hhcd);
0309
0310
0311
0312
0313
0314
0315
0316
0317
0318
0319
0320
0321
0322
0323
0324
0325
0326
0327
0328
0329
0330
0331
0332
0333
0334 #endif
0335
0336 #ifdef __cplusplus
0337 }
0338 #endif
0339
0340 #endif