Subversion Repositories ScreenTimer

Rev

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 PCD_Speed/HCD_Speed
64
                                                                                 (HCD_SPEED_xxx, HCD_SPEED_xxx) */
65
 
66
  uint32_t ep0_mps;                 /*!< Set the Endpoint 0 Max Packet size.                                    */
67
 
68
  uint32_t phy_itface;              /*!< Select the used PHY interface.
69
                                         This parameter can be any value of @ref PCD_PHY_Module/HCD_PHY_Module  */
70
 
71
  uint32_t Sof_enable;              /*!< Enable or disable the output of the SOF signal.                        */
72
 
73
  uint32_t low_power_enable;        /*!< Enable or disable Low Power mode                                       */
74
 
75
  uint32_t lpm_enable;              /*!< Enable or disable Battery charging.                                    */
76
 
77
  uint32_t battery_charging_enable; /*!< Enable or disable Battery charging.                                    */
78
} USB_CfgTypeDef;
79
 
80
typedef struct
81
{
82
  uint8_t   num;             /*!< Endpoint number
83
                                  This parameter must be a number between Min_Data = 1 and Max_Data = 15    */
84
 
85
  uint8_t   is_in;           /*!< Endpoint direction
86
                                  This parameter must be a number between Min_Data = 0 and Max_Data = 1     */
87
 
88
  uint8_t   is_stall;        /*!< Endpoint stall condition
89
                                  This parameter must be a number between Min_Data = 0 and Max_Data = 1     */
90
 
91
  uint8_t   type;            /*!< Endpoint type
92
                                  This parameter can be any value of @ref USB_EP_Type                       */
93
 
94
  uint8_t   data_pid_start;  /*!< Initial data PID
95
                                  This parameter must be a number between Min_Data = 0 and Max_Data = 1     */
96
 
97
  uint16_t  pmaadress;       /*!< PMA Address
98
                                  This parameter can be any value between Min_addr = 0 and Max_addr = 1K    */
99
 
100
  uint16_t  pmaaddr0;        /*!< PMA Address0
101
                                  This parameter can be any value between Min_addr = 0 and Max_addr = 1K    */
102
 
103
  uint16_t  pmaaddr1;        /*!< PMA Address1
104
                                  This parameter can be any value between Min_addr = 0 and Max_addr = 1K    */
105
 
106
  uint8_t   doublebuffer;    /*!< Double buffer enable
107
                                  This parameter can be 0 or 1                                              */
108
 
109
  uint16_t  tx_fifo_num;     /*!< This parameter is not required by USB Device FS peripheral, it is used
110
                                  only by USB OTG FS peripheral
111
                                  This parameter is added to ensure compatibility across USB peripherals    */
112
 
113
  uint32_t  maxpacket;       /*!< Endpoint Max packet size
114
                                  This parameter must be a number between Min_Data = 0 and Max_Data = 64KB  */
115
 
116
  uint8_t   *xfer_buff;      /*!< Pointer to transfer buffer                                                */
117
 
118
  uint32_t  xfer_len;        /*!< Current transfer length                                                   */
119
 
120
  uint32_t  xfer_count;      /*!< Partial transfer length in case of multi packet transfer                  */
121
 
122
  uint32_t  xfer_len_db;      /*!< double buffer transfer length used with bulk double buffer in           */
123
 
124
  uint8_t   xfer_fill_db;     /*!< double buffer Need to Fill new buffer  used with bulk_in                */
125
 
126
} USB_EPTypeDef;
127
 
128
 
129
/* Exported constants --------------------------------------------------------*/
130
 
131
/** @defgroup PCD_Exported_Constants PCD Exported Constants
132
  * @{
133
  */
134
 
135
 
136
/** @defgroup USB_LL_EP0_MPS USB Low Layer EP0 MPS
137
  * @{
138
  */
139
#define EP_MPS_64                              0U
140
#define EP_MPS_32                              1U
141
#define EP_MPS_16                              2U
142
#define EP_MPS_8                               3U
143
/**
144
  * @}
145
  */
146
 
147
/** @defgroup USB_LL_EP_Type USB Low Layer EP Type
148
  * @{
149
  */
150
#define EP_TYPE_CTRL                           0U
151
#define EP_TYPE_ISOC                           1U
152
#define EP_TYPE_BULK                           2U
153
#define EP_TYPE_INTR                           3U
154
#define EP_TYPE_MSK                            3U
155
/**
156
  * @}
157
  */
158
 
159
/** @defgroup USB_LL Device Speed
160
  * @{
161
  */
162
#define USBD_FS_SPEED                          2U
163
/**
164
  * @}
165
  */
166
 
167
#define BTABLE_ADDRESS                         0x000U
168
#define PMA_ACCESS                             1U
169
 
170
#define EP_ADDR_MSK                            0x7U
171
/**
172
  * @}
173
  */
174
 
175
/* Exported macro ------------------------------------------------------------*/
176
/**
177
  * @}
178
  */
179
 
180
/* Exported functions --------------------------------------------------------*/
181
/** @addtogroup USB_LL_Exported_Functions USB Low Layer Exported Functions
182
  * @{
183
  */
184
 
185
 
186
HAL_StatusTypeDef USB_CoreInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg);
187
HAL_StatusTypeDef USB_DevInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg);
188
HAL_StatusTypeDef USB_EnableGlobalInt(USB_TypeDef *USBx);
189
HAL_StatusTypeDef USB_DisableGlobalInt(USB_TypeDef *USBx);
190
HAL_StatusTypeDef USB_SetCurrentMode(USB_TypeDef *USBx, USB_ModeTypeDef mode);
191
 
192
#if defined (HAL_PCD_MODULE_ENABLED)
193
HAL_StatusTypeDef USB_ActivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep);
194
HAL_StatusTypeDef USB_DeactivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep);
195
HAL_StatusTypeDef USB_EPStartXfer(USB_TypeDef *USBx, USB_EPTypeDef *ep);
196
HAL_StatusTypeDef USB_EPSetStall(USB_TypeDef *USBx, USB_EPTypeDef *ep);
197
HAL_StatusTypeDef USB_EPClearStall(USB_TypeDef *USBx, USB_EPTypeDef *ep);
198
#endif /* defined (HAL_PCD_MODULE_ENABLED) */
199
 
200
HAL_StatusTypeDef USB_SetDevAddress(USB_TypeDef *USBx, uint8_t address);
201
HAL_StatusTypeDef USB_DevConnect(USB_TypeDef *USBx);
202
HAL_StatusTypeDef USB_DevDisconnect(USB_TypeDef *USBx);
203
HAL_StatusTypeDef USB_StopDevice(USB_TypeDef *USBx);
204
uint32_t          USB_ReadInterrupts(USB_TypeDef *USBx);
205
HAL_StatusTypeDef USB_ActivateRemoteWakeup(USB_TypeDef *USBx);
206
HAL_StatusTypeDef USB_DeActivateRemoteWakeup(USB_TypeDef *USBx);
207
 
208
void              USB_WritePMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf,
209
                               uint16_t wPMABufAddr, uint16_t wNBytes);
210
 
211
void              USB_ReadPMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf,
212
                              uint16_t wPMABufAddr, uint16_t wNBytes);
213
 
214
/**
215
  * @}
216
  */
217
 
218
/**
219
  * @}
220
  */
221
 
222
/**
223
  * @}
224
  */
225
 
226
/**
227
  * @}
228
  */
229
#endif /* defined (USB) */
230
 
231
#ifdef __cplusplus
232
}
233
#endif
234
 
235
 
236
#endif /* STM32F0xx_LL_USB_H */
237
 
238
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/