STSW-STLKT01: Projects/SensorTile/Applications/AudioLoop/Src/usbd_conf_l4.c Source File

STSW-STLKT01

usbd_conf_l4.c
Go to the documentation of this file.
1 
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32l4xx_hal.h"
30 #include "usbd_core.h"
31 
32 PCD_HandleTypeDef hpcd;
33 
34 /*******************************************************************************
35 PCD BSP Routines
36 *******************************************************************************/
42 void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd)
43 {
44  /* Note: On STM32F401-Discovery board only USB OTG FS core is supported. */
45  GPIO_InitTypeDef GPIO_InitStruct;
46 
47  if(hpcd->Instance == USB_OTG_FS)
48  {
49  /* Configure USB FS GPIOs */
50  __GPIOA_CLK_ENABLE();
51 
52  /* Configure DM DP Pins */
53  GPIO_InitStruct.Pin = GPIO_PIN_11 | GPIO_PIN_12;
54  GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
55  GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
56  GPIO_InitStruct.Pull = GPIO_NOPULL;
57  GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS;
58  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
59 
60  /* Enable USB FS Clocks */
61  __USB_OTG_FS_CLK_ENABLE();
62 
63  /* Set USBFS Interrupt to the lowest priority */
64  HAL_NVIC_SetPriority(OTG_FS_IRQn, 6, 0);
65 
66  /* Enable USBFS Interrupt */
67  HAL_NVIC_EnableIRQ(OTG_FS_IRQn);
68  }
69 }
70 
76 void HAL_PCD_MspDeInit(PCD_HandleTypeDef *hpcd)
77 {
78  if(hpcd->Instance == USB_OTG_FS)
79  {
80  /* Disable USB FS Clocks */
81  __USB_OTG_FS_CLK_DISABLE();
82  }
83 }
84 
85 /*******************************************************************************
86 LL Driver Callbacks (PCD -> USB Device Library)
87 *******************************************************************************/
88 
89 
95 void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd)
96 {
97  USBD_LL_SetupStage(hpcd->pData, (uint8_t *)hpcd->Setup);
98 }
99 
105 void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
106 {
107  USBD_LL_DataOutStage(hpcd->pData, epnum, hpcd->OUT_ep[epnum].xfer_buff);
108 }
109 
115 void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
116 {
117  USBD_LL_DataInStage(hpcd->pData, epnum, hpcd->IN_ep[epnum].xfer_buff);
118 }
119 
125 void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd)
126 {
127  USBD_LL_SOF(hpcd->pData);
128 }
129 
135 void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd)
136 {
137  /* Reset Device */
138  USBD_LL_Reset(hpcd->pData);
139 
140  /* Set USB Current Speed */
141  USBD_LL_SetSpeed(hpcd->pData, USBD_SPEED_FULL);
142 }
143 
149 void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd)
150 {
151  USBD_LL_Suspend(hpcd->pData);
152 }
153 
159 void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd)
160 {
161  USBD_LL_Resume(hpcd->pData);
162 }
163 
169 void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
170 {
171  USBD_LL_IsoOUTIncomplete(hpcd->pData, epnum);
172 }
173 
179 void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
180 {
181  USBD_LL_IsoINIncomplete(hpcd->pData, epnum);
182 }
183 
189 void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd)
190 {
191  USBD_LL_DevConnected(hpcd->pData);
192 }
193 
199 void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd)
200 {
201  USBD_LL_DevDisconnected(hpcd->pData);
202 }
203 
204 /*******************************************************************************
205 LL Driver Interface (USB Device Library --> PCD)
206 *******************************************************************************/
213 USBD_StatusTypeDef USBD_LL_Init (USBD_HandleTypeDef *pdev)
214 {
215  /* Change Systick prioity */
216  NVIC_SetPriority (SysTick_IRQn, 0);
217 
218  /*Set LL Driver parameters */
219  hpcd.Instance = USB_OTG_FS;
220  hpcd.Init.dev_endpoints = 3;
221  hpcd.Init.use_dedicated_ep1 = 0;
222  hpcd.Init.ep0_mps = 0x40;
223  hpcd.Init.dma_enable = 0;
224  hpcd.Init.low_power_enable = 0;
225  hpcd.Init.phy_itface = PCD_PHY_EMBEDDED;
226  hpcd.Init.Sof_enable = 0;
227  hpcd.Init.speed = PCD_SPEED_FULL;
228  hpcd.Init.vbus_sensing_enable = 0;
229  /* Link The driver to the stack */
230  hpcd.pData = pdev;
231  pdev->pData = &hpcd;
232  /*Initialize LL Driver */
233  HAL_PCD_Init(&hpcd);
234 
235  HAL_PCD_SetRxFiFo(&hpcd, 0x64);
236  HAL_PCD_SetTxFiFo(&hpcd, 0, 0x32);
237  HAL_PCD_SetTxFiFo(&hpcd, 1, 0x64);
238 
239 
240  return USBD_OK;
241 }
242 
249 USBD_StatusTypeDef USBD_LL_DeInit (USBD_HandleTypeDef *pdev)
250 {
251  HAL_PCD_DeInit(pdev->pData);
252  return USBD_OK;
253 }
254 
261 USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev)
262 {
263  HAL_PCD_Start(pdev->pData);
264  return USBD_OK;
265 }
266 
273 USBD_StatusTypeDef USBD_LL_Stop (USBD_HandleTypeDef *pdev)
274 {
275  HAL_PCD_Stop(pdev->pData);
276  return USBD_OK;
277 }
278 
288 USBD_StatusTypeDef USBD_LL_OpenEP (USBD_HandleTypeDef *pdev,
289  uint8_t ep_addr,
290  uint8_t ep_type,
291  uint16_t ep_mps)
292 {
293  HAL_PCD_EP_Open(pdev->pData,
294  ep_addr,
295  ep_mps,
296  ep_type);
297 
298  return USBD_OK;
299 }
300 
308 USBD_StatusTypeDef USBD_LL_CloseEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr)
309 {
310  HAL_PCD_EP_Close(pdev->pData, ep_addr);
311  return USBD_OK;
312 }
313 
321 USBD_StatusTypeDef USBD_LL_FlushEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr)
322 {
323  HAL_PCD_EP_Flush(pdev->pData, ep_addr);
324  return USBD_OK;
325 }
326 
334 USBD_StatusTypeDef USBD_LL_StallEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr)
335 {
336  HAL_PCD_EP_SetStall(pdev->pData, ep_addr);
337  return USBD_OK;
338 }
339 
347 USBD_StatusTypeDef USBD_LL_ClearStallEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr)
348 {
349  HAL_PCD_EP_ClrStall(pdev->pData, ep_addr);
350  return USBD_OK;
351 }
352 
360 uint8_t USBD_LL_IsStallEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr)
361 {
362  PCD_HandleTypeDef *hpcd = pdev->pData;
363 
364  if((ep_addr & 0x80) == 0x80)
365  {
366  return hpcd->IN_ep[ep_addr & 0x7F].is_stall;
367  }
368  else
369  {
370  return hpcd->OUT_ep[ep_addr & 0x7F].is_stall;
371  }
372 }
380 USBD_StatusTypeDef USBD_LL_SetUSBAddress (USBD_HandleTypeDef *pdev, uint8_t dev_addr)
381 {
382  HAL_PCD_SetAddress(pdev->pData, dev_addr);
383  return USBD_OK;
384 }
385 
395 USBD_StatusTypeDef USBD_LL_Transmit (USBD_HandleTypeDef *pdev,
396  uint8_t ep_addr,
397  uint8_t *pbuf,
398  uint16_t size)
399 {
400  HAL_PCD_EP_Transmit(pdev->pData, ep_addr, pbuf, size);
401  return USBD_OK;
402 }
403 
413 USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev,
414  uint8_t ep_addr,
415  uint8_t *pbuf,
416  uint16_t size)
417 {
418  HAL_PCD_EP_Receive(pdev->pData, ep_addr, pbuf, size);
419  return USBD_OK;
420 }
421 
429 uint32_t USBD_LL_GetRxDataSize (USBD_HandleTypeDef *pdev, uint8_t ep_addr)
430 {
431  return HAL_PCD_EP_GetRxCount(pdev->pData, ep_addr);
432 }
433 
440 void USBD_LL_Delay (uint32_t Delay)
441 {
442  HAL_Delay(Delay);
443 }
444 
445 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
USBD_LL_GetRxDataSize Return the last transfered packet size.
Definition: usbd_conf_l4.c:429
USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev)
USBD_LL_Start Start the Low Level portion of the Device driver.
Definition: usbd_conf_l4.c:261
USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t ep_type, uint16_t ep_mps)
USBD_LL_OpenEP Open an endpoint of the Low Level Driver.
Definition: usbd_conf_l4.c:288
USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
USBD_LL_StallEP Set a Stall condition on an endpoint of the Low Level Driver.
Definition: usbd_conf_l4.c:334
USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
USBD_LL_CloseEP Close an endpoint of the Low Level Driver.
Definition: usbd_conf_l4.c:308
void HAL_PCD_MspDeInit(PCD_HandleTypeDef *hpcd)
DeInitializes the PCD MSP.
Definition: usbd_conf_l4.c:76
void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd)
SOF callback.
Definition: usbd_conf_l4.c:135
void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd)
SOF callback.
Definition: usbd_conf_l4.c:189
void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd)
SOF callback.
Definition: usbd_conf_l4.c:125
USBD_StatusTypeDef USBD_LL_DeInit(USBD_HandleTypeDef *pdev)
USBD_LL_DeInit De-Initialize the Low Level portion of the Device driver.
Definition: usbd_conf_l4.c:249
void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
SOF callback.
Definition: usbd_conf_l4.c:169
USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size)
USBD_LL_PrepareReceive prepare an endpoint for reception.
Definition: usbd_conf_l4.c:413
void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
SOF callback.
Definition: usbd_conf_l4.c:105
uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
USBD_LL_IsStallEP Return Stall condition.
Definition: usbd_conf_l4.c:360
void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd)
SOF callback.
Definition: usbd_conf_l4.c:159
void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd)
SOF callback.
Definition: usbd_conf_l4.c:95
USBD_StatusTypeDef USBD_LL_FlushEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
USBD_LL_FlushEP Flush an endpoint of the Low Level Driver.
Definition: usbd_conf_l4.c:321
USBD_StatusTypeDef USBD_LL_Stop(USBD_HandleTypeDef *pdev)
USBD_LL_Stop Stop the Low Level portion of the Device driver.
Definition: usbd_conf_l4.c:273
void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd)
SOF callback.
Definition: usbd_conf_l4.c:149
void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd)
Initializes the PCD MSP.
Definition: usbd_conf_l4.c:42
USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr)
USBD_LL_SetDevAddress Assign an USB address to the device.
Definition: usbd_conf_l4.c:380
USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
USBD_LL_ClearStallEP Clear a Stall condition on an endpoint of the Low Level Driver.
Definition: usbd_conf_l4.c:347
void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
SOF callback.
Definition: usbd_conf_l4.c:115
USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size)
USBD_LL_Transmit Transmit data over an endpoint.
Definition: usbd_conf_l4.c:395
void USBD_LL_Delay(uint32_t Delay)
USBD_LL_Delay Delay routine for the USB Device Library.
Definition: usbd_conf_l4.c:440
void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
SOF callback.
Definition: usbd_conf_l4.c:179
void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd)
SOF callback.
Definition: usbd_conf_l4.c:199
USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev)
USBD_LL_Init Initialize the Low Level portion of the Device driver.
Definition: usbd_conf_l4.c:213
Generated by   doxygen 1.8.13