Subversion Repositories LedShow

Rev

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

Rev Author Line No. Line
2 mjames 1
/**
2
  ******************************************************************************
3
  * @file    stm32f1xx_hal_i2s.h
4
  * @author  MCD Application Team
5
  * @brief   Header file of I2S HAL module.
6
  ******************************************************************************
7
  * @attention
8
  *
9
  * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
10
  *
11
  * Redistribution and use in source and binary forms, with or without modification,
12
  * are permitted provided that the following conditions are met:
13
  *   1. Redistributions of source code must retain the above copyright notice,
14
  *      this list of conditions and the following disclaimer.
15
  *   2. Redistributions in binary form must reproduce the above copyright notice,
16
  *      this list of conditions and the following disclaimer in the documentation
17
  *      and/or other materials provided with the distribution.
18
  *   3. Neither the name of STMicroelectronics nor the names of its contributors
19
  *      may be used to endorse or promote products derived from this software
20
  *      without specific prior written permission.
21
  *
22
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
25
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
26
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
28
  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
  *
33
  ******************************************************************************
34
  */
35
 
36
/* Define to prevent recursive inclusion -------------------------------------*/
37
#ifndef __STM32F1xx_HAL_I2S_H
38
#define __STM32F1xx_HAL_I2S_H
39
 
