Subversion Repositories DashDisplay

Rev

Rev 61 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /**
  2.   ******************************************************************************
  3.   * @file    stm32l1xx_ll_usb.h
  4.   * @author  MCD Application Team
  5.   * @brief   Header file of USB Low Layer HAL module.
  6.   ******************************************************************************
  7.   * @attention
  8.   *
  9.   * Copyright (c) 2016 STMicroelectronics.
  10.   * All rights reserved.
  11.   *
  12.   * This software is licensed under terms that can be found in the LICENSE file
  13.   * in the root directory of this software component.
  14.   * If no LICENSE file comes with this software, it is provided AS-IS.
  15.   *
  16.   ******************************************************************************
  17.   */
  18.  
  19. /* Define to prevent recursive inclusion -------------------------------------*/
  20. #ifndef STM32L1xx_LL_USB_H
  21. #define STM32L1xx_LL_USB_H
  22.  
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif /* __cplusplus */
  26.  
  27. /* Includes ------------------------------------------------------------------*/
  28. #include "stm32l1xx_hal_def.h"
  29.  
  30. #if defined (USB)
  31. /** @addtogroup STM32L1xx_HAL_Driver
  32.   * @{
  33.   */
  34.  
  35. /** @addtogroup USB_LL
  36.   * @{
  37.   */
  38.  
  39. /* Exported types ------------------------------------------------------------*/
  40.  
  41. /**
  42.   * @brief  USB Mode definition
  43.   */
  44.  
  45. typedef enum
  46. {
  47.   USB_DEVICE_MODE = 0
  48. } USB_ModeTypeDef;
  49.  
  50.  
  51. /**
  52.   * @brief  USB Instance Initialization Structure definition
  53.   */
  54. typedef struct
  55. {
  56.   uint32_t dev_endpoints;           /*!< Device Endpoints number.
  57.                                          This parameter depends on the used USB core.
  58.                                          This parameter must be a number between Min_Data = 1 and Max_Data = 15 */
  59.  
  60.   uint32_t speed;                   /*!< USB Core speed.
  61.                                          This parameter can be any value of @ref PCD_Speed/HCD_Speed
  62.                                                                                  (HCD_SPEED_xxx, HCD_SPEED_xxx) */
  63.  
  64.   uint32_t ep0_mps;                 /*!< Set the Endpoint 0 Max Packet size.                                    */
  65.  
  66.   uint32_t phy_itface;              /*!< Select the used PHY interface.
  67.                                          This parameter can be any value of @ref PCD_PHY_Module/HCD_PHY_Module  */
  68.  
  69.   uint32_t Sof_enable;              /*!< Enable or disable the output of the SOF signal.                        */
  70.  
  71.   uint32_t low_power_enable;        /*!< Enable or disable the low Power Mode.                                  */
  72.  
  73.   uint32_t lpm_enable;              /*!< Enable or disable Link Power Management.                               */
  74.  
  75.   uint32_t battery_charging_enable; /*!< Enable or disable Battery charging.                                    */
  76. } USB_CfgTypeDef;
  77.  
  78. typedef struct
  79. {
  80.   uint8_t   num;                  /*!< Endpoint number
  81.                                        This parameter must be a number between Min_Data = 1 and Max_Data = 15   */
  82.  
  83.   uint8_t   is_in;                /*!< Endpoint direction
  84.                                        This parameter must be a number between Min_Data = 0 and Max_Data = 1    */
  85.  
  86.   uint8_t   is_stall;             /*!< Endpoint stall condition
  87.                                        This parameter must be a number between Min_Data = 0 and Max_Data = 1    */
  88.  
  89.   uint8_t   type;                 /*!< Endpoint type
  90.                                        This parameter can be any value of @ref USB_LL_EP_Type                   */
  91.  
  92.   uint8_t   data_pid_start;       /*!< Initial data PID
  93.                                        This parameter must be a number between Min_Data = 0 and Max_Data = 1    */
  94.  
  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.  
  109.   uint32_t  maxpacket;            /*!< Endpoint Max packet size
  110.                                        This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */
  111.  
  112.   uint8_t   *xfer_buff;           /*!< Pointer to transfer buffer                                               */
  113.  
  114.   uint32_t  xfer_len;             /*!< Current transfer length                                                  */
  115.  
  116.   uint32_t  xfer_count;           /*!< Partial transfer length in case of multi packet transfer                 */
  117.  
  118.   uint32_t  xfer_len_db;          /*!< double buffer transfer length used with bulk double buffer in            */
  119.  
  120.   uint8_t   xfer_fill_db;         /*!< double buffer Need to Fill new buffer  used with bulk_in                 */
  121. } USB_EPTypeDef;
  122.  
  123. /* Exported constants --------------------------------------------------------*/
  124.  
  125. /** @defgroup PCD_Exported_Constants PCD Exported Constants
  126.   * @{
  127.   */
  128. /** @defgroup USB_LL_EP0_MPS USB Low Layer EP0 MPS
  129.   * @{
  130.   */
  131. #define EP_MPS_64                              0U
  132. #define EP_MPS_32                              1U
  133. #define EP_MPS_16                              2U
  134. #define EP_MPS_8                               3U
  135. /**
  136.   * @}
  137.   */
  138.  
  139. /** @defgroup USB_LL_EP_Type USB Low Layer EP Type
  140.   * @{
  141.   */
  142. #define EP_TYPE_CTRL                           0U
  143. #define EP_TYPE_ISOC                           1U
  144. #define EP_TYPE_BULK                           2U
  145. #define EP_TYPE_INTR                           3U
  146. #define EP_TYPE_MSK                            3U
  147. /**
  148.   * @}
  149.   */
  150.  
  151. /** @defgroup USB_LL Device Speed
  152.   * @{
  153.   */
  154. #define USBD_FS_SPEED                          2U
  155. /**
  156.   * @}
  157.   */
  158.  
  159.  
  160. #define BTABLE_ADDRESS                         0x000U
  161. #define PMA_ACCESS                             2U
  162.  
  163. #ifndef USB_EP_RX_STRX
  164. #define USB_EP_RX_STRX                         (0x3U << 12)
  165. #endif /* USB_EP_RX_STRX */
  166.  
  167. #define EP_ADDR_MSK                            0x7U
  168.  
  169. #ifndef USE_USB_DOUBLE_BUFFER
  170. #define USE_USB_DOUBLE_BUFFER                  1U
  171. #endif /* USE_USB_DOUBLE_BUFFER */
  172.  
  173.  
  174. /**
  175.   * @}
  176.   */
  177.  
  178. /* Exported macro ------------------------------------------------------------*/
  179. /**
  180.   * @}
  181.   */
  182.  
  183. /* Exported functions --------------------------------------------------------*/
  184. /** @addtogroup USB_LL_Exported_Functions USB Low Layer Exported Functions
  185.   * @{
  186.   */
  187.  
  188.  
  189. HAL_StatusTypeDef USB_CoreInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg);
  190. HAL_StatusTypeDef USB_DevInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg);
  191. HAL_StatusTypeDef USB_EnableGlobalInt(USB_TypeDef *USBx);
  192. HAL_StatusTypeDef USB_DisableGlobalInt(USB_TypeDef *USBx);
  193. HAL_StatusTypeDef USB_SetCurrentMode(USB_TypeDef *USBx, USB_ModeTypeDef mode);
  194.  
  195. HAL_StatusTypeDef USB_FlushRxFifo(USB_TypeDef const *USBx);
  196. HAL_StatusTypeDef USB_FlushTxFifo(USB_TypeDef const *USBx, uint32_t num);
  197.  
  198. #if defined (HAL_PCD_MODULE_ENABLED)
  199. HAL_StatusTypeDef USB_ActivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep);
  200. HAL_StatusTypeDef USB_DeactivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep);
  201. HAL_StatusTypeDef USB_EPStartXfer(USB_TypeDef *USBx, USB_EPTypeDef *ep);
  202. HAL_StatusTypeDef USB_EPSetStall(USB_TypeDef *USBx, USB_EPTypeDef *ep);
  203. HAL_StatusTypeDef USB_EPClearStall(USB_TypeDef *USBx, USB_EPTypeDef *ep);
  204. HAL_StatusTypeDef USB_EPStopXfer(USB_TypeDef *USBx, USB_EPTypeDef *ep);
  205. #endif /* defined (HAL_PCD_MODULE_ENABLED) */
  206.  
  207. HAL_StatusTypeDef USB_SetDevAddress(USB_TypeDef *USBx, uint8_t address);
  208. HAL_StatusTypeDef USB_DevConnect(USB_TypeDef *USBx);
  209. HAL_StatusTypeDef USB_DevDisconnect(USB_TypeDef *USBx);
  210. HAL_StatusTypeDef USB_StopDevice(USB_TypeDef *USBx);
  211. uint32_t          USB_ReadInterrupts(USB_TypeDef const *USBx);
  212. HAL_StatusTypeDef USB_ActivateRemoteWakeup(USB_TypeDef *USBx);
  213. HAL_StatusTypeDef USB_DeActivateRemoteWakeup(USB_TypeDef *USBx);
  214.  
  215. void              USB_WritePMA(USB_TypeDef const *USBx, uint8_t *pbUsrBuf,
  216.                                uint16_t wPMABufAddr, uint16_t wNBytes);
  217.  
  218. void              USB_ReadPMA(USB_TypeDef const *USBx, uint8_t *pbUsrBuf,
  219.                               uint16_t wPMABufAddr, uint16_t wNBytes);
  220.  
  221. /**
  222.   * @}
  223.   */
  224.  
  225. /**
  226.   * @}
  227.   */
  228.  
  229. /**
  230.   * @}
  231.   */
  232.  
  233. /**
  234.   * @}
  235.   */
  236. #endif /* defined (USB) */
  237.  
  238. #ifdef __cplusplus
  239. }
  240. #endif /* __cplusplus */
  241.  
  242.  
  243. #endif /* STM32L1xx_LL_USB_H */
  244.