STSW-STLKT01: Projects/SensorTile/Applications/DataLog/Src/usbd_conf.c Source File

STSW-STLKT01

usbd_conf.c
Go to the documentation of this file.
1 
48 /* Includes ------------------------------------------------------------------*/
49 #include "main.h"
50 
51 /* Private typedef -----------------------------------------------------------*/
52 /* Private define ------------------------------------------------------------*/
53 /* Private macro -------------------------------------------------------------*/
54 /* Private variables ---------------------------------------------------------*/
55 PCD_HandleTypeDef hpcd;
56 
57 /* Private function prototypes -----------------------------------------------*/
58 /* Private functions ---------------------------------------------------------*/
59 
60 /*******************************************************************************
61  PCD BSP Routines
62 *******************************************************************************/
63 
69 void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd)
70 {
71  GPIO_InitTypeDef GPIO_InitStruct;
72 
73  /* Configure USB FS GPIOs */
74  __HAL_RCC_GPIOA_CLK_ENABLE();
75 
76  /* Configure DM DP Pins */
77  GPIO_InitStruct.Pin = (GPIO_PIN_11 | GPIO_PIN_12);
78  GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
79  GPIO_InitStruct.Pull = GPIO_NOPULL;
80  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
81  GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS;
82  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
83 
84  /* Enable USB FS Clock */
85  __HAL_RCC_USB_OTG_FS_CLK_ENABLE();
86 
87  /* Set USB FS Interrupt priority */
88  HAL_NVIC_SetPriority(OTG_FS_IRQn, 6, 0);
89 
90  /* Enable USB FS Interrupt */
91  HAL_NVIC_EnableIRQ(OTG_FS_IRQn);
92 
93 }
94 
100 void HAL_PCD_MspDeInit(PCD_HandleTypeDef *hpcd)
101 {
102  /* Disable USB FS Clock */
103  __HAL_RCC_USB_OTG_FS_CLK_DISABLE();
104  __HAL_RCC_SYSCFG_CLK_DISABLE();
105 }
106 
107 /*******************************************************************************
108  LL Driver Callbacks (PCD -> USB Device Library)
109 *******************************************************************************/
110 
116 void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd)
117 {
118  USBD_LL_SetupStage(hpcd->pData, (uint8_t *)hpcd->Setup);
119 }
120 
127 void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
128 {
129  USBD_LL_DataOutStage(hpcd->pData, epnum, hpcd->OUT_ep[epnum].xfer_buff);
130 }
131 
138 void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
139 {
140  USBD_LL_DataInStage(hpcd->pData, epnum, hpcd->IN_ep[epnum].xfer_buff);
141 }
142 
148 void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd)
149 {
150  USBD_LL_SOF(hpcd->pData);
151 }
152 
158 void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd)
159 {
160  /* Reset Device */
161  USBD_LL_Reset(hpcd->pData);
162 
163  /* Set USB Current Speed */
164  USBD_LL_SetSpeed(hpcd->pData, USBD_SPEED_FULL);
165 }
166 
172 void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd)
173 {
174  USBD_LL_Suspend(hpcd->pData);
175 }
176 
182 void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd)
183 {
184  USBD_LL_Resume(hpcd->pData);
185 }
186 
193 void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
194 {
195  USBD_LL_IsoOUTIncomplete(hpcd->pData, epnum);
196 }
197 
204 void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
205 {
206  USBD_LL_IsoINIncomplete(hpcd->pData, epnum);
207 }
208 
214 void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd)
215 {
216  USBD_LL_DevConnected(hpcd->pData);
217 }
218 
224 void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd)
225 {
226  USBD_LL_DevDisconnected(hpcd->pData);
227 }
228 
229 
230 /*******************************************************************************
231  LL Driver Interface (USB Device Library --> PCD)
232 *******************************************************************************/
233 
239 USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev)
240 {
241  /* Set LL Driver parameters */
242  hpcd.Instance = USB_OTG_FS;
243  hpcd.Init.dev_endpoints = 5;
244  hpcd.Init.use_dedicated_ep1 = 0;
245  hpcd.Init.ep0_mps = 0x40;
246  hpcd.Init.dma_enable = 0;
247  hpcd.Init.low_power_enable = 0;
248  hpcd.Init.lpm_enable = 0;
249  hpcd.Init.battery_charging_enable = 0;
250  hpcd.Init.phy_itface = PCD_PHY_EMBEDDED;
251  hpcd.Init.Sof_enable = 0;
252  hpcd.Init.speed = PCD_SPEED_FULL;
253  hpcd.Init.vbus_sensing_enable = 0;
254  /* Link The driver to the stack */
255  hpcd.pData = pdev;
256  pdev->pData = &hpcd;
257  /* Initialize LL Driver */
258  HAL_PCD_Init(&hpcd);
259 
260  HAL_PCD_SetRxFiFo(&hpcd, 0x80);
261  HAL_PCD_SetTxFiFo(&hpcd, 0, 0x40);
262  HAL_PCD_SetTxFiFo(&hpcd, 1, 0x80);
263 
264  return USBD_OK;
265 }
266 
272 USBD_StatusTypeDef USBD_LL_DeInit(USBD_HandleTypeDef *pdev)
273 {
274  HAL_PCD_DeInit(pdev->pData);
275  return USBD_OK;
276 }
277 
283 USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev)
284 {
285  HAL_PCD_Start(pdev->pData);
286  return USBD_OK;
287 }
288 
294 USBD_StatusTypeDef USBD_LL_Stop(USBD_HandleTypeDef *pdev)
295 {
296  HAL_PCD_Stop(pdev->pData);
297  return USBD_OK;
298 }
299 
308 USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev,
309  uint8_t ep_addr,
310  uint8_t ep_type,
311  uint16_t ep_mps)
312 {
313  HAL_PCD_EP_Open(pdev->pData,
314  ep_addr,
315  ep_mps,
316  ep_type);
317 
318  return USBD_OK;
319 }
320 
327 USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
328 {
329  HAL_PCD_EP_Close(pdev->pData, ep_addr);
330  return USBD_OK;
331 }
332 
339 USBD_StatusTypeDef USBD_LL_FlushEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
340 {
341  HAL_PCD_EP_Flush(pdev->pData, ep_addr);
342  return USBD_OK;
343 }
344 
351 USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
352 {
353  HAL_PCD_EP_SetStall(pdev->pData, ep_addr);
354  return USBD_OK;
355 }
356 
363 USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
364 {
365  HAL_PCD_EP_ClrStall(pdev->pData, ep_addr);
366  return USBD_OK;
367 }
368 
375 uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
376 {
377  PCD_HandleTypeDef *hpcd = pdev->pData;
378 
379  if((ep_addr & 0x80) == 0x80)
380  {
381  return hpcd->IN_ep[ep_addr & 0x7F].is_stall;
382  }
383  else
384  {
385  return hpcd->OUT_ep[ep_addr & 0x7F].is_stall;
386  }
387 }
388 
395 USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr)
396 {
397  HAL_PCD_SetAddress(pdev->pData, dev_addr);
398  return USBD_OK;
399 }
400 
409 USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev,
410  uint8_t ep_addr,
411  uint8_t *pbuf,
412  uint16_t size)
413 {
414  HAL_PCD_EP_Transmit(pdev->pData, ep_addr, pbuf, size);
415  return USBD_OK;
416 }
417 
426 USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev,
427  uint8_t ep_addr,
428  uint8_t *pbuf,
429  uint16_t size)
430 {
431  HAL_PCD_EP_Receive(pdev->pData, ep_addr, pbuf, size);
432  return USBD_OK;
433 }
434 
441 uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
442 {
443  return HAL_PCD_EP_GetRxCount(pdev->pData, ep_addr);
444 }
445 
451 void USBD_LL_Delay(uint32_t Delay)
452 {
453  HAL_Delay(Delay);
454 }
455 
456 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
USBD_StatusTypeDef USBD_LL_FlushEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
Flushes an endpoint of the Low Level Driver.
Definition: usbd_conf.c:339
USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
Closes an endpoint of the Low Level Driver.
Definition: usbd_conf.c:327
USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
Clears a Stall condition on an endpoint of the Low Level Driver.
Definition: usbd_conf.c:363
void HAL_PCD_MspDeInit(PCD_HandleTypeDef *hpcd)
De-Initializes the PCD MSP.
Definition: usbd_conf.c:100
USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev)
Initializes the Low Level portion of the Device driver.
Definition: usbd_conf.c:239
void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd)
Suspend callback.
Definition: usbd_conf.c:172
void USBD_LL_Delay(uint32_t Delay)
Delays routine for the USB Device Library.
Definition: usbd_conf.c:451
void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd)
Disconnect callback.
Definition: usbd_conf.c:224
void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd)
SOF callback.
Definition: usbd_conf.c:148
void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
ISOINIncomplete callback.
Definition: usbd_conf.c:204
void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
DataIn Stage callback.
Definition: usbd_conf.c:138
USBD_StatusTypeDef USBD_LL_DeInit(USBD_HandleTypeDef *pdev)
De-Initializes the Low Level portion of the Device driver.
Definition: usbd_conf.c:272
USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
Sets a Stall condition on an endpoint of the Low Level Driver.
Definition: usbd_conf.c:351
void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
ISOOUTIncomplete callback.
Definition: usbd_conf.c:193
USBD_StatusTypeDef USBD_LL_Stop(USBD_HandleTypeDef *pdev)
Stops the Low Level portion of the Device driver.
Definition: usbd_conf.c:294
USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t ep_type, uint16_t ep_mps)
Opens an endpoint of the Low Level Driver.
Definition: usbd_conf.c:308
USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size)
Prepares an endpoint for reception.
Definition: usbd_conf.c:426
void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd)
Initializes the PCD MSP.
Definition: usbd_conf.c:69
void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd)
Reset callback.
Definition: usbd_conf.c:158
uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
Returns Stall condition.
Definition: usbd_conf.c:375
USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr)
Assigns a USB address to the device.
Definition: usbd_conf.c:395
void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd)
ConnectCallback callback.
Definition: usbd_conf.c:214
USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size)
Transmits data over an endpoint.
Definition: usbd_conf.c:409
void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd)
SetupStage callback.
Definition: usbd_conf.c:116
uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
Returns the last transfered packet size.
Definition: usbd_conf.c:441
USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev)
Starts the Low Level portion of the Device driver.
Definition: usbd_conf.c:283
void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
DataOut Stage callback.
Definition: usbd_conf.c:127
void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd)
Resume callback.
Definition: usbd_conf.c:182
Generated by   doxygen 1.8.13