40
#ifdef __cplusplus
41
 extern "C" {
42
#endif
43
 
44
#if defined(STM32F103xE) || defined(STM32F103xG) || defined(STM32F105xC) || defined(STM32F107xC)
45
 
46
/* Includes ------------------------------------------------------------------*/
47
#include "stm32f1xx_hal_def.h"  
48
 
49
/** @addtogroup STM32F1xx_HAL_Driver
50
  * @{
51
  */
52
 
53
/** @addtogroup I2S
54
  * @{
55
  */
56
 
57
/* Exported types ------------------------------------------------------------*/
58
/** @defgroup I2S_Exported_Types I2S Exported Types
59
  * @{
60
  */
61
 
62
/**
63
  * @brief I2S Init structure definition
64
  */
65
typedef struct
66
{
67
  uint32_t Mode;            /*!< Specifies the I2S operating mode.
68
                                 This parameter can be a value of @ref I2S_Mode */
69
 
70
  uint32_t Standard;        /*!< Specifies the standard used for the I2S communication.
71
                                 This parameter can be a value of @ref I2S_Standard */
72
 
73
  uint32_t DataFormat;      /*!< Specifies the data format for the I2S communication.
74
                                 This parameter can be a value of @ref I2S_Data_Format */
75
 
76
  uint32_t MCLKOutput;      /*!< Specifies whether the I2S MCLK output is enabled or not.
77
                                 This parameter can be a value of @ref I2S_MCLK_Output */
78
 
79
  uint32_t AudioFreq;       /*!< Specifies the frequency selected for the I2S communication.
80
                                 This parameter can be a value of @ref I2S_Audio_Frequency */
81
 
82
  uint32_t CPOL;            /*!< Specifies the idle state of the I2S clock.
83
                                 This parameter can be a value of @ref I2S_Clock_Polarity */
84
}I2S_InitTypeDef;
85
 
86
/**
87
  * @brief  HAL State structures definition
88
  */
89
typedef enum
90
{
91
  HAL_I2S_STATE_RESET      = 0x00U,  /*!< I2S not yet initialized or disabled                */
92
  HAL_I2S_STATE_READY      = 0x01U,  /*!< I2S initialized and ready for use                  */
93
  HAL_I2S_STATE_BUSY       = 0x02U,  /*!< I2S internal process is ongoing                    */
94
  HAL_I2S_STATE_BUSY_TX    = 0x03U,  /*!< Data Transmission process is ongoing               */
95
  HAL_I2S_STATE_BUSY_RX    = 0x04U,  /*!< Data Reception process is ongoing                  */
96
  HAL_I2S_STATE_BUSY_TX_RX = 0x05U,  /*!< Data Transmission and Reception process is ongoing */
97
  HAL_I2S_STATE_TIMEOUT    = 0x06U,  /*!< I2S timeout state                                  */
98
  HAL_I2S_STATE_ERROR      = 0x07U   /*!< I2S error state                                    */
99
 
100
}HAL_I2S_StateTypeDef;
101
 
102
/**
103
  * @brief I2S handle Structure definition
104
  */
105
typedef struct __I2S_HandleTypeDef
106
{
107
  SPI_TypeDef                *Instance;    /*!< I2S registers base address        */
108
 
109
  I2S_InitTypeDef            Init;         /*!< I2S communication parameters      */
110
 
111
  uint16_t                   *pTxBuffPtr;  /*!< Pointer to I2S Tx transfer buffer */
112
 
113
  __IO uint16_t              TxXferSize;   /*!< I2S Tx transfer size              */
114
 
115
  __IO uint16_t              TxXferCount;  /*!< I2S Tx transfer Counter           */
116
 
117
  uint16_t                   *pRxBuffPtr;  /*!< Pointer to I2S Rx transfer buffer */
118
 
119
  __IO uint16_t              RxXferSize;   /*!< I2S Rx transfer size              */
120
 
121
  __IO uint16_t              RxXferCount;  /*!< I2S Rx transfer counter
122
                                              (This field is initialized at the
123
                                               same value as transfer size at the
124
                                               beginning of the transfer and
125
                                               decremented when a sample is received
126
                                               NbSamplesReceived = RxBufferSize-RxBufferCount) */
127
 
128
  void (*IrqHandlerISR)      (struct __I2S_HandleTypeDef *hi2s);   /*!< I2S function pointer on IrqHandler   */
129
 
130
  DMA_HandleTypeDef          *hdmatx;      /*!< I2S Tx DMA handle parameters      */
131
 
132
  DMA_HandleTypeDef          *hdmarx;      /*!< I2S Rx DMA handle parameters      */
133
 
134
  __IO HAL_LockTypeDef       Lock;         /*!< I2S locking object                */
135
 
136
  __IO HAL_I2S_StateTypeDef  State;        /*!< I2S communication state           */
137
 
138
  __IO uint32_t              ErrorCode;    /*!< I2S Error code
139
                                              This parameter can be a value of @ref I2S_ErrorCode */
140
 
141
}I2S_HandleTypeDef;
142
/**
143
  * @}
144
  */
145
 
146
/* Exported constants --------------------------------------------------------*/
147
/** @defgroup I2S_Exported_Constants I2S Exported Constants
148
  * @{
149
  */
150
/**
151
  * @defgroup  I2S_ErrorCode I2S Error Code
152
  * @{
153
  */
154
#define HAL_I2S_ERROR_NONE               0x00000000U  /*!< No error                    */
155
#define HAL_I2S_ERROR_TIMEOUT            0x00000001U  /*!< Timeout error               */
156
#define HAL_I2S_ERROR_OVR                0x00000002U  /*!< OVR error                   */
157
#define HAL_I2S_ERROR_UDR                0x00000004U  /*!< UDR error                   */
158
#define HAL_I2S_ERROR_DMA                0x00000008U  /*!< DMA transfer error          */
159
#define HAL_I2S_ERROR_PRESCALER          0x00000010U  /*!< Prescaler Calculation error */
160
/**
161
  * @}
162
  */
163
 
164
/** @defgroup I2S_Mode I2S Mode
165
  * @{
166
  */
167
#define I2S_MODE_SLAVE_TX                0x00000000U
168
#define I2S_MODE_SLAVE_RX                ((uint32_t)SPI_I2SCFGR_I2SCFG_0)
169
#define I2S_MODE_MASTER_TX               ((uint32_t)SPI_I2SCFGR_I2SCFG_1)
170
#define I2S_MODE_MASTER_RX               ((uint32_t)(SPI_I2SCFGR_I2SCFG_0 | SPI_I2SCFGR_I2SCFG_1))
171
/**
172
  * @}
173
  */
174
 
175
/** @defgroup I2S_Standard I2S Standard
176
  * @{
177
  */
178
#define I2S_STANDARD_PHILIPS             0x00000000U
179
#define I2S_STANDARD_MSB                 ((uint32_t)SPI_I2SCFGR_I2SSTD_0)
180
#define I2S_STANDARD_LSB                 ((uint32_t)SPI_I2SCFGR_I2SSTD_1)
181
#define I2S_STANDARD_PCM_SHORT           ((uint32_t)(SPI_I2SCFGR_I2SSTD_0 | SPI_I2SCFGR_I2SSTD_1))
182
#define I2S_STANDARD_PCM_LONG            ((uint32_t)(SPI_I2SCFGR_I2SSTD_0 | SPI_I2SCFGR_I2SSTD_1 | SPI_I2SCFGR_PCMSYNC))
183
/**
184
  * @}
185
  */
186
 
187
/** @defgroup I2S_Data_Format I2S Data Format
188
  * @{
189
  */
190
#define I2S_DATAFORMAT_16B               0x00000000U
191
#define I2S_DATAFORMAT_16B_EXTENDED      ((uint32_t)SPI_I2SCFGR_CHLEN)
192
#define I2S_DATAFORMAT_24B               ((uint32_t)(SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_0))
193
#define I2S_DATAFORMAT_32B               ((uint32_t)(SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_1))
194
/**
195
  * @}
196
  */
197
 
198
/** @defgroup I2S_MCLK_Output I2S Mclk Output
199
  * @{
200
  */
201
#define I2S_MCLKOUTPUT_ENABLE           ((uint32_t)SPI_I2SPR_MCKOE)
202
#define I2S_MCLKOUTPUT_DISABLE          0x00000000U
203
/**
204
  * @}
205
  */
206
 
207
/** @defgroup I2S_Audio_Frequency I2S Audio Frequency
208
  * @{
209
  */
210
#define I2S_AUDIOFREQ_192K               192000U
211
#define I2S_AUDIOFREQ_96K                96000U
212
#define I2S_AUDIOFREQ_48K                48000U
213
#define I2S_AUDIOFREQ_44K                44100U
214
#define I2S_AUDIOFREQ_32K                32000U
215
#define I2S_AUDIOFREQ_22K                22050U
216
#define I2S_AUDIOFREQ_16K                16000U
217
#define I2S_AUDIOFREQ_11K                11025U
218
#define I2S_AUDIOFREQ_8K                 8000U
219
#define I2S_AUDIOFREQ_DEFAULT            2U
220
/**
221
  * @}
222
  */
223
 
224
/** @defgroup I2S_Clock_Polarity  I2S Clock Polarity
225
  * @{
226
  */
227
#define I2S_CPOL_LOW                    0x00000000U
228
#define I2S_CPOL_HIGH                   ((uint32_t)SPI_I2SCFGR_CKPOL)
229
/**
230
  * @}
231
  */
232
 
233
/** @defgroup I2S_Interrupts_Definition I2S Interrupts Definition
234
  * @{
235
  */
236
#define I2S_IT_TXE                      SPI_CR2_TXEIE
237
#define I2S_IT_RXNE                     SPI_CR2_RXNEIE
238
#define I2S_IT_ERR                      SPI_CR2_ERRIE
239
/**
240
  * @}
241
  */
242
 
243
/** @defgroup I2S_Flags_Definition I2S Flags Definition
244
  * @{
245
  */
246
#define I2S_FLAG_TXE                    SPI_SR_TXE
247
#define I2S_FLAG_RXNE                   SPI_SR_RXNE
248
 
249
#define I2S_FLAG_UDR                    SPI_SR_UDR
250
#define I2S_FLAG_OVR                    SPI_SR_OVR
251
#define I2S_FLAG_FRE                    SPI_SR_FRE
252
 
253
#define I2S_FLAG_CHSIDE                 SPI_SR_CHSIDE
254
#define I2S_FLAG_BSY                    SPI_SR_BSY
255
/**
256
  * @}
257
  */
258
 
259
/**
260
  * @}
261
  */
262
 
263
/* Exported macro ------------------------------------------------------------*/
264
/** @defgroup I2S_Exported_Macros I2S Exported Macros
265
  * @{
266
  */
267
 
268
/** @brief Reset I2S handle state
269
  * @param  __HANDLE__: specifies the I2S Handle.
270
  * @retval None
271
  */
272
#define __HAL_I2S_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_I2S_STATE_RESET)
273
 
274
/** @brief  Enable the specified SPI peripheral (in I2S mode).
275
  * @param  __HANDLE__: specifies the I2S Handle.
276
  * @retval None
277
  */
278
#define __HAL_I2S_ENABLE(__HANDLE__)    (SET_BIT((__HANDLE__)->Instance->I2SCFGR, SPI_I2SCFGR_I2SE))
279
 
280
/** @brief  Disable the specified SPI peripheral (in I2S mode).
281
  * @param  __HANDLE__: specifies the I2S Handle.
282
  * @retval None
283
  */
284
#define __HAL_I2S_DISABLE(__HANDLE__) (CLEAR_BIT((__HANDLE__)->Instance->I2SCFGR, SPI_I2SCFGR_I2SE))
285
 
286
/** @brief  Enable the specified I2S interrupts.
287
  * @param  __HANDLE__: specifies the I2S Handle.
288
  * @param  __INTERRUPT__: specifies the interrupt source to enable or disable.
289
  *         This parameter can be one of the following values:
290
  *            @arg I2S_IT_TXE: Tx buffer empty interrupt enable
291
  *            @arg I2S_IT_RXNE: RX buffer not empty interrupt enable
292
  *            @arg I2S_IT_ERR: Error interrupt enable
293
  * @retval None
294
  */
295
#define __HAL_I2S_ENABLE_IT(__HANDLE__, __INTERRUPT__)    (SET_BIT((__HANDLE__)->Instance->CR2,(__INTERRUPT__)))
296
 
297
/** @brief  Disable the specified I2S interrupts.
298
  * @param  __HANDLE__: specifies the I2S Handle.
299
  * @param  __INTERRUPT__: specifies the interrupt source to enable or disable.
300
  *         This parameter can be one of the following values:
301
  *            @arg I2S_IT_TXE: Tx buffer empty interrupt enable
302
  *            @arg I2S_IT_RXNE: RX buffer not empty interrupt enable
303
  *            @arg I2S_IT_ERR: Error interrupt enable
304
  * @retval None
305
  */
306
#define __HAL_I2S_DISABLE_IT(__HANDLE__, __INTERRUPT__) (CLEAR_BIT((__HANDLE__)->Instance->CR2,(__INTERRUPT__)))
307
 
308
/** @brief  Checks if the specified I2S interrupt source is enabled or disabled.
309
  * @param  __HANDLE__: specifies the I2S Handle.
310
  *         This parameter can be I2S where x: 1, 2, or 3 to select the I2S peripheral.
311
  * @param  __INTERRUPT__: specifies the I2S interrupt source to check.
312
  *          This parameter can be one of the following values:
313
  *            @arg I2S_IT_TXE: Tx buffer empty interrupt enable
314
  *            @arg I2S_IT_RXNE: RX buffer not empty interrupt enable
315
  *            @arg I2S_IT_ERR: Error interrupt enable
316
  * @retval The new state of __IT__ (TRUE or FALSE).
317
  */
318
#define __HAL_I2S_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->CR2 & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
319
 
320
/** @brief  Checks whether the specified I2S flag is set or not.
321
  * @param  __HANDLE__: specifies the I2S Handle.
322
  * @param  __FLAG__: specifies the flag to check.
323
  *         This parameter can be one of the following values:
324
  *            @arg I2S_FLAG_RXNE: Receive buffer not empty flag
325
  *            @arg I2S_FLAG_TXE: Transmit buffer empty flag
326
  *            @arg I2S_FLAG_UDR: Underrun flag
327
  *            @arg I2S_FLAG_OVR: Overrun flag
328
  *            @arg I2S_FLAG_FRE: Frame error flag
329
  *            @arg I2S_FLAG_CHSIDE: Channel Side flag
330
  *            @arg I2S_FLAG_BSY: Busy flag
331
  * @retval The new state of __FLAG__ (TRUE or FALSE).
332
  */
333
#define __HAL_I2S_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
334
 
335
/** @brief Clears the I2S OVR pending flag.
336
  * @param  __HANDLE__: specifies the I2S Handle.
337
  * @retval None
338
  */
339
#define __HAL_I2S_CLEAR_OVRFLAG(__HANDLE__)     \
340
  do{                                           \
341
    __IO uint32_t tmpreg = 0x00U;               \
342
    tmpreg = (__HANDLE__)->Instance->DR;        \
343
    tmpreg = (__HANDLE__)->Instance->SR;        \
344
    UNUSED(tmpreg);                             \
345
  } while(0U)
346
 
347
/** @brief Clears the I2S UDR pending flag.
348
  * @param  __HANDLE__: specifies the I2S Handle.
349
  * @retval None
350
  */
351
#define __HAL_I2S_CLEAR_UDRFLAG(__HANDLE__)     \
352
  do{                                           \
353
  __IO uint32_t tmpreg = 0x00U;                 \
354
  tmpreg = (__HANDLE__)->Instance->SR;          \
355
  UNUSED(tmpreg);                               \
356
  } while(0U)
357
/**
358
  * @}
359
  */
360
 
361
/* Exported functions --------------------------------------------------------*/
362
/** @addtogroup I2S_Exported_Functions
363
  * @{
364
  */
365
 
366
/** @addtogroup I2S_Exported_Functions_Group1
367
  * @{
368
  */
369
/* Initialization/de-initialization functions  ********************************/
370
HAL_StatusTypeDef HAL_I2S_Init(I2S_HandleTypeDef *hi2s);
371
HAL_StatusTypeDef HAL_I2S_DeInit (I2S_HandleTypeDef *hi2s);
372
void HAL_I2S_MspInit(I2S_HandleTypeDef *hi2s);
373
void HAL_I2S_MspDeInit(I2S_HandleTypeDef *hi2s);
374
/**
375
  * @}
376
  */
377
 
378
/** @addtogroup I2S_Exported_Functions_Group2
379
  * @{
380
  */
381
/* I/O operation functions  ***************************************************/
382
/* Blocking mode: Polling */
383
HAL_StatusTypeDef HAL_I2S_Transmit(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_t Timeout);
384
HAL_StatusTypeDef HAL_I2S_Receive(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_t Timeout);
385
 
386
 /* Non-Blocking mode: Interrupt */
387
HAL_StatusTypeDef HAL_I2S_Transmit_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
388
HAL_StatusTypeDef HAL_I2S_Receive_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
389
void HAL_I2S_IRQHandler(I2S_HandleTypeDef *hi2s);
390
 
391
/* Non-Blocking mode: DMA */
392
HAL_StatusTypeDef HAL_I2S_Transmit_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
393
HAL_StatusTypeDef HAL_I2S_Receive_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
394
 
395
HAL_StatusTypeDef HAL_I2S_DMAPause(I2S_HandleTypeDef *hi2s);
396
HAL_StatusTypeDef HAL_I2S_DMAResume(I2S_HandleTypeDef *hi2s);
397
HAL_StatusTypeDef HAL_I2S_DMAStop(I2S_HandleTypeDef *hi2s);
398
 
399
/* Callbacks used in non blocking modes (Interrupt and DMA) *******************/
400
void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s);
401
void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s);
402
void HAL_I2S_RxHalfCpltCallback(I2S_HandleTypeDef *hi2s);
403
void HAL_I2S_RxCpltCallback(I2S_HandleTypeDef *hi2s);
404
void HAL_I2S_ErrorCallback(I2S_HandleTypeDef *hi2s);
405
/**
406
  * @}
407
  */
