STM CMSIS
stm32f4xx_hal_i2s.h
Go to the documentation of this file.
1 
38 /* Define to prevent recursive inclusion -------------------------------------*/
39 #ifndef __STM32F4xx_HAL_I2S_H
40 #define __STM32F4xx_HAL_I2S_H
41 
42 #ifdef __cplusplus
43  extern "C" {
44 #endif
45 
46 /* Includes ------------------------------------------------------------------*/
47 #include "stm32f4xx_hal_def.h"
48 
57 /* Exported types ------------------------------------------------------------*/
65 typedef struct
66 {
67  uint32_t Mode;
70  uint32_t Standard;
73  uint32_t DataFormat;
76  uint32_t MCLKOutput;
79  uint32_t AudioFreq;
82  uint32_t CPOL;
85  uint32_t ClockSource;
88  uint32_t FullDuplexMode;
92 
96 typedef enum
97 {
108 
112 typedef struct
113 {
114  SPI_TypeDef *Instance; /* I2S registers base address */
115 
116  I2S_InitTypeDef Init; /* I2S communication parameters */
117 
118  uint16_t *pTxBuffPtr; /* Pointer to I2S Tx transfer buffer */
119 
120  __IO uint16_t TxXferSize; /* I2S Tx transfer size */
121 
122  __IO uint16_t TxXferCount; /* I2S Tx transfer Counter */
123 
124  uint16_t *pRxBuffPtr; /* Pointer to I2S Rx transfer buffer */
125 
126  __IO uint16_t RxXferSize; /* I2S Rx transfer size */
127 
128  __IO uint16_t RxXferCount; /* I2S Rx transfer counter */
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 
145 /* Exported constants --------------------------------------------------------*/
154 #define HAL_I2S_ERROR_NONE ((uint32_t)0x00000000U)
155 #define HAL_I2S_ERROR_UDR ((uint32_t)0x00000001U)
156 #define HAL_I2S_ERROR_OVR ((uint32_t)0x00000002U)
157 #define HAL_I2SEX_ERROR_UDR ((uint32_t)0x00000004U)
158 #define HAL_I2SEX_ERROR_OVR ((uint32_t)0x00000008U)
159 #define HAL_I2S_ERROR_FRE ((uint32_t)0x00000010U)
160 #define HAL_I2S_ERROR_DMA ((uint32_t)0x00000020U)
168 #define I2S_MODE_SLAVE_TX ((uint32_t)0x00000000U)
169 #define I2S_MODE_SLAVE_RX ((uint32_t)0x00000100U)
170 #define I2S_MODE_MASTER_TX ((uint32_t)0x00000200U)
171 #define I2S_MODE_MASTER_RX ((uint32_t)0x00000300U)
172 
179 #define I2S_STANDARD_PHILIPS ((uint32_t)0x00000000U)
180 #define I2S_STANDARD_MSB ((uint32_t)0x00000010U)
181 #define I2S_STANDARD_LSB ((uint32_t)0x00000020U)
182 #define I2S_STANDARD_PCM_SHORT ((uint32_t)0x00000030U)
183 #define I2S_STANDARD_PCM_LONG ((uint32_t)0x000000B0U)
184 
191 #define I2S_DATAFORMAT_16B ((uint32_t)0x00000000U)
192 #define I2S_DATAFORMAT_16B_EXTENDED ((uint32_t)0x00000001U)
193 #define I2S_DATAFORMAT_24B ((uint32_t)0x00000003U)
194 #define I2S_DATAFORMAT_32B ((uint32_t)0x00000005U)
195 
202 #define I2S_MCLKOUTPUT_ENABLE ((uint32_t)SPI_I2SPR_MCKOE)
203 #define I2S_MCLKOUTPUT_DISABLE ((uint32_t)0x00000000U)
204 
211 #define I2S_AUDIOFREQ_192K ((uint32_t)192000U)
212 #define I2S_AUDIOFREQ_96K ((uint32_t)96000U)
213 #define I2S_AUDIOFREQ_48K ((uint32_t)48000U)
214 #define I2S_AUDIOFREQ_44K ((uint32_t)44100U)
215 #define I2S_AUDIOFREQ_32K ((uint32_t)32000U)
216 #define I2S_AUDIOFREQ_22K ((uint32_t)22050U)
217 #define I2S_AUDIOFREQ_16K ((uint32_t)16000U)
218 #define I2S_AUDIOFREQ_11K ((uint32_t)11025U)
219 #define I2S_AUDIOFREQ_8K ((uint32_t)8000U)
220 #define I2S_AUDIOFREQ_DEFAULT ((uint32_t)2U)
221 
228 #define I2S_FULLDUPLEXMODE_DISABLE ((uint32_t)0x00000000U)
229 #define I2S_FULLDUPLEXMODE_ENABLE ((uint32_t)0x00000001U)
230 
237 #define I2S_CPOL_LOW ((uint32_t)0x00000000U)
238 #define I2S_CPOL_HIGH ((uint32_t)SPI_I2SCFGR_CKPOL)
239 
246 #define I2S_IT_TXE SPI_CR2_TXEIE
247 #define I2S_IT_RXNE SPI_CR2_RXNEIE
248 #define I2S_IT_ERR SPI_CR2_ERRIE
249 
256 #define I2S_FLAG_TXE SPI_SR_TXE
257 #define I2S_FLAG_RXNE SPI_SR_RXNE
258 
259 #define I2S_FLAG_UDR SPI_SR_UDR
260 #define I2S_FLAG_OVR SPI_SR_OVR
261 #define I2S_FLAG_FRE SPI_SR_FRE
262 
263 #define I2S_FLAG_CHSIDE SPI_SR_CHSIDE
264 #define I2S_FLAG_BSY SPI_SR_BSY
265 
273 /* Exported macro ------------------------------------------------------------*/
282 #define __HAL_I2S_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_I2S_STATE_RESET)
283 
288 #define __HAL_I2S_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->I2SCFGR |= SPI_I2SCFGR_I2SE)
289 #define __HAL_I2S_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->I2SCFGR &= ~SPI_I2SCFGR_I2SE)
290 
300 #define __HAL_I2S_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR2 |= (__INTERRUPT__))
301 #define __HAL_I2S_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR2 &= ~(__INTERRUPT__))
302 
313 #define __HAL_I2S_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->CR2 & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
314 
328 #define __HAL_I2S_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
329 
334 #define __HAL_I2S_CLEAR_OVRFLAG(__HANDLE__) \
335  do{ \
336  __IO uint32_t tmpreg = 0x00U; \
337  tmpreg = (__HANDLE__)->Instance->DR; \
338  tmpreg = (__HANDLE__)->Instance->SR; \
339  UNUSED(tmpreg); \
340  } while(0)
341 
346 #define __HAL_I2S_CLEAR_UDRFLAG(__HANDLE__) \
347  do{ \
348  __IO uint32_t tmpreg = 0x00U; \
349  tmpreg = (__HANDLE__)->Instance->SR; \
350  UNUSED(tmpreg); \
351  } while(0)
352 
356 /* Include I2S Extension module */
357 #include "stm32f4xx_hal_i2s_ex.h"
358 
359 /* Exported functions --------------------------------------------------------*/
367 /* Initialization/de-initialization functions **********************************/
368 HAL_StatusTypeDef HAL_I2S_Init(I2S_HandleTypeDef *hi2s);
369 HAL_StatusTypeDef HAL_I2S_DeInit (I2S_HandleTypeDef *hi2s);
370 void HAL_I2S_MspInit(I2S_HandleTypeDef *hi2s);
371 void HAL_I2S_MspDeInit(I2S_HandleTypeDef *hi2s);
379 /* I/O operation functions *****************************************************/
380 /* Blocking mode: Polling */
381 HAL_StatusTypeDef HAL_I2S_Transmit(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_t Timeout);
382 HAL_StatusTypeDef HAL_I2S_Receive(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_t Timeout);
383 
384  /* Non-Blocking mode: Interrupt */
385 HAL_StatusTypeDef HAL_I2S_Transmit_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
386 HAL_StatusTypeDef HAL_I2S_Receive_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
387 void HAL_I2S_IRQHandler(I2S_HandleTypeDef *hi2s);
388 
389 /* Non-Blocking mode: DMA */
390 HAL_StatusTypeDef HAL_I2S_Transmit_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
391 HAL_StatusTypeDef HAL_I2S_Receive_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
392 
393 HAL_StatusTypeDef HAL_I2S_DMAPause(I2S_HandleTypeDef *hi2s);
394 HAL_StatusTypeDef HAL_I2S_DMAResume(I2S_HandleTypeDef *hi2s);
395 HAL_StatusTypeDef HAL_I2S_DMAStop(I2S_HandleTypeDef *hi2s);
396 
397 /* Peripheral Control and State functions **************************************/
398 HAL_I2S_StateTypeDef HAL_I2S_GetState(I2S_HandleTypeDef *hi2s);
399 uint32_t HAL_I2S_GetError(I2S_HandleTypeDef *hi2s);
400 
401 /* Callbacks used in non blocking modes (Interrupt and DMA) *******************/
402 void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s);
403 void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s);
404 void HAL_I2S_RxHalfCpltCallback(I2S_HandleTypeDef *hi2s);
405 void HAL_I2S_RxCpltCallback(I2S_HandleTypeDef *hi2s);
406 void HAL_I2S_ErrorCallback(I2S_HandleTypeDef *hi2s);
415 /* Private types -------------------------------------------------------------*/
416 /* Private variables ---------------------------------------------------------*/
417 /* Private constants ---------------------------------------------------------*/
426 /* Private macros ------------------------------------------------------------*/
430 #define IS_I2S_MODE(MODE) (((MODE) == I2S_MODE_SLAVE_TX) || \
431  ((MODE) == I2S_MODE_SLAVE_RX) || \
432  ((MODE) == I2S_MODE_MASTER_TX) || \
433  ((MODE) == I2S_MODE_MASTER_RX))
434 
435 #define IS_I2S_STANDARD(STANDARD) (((STANDARD) == I2S_STANDARD_PHILIPS) || \
436  ((STANDARD) == I2S_STANDARD_MSB) || \
437  ((STANDARD) == I2S_STANDARD_LSB) || \
438  ((STANDARD) == I2S_STANDARD_PCM_SHORT) || \
439  ((STANDARD) == I2S_STANDARD_PCM_LONG))
440 
441 #define IS_I2S_DATA_FORMAT(FORMAT) (((FORMAT) == I2S_DATAFORMAT_16B) || \
442  ((FORMAT) == I2S_DATAFORMAT_16B_EXTENDED) || \
443  ((FORMAT) == I2S_DATAFORMAT_24B) || \
444  ((FORMAT) == I2S_DATAFORMAT_32B))
445 
446 #define IS_I2S_MCLK_OUTPUT(OUTPUT) (((OUTPUT) == I2S_MCLKOUTPUT_ENABLE) || \
447  ((OUTPUT) == I2S_MCLKOUTPUT_DISABLE))
448 
449 #define IS_I2S_AUDIO_FREQ(FREQ) ((((FREQ) >= I2S_AUDIOFREQ_8K) && \
450  ((FREQ) <= I2S_AUDIOFREQ_192K)) || \
451  ((FREQ) == I2S_AUDIOFREQ_DEFAULT))
452 
453 #define IS_I2S_FULLDUPLEX_MODE(MODE) (((MODE) == I2S_FULLDUPLEXMODE_DISABLE) || \
454  ((MODE) == I2S_FULLDUPLEXMODE_ENABLE))
455 
456 #define IS_I2S_CPOL(CPOL) (((CPOL) == I2S_CPOL_LOW) || \
457  ((CPOL) == I2S_CPOL_HIGH))
458 
463 /* Private functions ---------------------------------------------------------*/
467 void I2S_DMATxCplt(DMA_HandleTypeDef *hdma);
468 void I2S_DMATxHalfCplt(DMA_HandleTypeDef *hdma);
469 void I2S_DMARxCplt(DMA_HandleTypeDef *hdma);
470 void I2S_DMARxHalfCplt(DMA_HandleTypeDef *hdma);
471 void I2S_DMAError(DMA_HandleTypeDef *hdma);
472 HAL_StatusTypeDef I2S_WaitFlagStateUntilTimeout(I2S_HandleTypeDef *hi2s, uint32_t Flag, uint32_t Status, uint32_t Timeout);
473 HAL_StatusTypeDef I2S_Transmit_IT(I2S_HandleTypeDef *hi2s);
474 HAL_StatusTypeDef I2S_Receive_IT(I2S_HandleTypeDef *hi2s);
487 #ifdef __cplusplus
488 }
489 #endif
490 
491 
492 #endif /* __STM32F4xx_HAL_I2S_H */
493 
494 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Serial Peripheral Interface.
Definition: stm32f401xc.h:472
This file contains HAL common defines, enumeration, macros and structures definitions.
Definition: stm32f4xx_hal_i2s.h:99
I2S handle Structure definition.
Definition: stm32f4xx_hal_i2s.h:112
uint32_t AudioFreq
Definition: stm32f4xx_hal_i2s.h:79
uint32_t MCLKOutput
Definition: stm32f4xx_hal_i2s.h:76
uint32_t Mode
Definition: stm32f4xx_hal_i2s.h:67
Definition: stm32f4xx_hal_i2s.h:98
I2S Init structure definition.
Definition: stm32f4xx_hal_i2s.h:65
HAL_StatusTypeDef
HAL Status structures definition.
Definition: stm32f4xx_hal_def.h:57
Definition: stm32f4xx_hal_i2s.h:102
#define __IO
Definition: core_cm0.h:213
uint32_t Standard
Definition: stm32f4xx_hal_i2s.h:70
Definition: stm32f4xx_hal_i2s.h:105
uint32_t ClockSource
Definition: stm32f4xx_hal_i2s.h:85
uint32_t DataFormat
Definition: stm32f4xx_hal_i2s.h:73
HAL_LockTypeDef
HAL Lock structures definition.
Definition: stm32f4xx_hal_def.h:68
HAL_I2S_StateTypeDef
HAL State structures definition.
Definition: stm32f4xx_hal_i2s.h:96
uint32_t FullDuplexMode
Definition: stm32f4xx_hal_i2s.h:88
Definition: stm32f4xx_hal_i2s.h:100
Header file of I2S HAL module.
DMA handle Structure definition.
Definition: stm32f4xx_hal_dma.h:157
Definition: stm32f4xx_hal_i2s.h:104
Definition: stm32f4xx_hal_i2s.h:101
Definition: stm32f4xx_hal_i2s.h:103
uint32_t CPOL
Definition: stm32f4xx_hal_i2s.h:82