Subversion Repositories FuelGauge

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /**
  2.   ******************************************************************************
  3.   * @file    stm32f0xx_ll_usb.h
  4.   * @author  MCD Application Team
  5.   * @brief   Header file of USB Low Layer HAL module.
  6.   ******************************************************************************
  7.   * @attention
  8.   *
  9.   * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
  10.   * All rights reserved.</center></h2>
  11.   *
  12.   * This software component is licensed by ST under BSD 3-Clause license,
  13.   * the "License"; You may not use this file except in compliance with the
  14.   * License. You may obtain a copy of the License at:
  15.   *                        opensource.org/licenses/BSD-3-Clause
  16.   *
  17.   ******************************************************************************
  18.   */
  19.  
  20. /* Define to prevent recursive inclusion -------------------------------------*/
  21. #ifndef STM32F0xx_LL_USB_H
  22. #define STM32F0xx_LL_USB_H
  23.  
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27.  
  28. /* Includes ------------------------------------------------------------------*/
  29. #include "stm32f0xx_hal_def.h"
  30.  
  31. #if defined (USB)
  32. /** @addtogroup STM32F0xx_HAL_Driver
  33.   * @{
  34.   */
  35.  
  36. /** @addtogroup USB_LL
  37.   * @{
  38.   */
  39.  
  40. /* Exported types ------------------------------------------------------------*/
  41.  
  42. /**
  43.   * @brief  USB Mode definition
  44.   */
  45.  
  46.  
  47.  
  48. typedef enum
  49. {
  50.   USB_DEVICE_MODE  = 0
  51. } USB_ModeTypeDef;
  52.  
  53. /**
  54.   * @brief  USB Initialization Structure definition
  55.   */
  56. typedef struct
  57. {
  58.   uint32_t dev_endpoints;           /*!< Device Endpoints number.
  59.                                          This parameter depends on the used USB core.
  60.                                          This parameter must be a number between Min_Data = 1 and Max_Data = 15 */
  61.  
  62.   uint32_t speed;                   /*!< USB Core speed.
  63.                                          This parameter can be any value of @ref USB_Core_Speed                 */
  64.  
  65.   uint32_t ep0_mps;                 /*!< Set the Endpoint 0 Max Packet size.                                    */
  66.  
  67.   uint32_t phy_itface;              /*!< Select the used PHY interface.
  68.                                          This parameter can be any value of @ref USB_Core_PHY                   */
  69.  
  70.   uint32_t Sof_enable;              /*!< Enable or disable the output of the SOF signal.                        */
  71.  
  72.   uint32_t low_power_enable;        /*!< Enable or disable Low Power mode                                       */
  73.  
  74.   uint32_t lpm_enable;              /*!< Enable or disable Battery charging.                                    */
  75.  
  76.   uint32_t battery_charging_enable; /*!< Enable or disable Battery charging.                                    */
  77. } USB_CfgTypeDef;
  78.  
  79. typedef struct
  80. {
  81.   uint8_t   num;             /*!< Endpoint number
  82.                                   This parameter must be a number between Min_Data = 1 and Max_Data = 15    */
  83.  
  84.   uint8_t   is_in;           /*!< Endpoint direction
  85.                                   This parameter must be a number between Min_Data = 0 and Max_Data = 1     */
  86.  
  87.   uint8_t   is_stall;        /*!< Endpoint stall condition
  88.                                   This parameter must be a number between Min_Data = 0 and Max_Data = 1     */
  89.  
  90.   uint8_t   type;            /*!< Endpoint type
  91.                                   This parameter can be any value of @ref USB_EP_Type                       */
  92.  
  93.   uint8_t   data_pid_start;  /*!< Initial data PID
  94.                                   This parameter must be a number between Min_Data = 0 and Max_Data = 1     */
  95.  
  96.   uint16_t  pmaadress;       /*!< PMA Address
  97.                                   This parameter can be any value between Min_addr = 0 and Max_addr = 1K    */
  98.  
  99.   uint16_t  pmaaddr0;        /*!< PMA Address0
  100.                                   This parameter can be any value between Min_addr = 0 and Max_addr = 1K    */
  101.  
  102.   uint16_t  pmaaddr1;        /*!< PMA Address1
  103.                                   This parameter can be any value between Min_addr = 0 and Max_addr = 1K    */
  104.  
  105.   uint8_t   doublebuffer;    /*!< Double buffer enable
  106.                                   This parameter can be 0 or 1                                              */
  107.  
  108.   uint16_t  tx_fifo_num;     /*!< This parameter is not required by USB Device FS peripheral, it is used
  109.                                   only by USB OTG FS peripheral
  110.                                   This parameter is added to ensure compatibility across USB peripherals    */
  111.  
  112.   uint32_t  maxpacket;       /*!< Endpoint Max packet size
  113.                                   This parameter must be a number between Min_Data = 0 and Max_Data = 64KB  */
  114.  
  115.   uint8_t   *xfer_buff;      /*!< Pointer to transfer buffer                                                */
  116.  
  117.   uint32_t  xfer_len;        /*!< Current transfer length                                                   */
  118.  
  119.   uint32_t  xfer_count;      /*!< Partial transfer length in case of multi packet transfer                  */
  120.  
  121. } USB_EPTypeDef;
  122.  
  123.  
  124. /* Exported constants --------------------------------------------------------*/
  125.  
  126. /** @defgroup PCD_Exported_Constants PCD Exported Constants
  127.   * @{
  128.   */
  129.  
  130.  
  131. /** @defgroup USB_LL_EP0_MPS USB Low Layer EP0 MPS
  132.   * @{
  133.   */
  134. #define DEP0CTL_MPS_64                         0U
  135. #define DEP0CTL_MPS_32                         1U
  136. #define DEP0CTL_MPS_16                         2U
  137. #define DEP0CTL_MPS_8                          3U
  138. /**
  139.   * @}
  140.   */
  141.  
  142. /** @defgroup USB_LL_EP_Type USB Low Layer EP Type
  143.   * @{
  144.   */
  145. #define EP_TYPE_CTRL                           0U
  146. #define EP_TYPE_ISOC                           1U
  147. #define EP_TYPE_BULK                           2U
  148. #define EP_TYPE_INTR                           3U
  149. #define EP_TYPE_MSK                            3U
  150. /**
  151.   * @}
  152.   */
  153.  
  154. /** @defgroup USB_LL Device Speed
  155.   * @{
  156.   */
  157. #define USBD_FS_SPEED                          2U
  158. /**
  159.   * @}
  160.   */
  161.  
  162. #define BTABLE_ADDRESS                         0x000U
  163. #define PMA_ACCESS                             1U
  164.  
  165. #define EP_ADDR_MSK                            0x7U
  166. /**
  167.   * @}
  168.   */
  169.  
  170. /* Exported macro ------------------------------------------------------------*/
  171. /**
  172.   * @}
  173.   */
  174.  
  175. /* Exported functions --------------------------------------------------------*/
  176. /** @addtogroup USB_LL_Exported_Functions USB Low Layer Exported Functions
  177.   * @{
  178.   */
  179.  
  180.  
  181. HAL_StatusTypeDef USB_CoreInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg);
  182. HAL_StatusTypeDef USB_DevInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg);
  183. HAL_StatusTypeDef USB_EnableGlobalInt(USB_TypeDef *USBx);
  184. HAL_StatusTypeDef USB_DisableGlobalInt(USB_TypeDef *USBx);
  185. HAL_StatusTypeDef USB_SetCurrentMode(USB_TypeDef *USBx, USB_ModeTypeDef mode);
  186. HAL_StatusTypeDef USB_SetDevSpeed(USB_TypeDef *USBx, uint8_t speed);
  187. HAL_StatusTypeDef USB_FlushRxFifo(USB_TypeDef *USBx);
  188. HAL_StatusTypeDef USB_FlushTxFifo(USB_TypeDef *USBx, uint32_t num);
  189. HAL_StatusTypeDef USB_ActivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep);
  190. HAL_StatusTypeDef USB_DeactivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep);
  191. HAL_StatusTypeDef USB_EPStartXfer(USB_TypeDef *USBx, USB_EPTypeDef *ep);
  192. HAL_StatusTypeDef USB_WritePacket(USB_TypeDef *USBx, uint8_t *src, uint8_t ch_ep_num, uint16_t len);
  193. void             *USB_ReadPacket(USB_TypeDef *USBx, uint8_t *dest, uint16_t len);
  194. HAL_StatusTypeDef USB_EPSetStall(USB_TypeDef *USBx, USB_EPTypeDef *ep);
  195. HAL_StatusTypeDef USB_EPClearStall(USB_TypeDef *USBx, USB_EPTypeDef *ep);
  196. HAL_StatusTypeDef USB_SetDevAddress(USB_TypeDef *USBx, uint8_t address);
  197. HAL_StatusTypeDef USB_DevConnect(USB_TypeDef *USBx);
  198. HAL_StatusTypeDef USB_DevDisconnect(USB_TypeDef *USBx);
  199. HAL_StatusTypeDef USB_StopDevice(USB_TypeDef *USBx);
  200. HAL_StatusTypeDef USB_EP0_OutStart(USB_TypeDef *USBx, uint8_t *psetup);
  201. uint32_t          USB_ReadInterrupts(USB_TypeDef *USBx);
  202. uint32_t          USB_ReadDevAllOutEpInterrupt(USB_TypeDef *USBx);
  203. uint32_t          USB_ReadDevOutEPInterrupt(USB_TypeDef *USBx, uint8_t epnum);
  204. uint32_t          USB_ReadDevAllInEpInterrupt(USB_TypeDef *USBx);
  205. uint32_t          USB_ReadDevInEPInterrupt(USB_TypeDef *USBx, uint8_t epnum);
  206. void              USB_ClearInterrupts(USB_TypeDef *USBx, uint32_t interrupt);
  207.  
  208. HAL_StatusTypeDef USB_ActivateRemoteWakeup(USB_TypeDef *USBx);
  209. HAL_StatusTypeDef USB_DeActivateRemoteWakeup(USB_TypeDef *USBx);
  210. void USB_WritePMA(USB_TypeDef  *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes);
  211. void USB_ReadPMA(USB_TypeDef  *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes);
  212.  
  213. /**
  214.   * @}
  215.   */
  216.  
  217. /**
  218.   * @}
  219.   */
  220.  
  221. /**
  222.   * @}
  223.   */
  224.  
  225. /**
  226.   * @}
  227.   */
  228. #endif /* defined (USB) */
  229.  
  230. #ifdef __cplusplus
  231. }
  232. #endif
  233.  
  234.  
  235. #endif /* STM32F0xx_LL_USB_H */
  236.  
  237. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
  238.