408
 
409
/** @addtogroup I2S_Exported_Functions_Group3
410
  * @{
411
  */
412
/* Peripheral Control and State functions  ************************************/
413
HAL_I2S_StateTypeDef HAL_I2S_GetState(I2S_HandleTypeDef *hi2s);
414
uint32_t HAL_I2S_GetError(I2S_HandleTypeDef *hi2s);
415
/**
416
  * @}
417
  */
418
 
419
/**
420
  * @}
421
  */
422
 
423
/* Private types -------------------------------------------------------------*/
424
/* Private variables ---------------------------------------------------------*/
425
/* Private constants ---------------------------------------------------------*/
426
/** @defgroup I2S_Private_Constants I2S Private Constants
427
  * @{
428
  */
429
 
430
/**
431
  * @}
432
  */
433
 
434
/* Private macros ------------------------------------------------------------*/
435
/** @defgroup I2S_Private_Macros I2S Private Macros
436
  * @{
437
  */
438
#define IS_I2S_MODE(MODE) (((MODE) == I2S_MODE_SLAVE_TX)  || \
439
                           ((MODE) == I2S_MODE_SLAVE_RX)  || \
440
                           ((MODE) == I2S_MODE_MASTER_TX) || \
441
                           ((MODE) == I2S_MODE_MASTER_RX))
