35 #ifdef HAL_PCD_MODULE_ENABLED
37 #if defined (USB_OTG_FS) || defined (USB_OTG_HS)
62 #if defined (USB_OTG_FS) || defined (USB_OTG_HS)
85 Tx_Offset = hpcd->Instance->GRXFSIZ;
89 hpcd->Instance->DIEPTXF0_HNPTXFSIZ = ((uint32_t)size << 16) | Tx_Offset;
93 Tx_Offset += (hpcd->Instance->DIEPTXF0_HNPTXFSIZ) >> 16;
94 for (i = 0U; i < (fifo - 1U); i++)
96 Tx_Offset += (hpcd->Instance->DIEPTXF[i] >> 16);
100 hpcd->Instance->DIEPTXF[fifo - 1U] = ((uint32_t)size << 16) | Tx_Offset;
114 hpcd->Instance->GRXFSIZ = size;
118 #if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) \
119 || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) \
120 || defined(STM32F423xx)
128 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
130 hpcd->lpm_active = 1U;
131 hpcd->LPM_State = LPM_L0;
132 USBx->GINTMSK |= USB_OTG_GINTMSK_LPMINTM;
133 USBx->GLPMCFG |= (USB_OTG_GLPMCFG_LPMEN | USB_OTG_GLPMCFG_LPMACK | USB_OTG_GLPMCFG_ENBESL);
145 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
147 hpcd->lpm_active = 0U;
148 USBx->GINTMSK &= ~USB_OTG_GINTMSK_LPMINTM;
149 USBx->GLPMCFG &= ~(USB_OTG_GLPMCFG_LPMEN | USB_OTG_GLPMCFG_LPMACK | USB_OTG_GLPMCFG_ENBESL);
156 #if defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) \
157 || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
165 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
169 USBx->GCCFG |= USB_OTG_GCCFG_DCDEN;
175 if ((USBx->GCCFG & USB_OTG_GCCFG_DCDET) == USB_OTG_GCCFG_DCDET)
177 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
178 hpcd->BCDCallback(hpcd, PCD_BCD_CONTACT_DETECTION);
186 USBx->GCCFG &= ~USB_OTG_GCCFG_DCDEN;
188 USBx->GCCFG |= USB_OTG_GCCFG_PDEN;
191 if ((USBx->GCCFG & USB_OTG_GCCFG_PDET) == 0U)
194 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
195 hpcd->BCDCallback(hpcd, PCD_BCD_STD_DOWNSTREAM_PORT);
204 USBx->GCCFG &= ~(USB_OTG_GCCFG_PDEN);
206 USBx->GCCFG |= USB_OTG_GCCFG_SDEN;
209 if ((USBx->GCCFG & USB_OTG_GCCFG_SDET) == USB_OTG_GCCFG_SDET)
212 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
213 hpcd->BCDCallback(hpcd, PCD_BCD_DEDICATED_CHARGING_PORT);
221 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
222 hpcd->BCDCallback(hpcd, PCD_BCD_CHARGING_DOWNSTREAM_PORT);
235 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
236 hpcd->BCDCallback(hpcd, PCD_BCD_ERROR);
243 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
244 hpcd->BCDCallback(hpcd, PCD_BCD_DISCOVERY_COMPLETED);
258 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
260 USBx->GCCFG &= ~(USB_OTG_GCCFG_PDEN);
261 USBx->GCCFG &= ~(USB_OTG_GCCFG_SDEN);
264 USBx->GCCFG &= ~(USB_OTG_GCCFG_PWRDWN);
267 USBx->GCCFG |= USB_OTG_GCCFG_BCDEN;
269 hpcd->battery_charging_active = 1U;
281 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
283 USBx->GCCFG &= ~(USB_OTG_GCCFG_SDEN);
284 USBx->GCCFG &= ~(USB_OTG_GCCFG_PDEN);
287 USBx->GCCFG &= ~(USB_OTG_GCCFG_BCDEN);
289 hpcd->battery_charging_active = 0U;
void HAL_Delay(uint32_t Delay)
This function provides minimum delay (in milliseconds) based on variable incremented.
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
void HAL_PCDEx_BCD_VBUSDetect(PCD_HandleTypeDef *hpcd)
Handle BatteryCharging Process.
HAL_StatusTypeDef HAL_PCDEx_SetRxFiFo(PCD_HandleTypeDef *hpcd, uint16_t size)
Set Rx FIFO.
HAL_StatusTypeDef HAL_PCDEx_DeActivateLPM(PCD_HandleTypeDef *hpcd)
Deactivate LPM feature.
HAL_StatusTypeDef HAL_PCDEx_ActivateBCD(PCD_HandleTypeDef *hpcd)
Activate BatteryCharging feature.
void HAL_PCDEx_LPM_Callback(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg)
Send LPM message to user layer callback.
void HAL_PCDEx_BCD_Callback(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg)
Send BatteryCharging message to user layer callback.
HAL_StatusTypeDef HAL_PCDEx_DeActivateBCD(PCD_HandleTypeDef *hpcd)
Deactivate BatteryCharging feature.
HAL_StatusTypeDef HAL_PCDEx_SetTxFiFo(PCD_HandleTypeDef *hpcd, uint8_t fifo, uint16_t size)
Set Tx FIFO.
HAL_StatusTypeDef HAL_PCDEx_ActivateLPM(PCD_HandleTypeDef *hpcd)
Activate LPM feature.
struct __PCD_HandleTypeDef else typedef struct endif PCD_HandleTypeDef
PCD Handle Structure definition.
This file contains all the functions prototypes for the HAL module driver.