Subversion Repositories FuelGauge

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 mjames 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****/