442
 
443
#define IS_I2S_STANDARD(STANDARD) (((STANDARD) == I2S_STANDARD_PHILIPS)   || \
444
                                   ((STANDARD) == I2S_STANDARD_MSB)       || \
445
                                   ((STANDARD) == I2S_STANDARD_LSB)       || \
446
                                   ((STANDARD) == I2S_STANDARD_PCM_SHORT) || \
447
                                   ((STANDARD) == I2S_STANDARD_PCM_LONG))
448
 
449
#define IS_I2S_DATA_FORMAT(FORMAT) (((FORMAT) == I2S_DATAFORMAT_16B)          || \
450
                                    ((FORMAT) == I2S_DATAFORMAT_16B_EXTENDED) || \
451
                                    ((FORMAT) == I2S_DATAFORMAT_24B)          || \
452
                                    ((FORMAT) == I2S_DATAFORMAT_32B))
453
 
454
#define IS_I2S_MCLK_OUTPUT(OUTPUT) (((OUTPUT) == I2S_MCLKOUTPUT_ENABLE) || \
455
                                    ((OUTPUT) == I2S_MCLKOUTPUT_DISABLE))
456
 
457
#define IS_I2S_AUDIO_FREQ(FREQ) ((((FREQ) >= I2S_AUDIOFREQ_8K)    && \
458
                                  ((FREQ) <= I2S_AUDIOFREQ_192K)) || \
459
                                  ((FREQ) == I2S_AUDIOFREQ_DEFAULT))
460
 
461
#define IS_I2S_CPOL(CPOL) (((CPOL) == I2S_CPOL_LOW) || \
462
                           ((CPOL) == I2S_CPOL_HIGH))
463
/**
464
  * @}
465
  */
466
 
467
/* Private Fonctions ---------------------------------------------------------*/
468
/** @defgroup I2S_Private_Functions I2S Private Functions
469
  * @{
470
  */
471
/* Private functions are defined in stm32f1xx_hal_i2s.c file */
472
/**
473
  * @}
474
  */
475
 
476
/**
477
  * @}
478
  */
479
 
480
/**
481
  * @}
482
  */
483
#endif /* STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */
484
 
485
#ifdef __cplusplus
486
}
487
#endif
488
 
489
#endif /* __STM32F1xx_HAL_I2S_H */
490
 
491
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/