36 #ifdef HAL_PCD_MODULE_ENABLED 38 #if defined (USB) || defined (USB_OTG_FS) 63 #if defined (USB_OTG_FS) 86 Tx_Offset = hpcd->Instance->GRXFSIZ;
90 hpcd->Instance->DIEPTXF0_HNPTXFSIZ = ((uint32_t)size << 16) | Tx_Offset;
94 Tx_Offset += (hpcd->Instance->DIEPTXF0_HNPTXFSIZ) >> 16;
95 for (i = 0U; i < (fifo - 1U); i++)
97 Tx_Offset += (hpcd->Instance->DIEPTXF[i] >> 16);
101 hpcd->Instance->DIEPTXF[fifo - 1U] = ((uint32_t)size << 16) | Tx_Offset;
115 hpcd->Instance->GRXFSIZ = size;
127 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
129 hpcd->lpm_active = 1U;
131 USBx->GINTMSK |= USB_OTG_GINTMSK_LPMINTM;
132 USBx->GLPMCFG |= (USB_OTG_GLPMCFG_LPMEN | USB_OTG_GLPMCFG_LPMACK | USB_OTG_GLPMCFG_ENBESL);
144 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
146 hpcd->lpm_active = 0U;
147 USBx->GINTMSK &= ~USB_OTG_GINTMSK_LPMINTM;
148 USBx->GLPMCFG &= ~(USB_OTG_GLPMCFG_LPMEN | USB_OTG_GLPMCFG_LPMACK | USB_OTG_GLPMCFG_ENBESL);
161 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
165 USBx->GCCFG |= USB_OTG_GCCFG_DCDEN;
168 while ((USBx->GCCFG & USB_OTG_GCCFG_DCDET) == 0U)
173 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 187 if ((USBx->GCCFG & USB_OTG_GCCFG_DCDET) == USB_OTG_GCCFG_DCDET)
189 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 198 USBx->GCCFG &= ~ USB_OTG_GCCFG_DCDEN;
200 USBx->GCCFG |= USB_OTG_GCCFG_PDEN;
203 if ((USBx->GCCFG & USB_OTG_GCCFG_PDET) == 0U)
206 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 216 USBx->GCCFG &= ~ USB_OTG_GCCFG_PDEN;
218 USBx->GCCFG |= USB_OTG_GCCFG_SDEN;
221 if ((USBx->GCCFG & USB_OTG_GCCFG_SDET) == USB_OTG_GCCFG_SDET)
224 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 233 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 244 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 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;
321 if ((0x80U & ep_addr) == 0x80U)
323 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK];
327 ep = &hpcd->OUT_ep[ep_addr];
331 if (ep_kind == PCD_SNG_BUF)
334 ep->doublebuffer = 0U;
336 ep->pmaadress = (uint16_t)pmaadress;
341 ep->doublebuffer = 1U;
343 ep->pmaaddr0 = (uint16_t)(pmaadress & 0xFFFFU);
344 ep->pmaaddr1 = (uint16_t)((pmaadress & 0xFFFF0000U) >> 16);
357 USB_TypeDef *USBx = hpcd->Instance;
358 hpcd->battery_charging_active = 1U;
361 USBx->BCDR &= ~(USB_BCDR_PDEN);
362 USBx->BCDR &= ~(USB_BCDR_SDEN);
363 USBx->BCDR |= USB_BCDR_DCDEN;
375 USB_TypeDef *USBx = hpcd->Instance;
376 hpcd->battery_charging_active = 0U;
378 USBx->BCDR &= ~(USB_BCDR_BCDEN);
390 USB_TypeDef *USBx = hpcd->Instance;
394 while ((USBx->BCDR & USB_BCDR_DCDET) == 0U)
399 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 412 if ((USBx->BCDR & USB_BCDR_DCDET) == USB_BCDR_DCDET)
414 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 422 USBx->BCDR &= ~(USB_BCDR_DCDEN);
424 USBx->BCDR |= (USB_BCDR_PDEN);
428 if ((USBx->BCDR & USB_BCDR_PDET) == USB_BCDR_PDET)
432 USBx->BCDR &= ~(USB_BCDR_PDEN);
434 USBx->BCDR |= (USB_BCDR_SDEN);
438 if ((USBx->BCDR & USB_BCDR_SDET) == USB_BCDR_SDET)
441 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 450 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 460 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 469 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 485 USB_TypeDef *USBx = hpcd->Instance;
486 hpcd->lpm_active = 1U;
489 USBx->LPMCSR |= USB_LPMCSR_LMPEN;
490 USBx->LPMCSR |= USB_LPMCSR_LPMACK;
502 USB_TypeDef *USBx = hpcd->Instance;
504 hpcd->lpm_active = 0U;
506 USBx->LPMCSR &= ~(USB_LPMCSR_LMPEN);
507 USBx->LPMCSR &= ~(USB_LPMCSR_LPMACK);
HAL_StatusTypeDef HAL_PCDEx_PMAConfig(PCD_HandleTypeDef *hpcd, uint16_t ep_addr, uint16_t ep_kind, uint32_t pmaadress)
Configure PMA for EP.
HAL_StatusTypeDef HAL_PCDEx_SetRxFiFo(PCD_HandleTypeDef *hpcd, uint16_t size)
Set Rx FIFO.
HAL_StatusTypeDef HAL_PCDEx_SetTxFiFo(PCD_HandleTypeDef *hpcd, uint8_t fifo, uint16_t size)
Set Tx FIFO.
This file contains all the functions prototypes for the HAL module driver.
struct __PCD_HandleTypeDef else typedef struct endif PCD_HandleTypeDef
PCD Handle Structure definition.
void HAL_Delay(uint32_t Delay)
This function provides minimum delay (in milliseconds) based on variable incremented.
uint32_t HAL_GetTick(void)
Provide a tick value in millisecond.
HAL_StatusTypeDef HAL_PCDEx_ActivateLPM(PCD_HandleTypeDef *hpcd)
Activate LPM feature.
HAL_StatusTypeDef HAL_PCDEx_ActivateBCD(PCD_HandleTypeDef *hpcd)
Activate BatteryCharging feature.
HAL_StatusTypeDef HAL_PCDEx_DeActivateLPM(PCD_HandleTypeDef *hpcd)
Deactivate LPM feature.
void HAL_PCDEx_BCD_VBUSDetect(PCD_HandleTypeDef *hpcd)
Handle BatteryCharging Process.
HAL_StatusTypeDef HAL_PCDEx_DeActivateBCD(PCD_HandleTypeDef *hpcd)
Deactivate 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.