STM32F479xx HAL User Manual
Data Structures | Defines | Typedefs | Enumerations | Functions
stm32f4xx_hal_sai.h File Reference

Header file of SAI HAL module. More...

#include "stm32f4xx_hal_def.h"
#include "stm32f4xx_hal_sai_ex.h"

Go to the source code of this file.

Data Structures

struct  SAI_InitTypeDef
struct  SAI_FrameInitTypeDef
struct  SAI_SlotInitTypeDef
struct  __SAI_HandleTypeDef

Defines

#define HAL_SAI_ERROR_NONE   0x00000000U
#define HAL_SAI_ERROR_OVR   0x00000001U
#define HAL_SAI_ERROR_UDR   0x00000002U
#define HAL_SAI_ERROR_AFSDET   0x00000004U
#define HAL_SAI_ERROR_LFSDET   0x00000008U
#define HAL_SAI_ERROR_CNREADY   0x00000010U
#define HAL_SAI_ERROR_WCKCFG   0x00000020U
#define HAL_SAI_ERROR_TIMEOUT   0x00000040U
#define HAL_SAI_ERROR_DMA   0x00000080U
#define HAL_SAI_ERROR_INVALID_CALLBACK   0x00000100U
#define SAI_SYNCEXT_DISABLE   0U
#define SAI_SYNCEXT_OUTBLOCKA_ENABLE   1U
#define SAI_SYNCEXT_OUTBLOCKB_ENABLE   2U
#define SAI_I2S_STANDARD   0U
#define SAI_I2S_MSBJUSTIFIED   1U
#define SAI_I2S_LSBJUSTIFIED   2U
#define SAI_PCM_LONG   3U
#define SAI_PCM_SHORT   4U
#define SAI_PROTOCOL_DATASIZE_16BIT   0U
#define SAI_PROTOCOL_DATASIZE_16BITEXTENDED   1U
#define SAI_PROTOCOL_DATASIZE_24BIT   2U
#define SAI_PROTOCOL_DATASIZE_32BIT   3U
#define SAI_AUDIO_FREQUENCY_192K   192000U
#define SAI_AUDIO_FREQUENCY_96K   96000U
#define SAI_AUDIO_FREQUENCY_48K   48000U
#define SAI_AUDIO_FREQUENCY_44K   44100U
#define SAI_AUDIO_FREQUENCY_32K   32000U
#define SAI_AUDIO_FREQUENCY_22K   22050U
#define SAI_AUDIO_FREQUENCY_16K   16000U
#define SAI_AUDIO_FREQUENCY_11K   11025U
#define SAI_AUDIO_FREQUENCY_8K   8000U
#define SAI_AUDIO_FREQUENCY_MCKDIV   0U
#define SAI_MODEMASTER_TX   0x00000000U
#define SAI_MODEMASTER_RX   ((uint32_t)SAI_xCR1_MODE_0)
#define SAI_MODESLAVE_TX   ((uint32_t)SAI_xCR1_MODE_1)
#define SAI_MODESLAVE_RX   ((uint32_t)(SAI_xCR1_MODE_1 | SAI_xCR1_MODE_0))
#define SAI_FREE_PROTOCOL   0x00000000U
#define SAI_SPDIF_PROTOCOL   ((uint32_t)SAI_xCR1_PRTCFG_0)
#define SAI_AC97_PROTOCOL   ((uint32_t)SAI_xCR1_PRTCFG_1)
#define SAI_DATASIZE_8   ((uint32_t)SAI_xCR1_DS_1)
#define SAI_DATASIZE_10   ((uint32_t)(SAI_xCR1_DS_1 | SAI_xCR1_DS_0))
#define SAI_DATASIZE_16   ((uint32_t)SAI_xCR1_DS_2)
#define SAI_DATASIZE_20   ((uint32_t)(SAI_xCR1_DS_2 | SAI_xCR1_DS_0))
#define SAI_DATASIZE_24   ((uint32_t)(SAI_xCR1_DS_2 | SAI_xCR1_DS_1))
#define SAI_DATASIZE_32   ((uint32_t)(SAI_xCR1_DS_2 | SAI_xCR1_DS_1 | SAI_xCR1_DS_0))
#define SAI_FIRSTBIT_MSB   0x00000000U
#define SAI_FIRSTBIT_LSB   ((uint32_t)SAI_xCR1_LSBFIRST)
#define SAI_CLOCKSTROBING_FALLINGEDGE   0U
#define SAI_CLOCKSTROBING_RISINGEDGE   1U
#define SAI_ASYNCHRONOUS   0U
#define SAI_SYNCHRONOUS   1U
#define SAI_SYNCHRONOUS_EXT_SAI1   2U
#define SAI_SYNCHRONOUS_EXT_SAI2   3U
#define SAI_OUTPUTDRIVE_DISABLE   0x00000000U
#define SAI_OUTPUTDRIVE_ENABLE   ((uint32_t)SAI_xCR1_OUTDRIV)
#define SAI_MASTERDIVIDER_ENABLE   0x00000000U
#define SAI_MASTERDIVIDER_DISABLE   ((uint32_t)SAI_xCR1_NODIV)
#define SAI_FS_STARTFRAME   0x00000000U
#define SAI_FS_CHANNEL_IDENTIFICATION   ((uint32_t)SAI_xFRCR_FSDEF)
#define SAI_FS_ACTIVE_LOW   0x00000000U
#define SAI_FS_ACTIVE_HIGH   ((uint32_t)SAI_xFRCR_FSPOL)
#define SAI_FS_FIRSTBIT   0x00000000U
#define SAI_FS_BEFOREFIRSTBIT   ((uint32_t)SAI_xFRCR_FSOFF)
#define SAI_SLOTSIZE_DATASIZE   0x00000000U
#define SAI_SLOTSIZE_16B   ((uint32_t)SAI_xSLOTR_SLOTSZ_0)
#define SAI_SLOTSIZE_32B   ((uint32_t)SAI_xSLOTR_SLOTSZ_1)
#define SAI_SLOT_NOTACTIVE   0x00000000U
#define SAI_SLOTACTIVE_0   0x00000001U
#define SAI_SLOTACTIVE_1   0x00000002U
#define SAI_SLOTACTIVE_2   0x00000004U
#define SAI_SLOTACTIVE_3   0x00000008U
#define SAI_SLOTACTIVE_4   0x00000010U
#define SAI_SLOTACTIVE_5   0x00000020U
#define SAI_SLOTACTIVE_6   0x00000040U
#define SAI_SLOTACTIVE_7   0x00000080U
#define SAI_SLOTACTIVE_8   0x00000100U
#define SAI_SLOTACTIVE_9   0x00000200U
#define SAI_SLOTACTIVE_10   0x00000400U
#define SAI_SLOTACTIVE_11   0x00000800U
#define SAI_SLOTACTIVE_12   0x00001000U
#define SAI_SLOTACTIVE_13   0x00002000U
#define SAI_SLOTACTIVE_14   0x00004000U
#define SAI_SLOTACTIVE_15   0x00008000U
#define SAI_SLOTACTIVE_ALL   0x0000FFFFU
#define SAI_STEREOMODE   0x00000000U
#define SAI_MONOMODE   ((uint32_t)SAI_xCR1_MONO)
#define SAI_OUTPUT_NOTRELEASED   0x00000000U
#define SAI_OUTPUT_RELEASED   ((uint32_t)SAI_xCR2_TRIS)
#define SAI_FIFOTHRESHOLD_EMPTY   0x00000000U
#define SAI_FIFOTHRESHOLD_1QF   ((uint32_t)(SAI_xCR2_FTH_0))
#define SAI_FIFOTHRESHOLD_HF   ((uint32_t)(SAI_xCR2_FTH_1))
#define SAI_FIFOTHRESHOLD_3QF   ((uint32_t)(SAI_xCR2_FTH_1 | SAI_xCR2_FTH_0))
#define SAI_FIFOTHRESHOLD_FULL   ((uint32_t)(SAI_xCR2_FTH_2))
#define SAI_NOCOMPANDING   0x00000000U
#define SAI_ULAW_1CPL_COMPANDING   ((uint32_t)(SAI_xCR2_COMP_1))
#define SAI_ALAW_1CPL_COMPANDING   ((uint32_t)(SAI_xCR2_COMP_1 | SAI_xCR2_COMP_0))
#define SAI_ULAW_2CPL_COMPANDING   ((uint32_t)(SAI_xCR2_COMP_1 | SAI_xCR2_CPL))
#define SAI_ALAW_2CPL_COMPANDING   ((uint32_t)(SAI_xCR2_COMP_1 | SAI_xCR2_COMP_0 | SAI_xCR2_CPL))
#define SAI_ZERO_VALUE   0x00000000U
#define SAI_LAST_SENT_VALUE   ((uint32_t)SAI_xCR2_MUTEVAL)
#define SAI_IT_OVRUDR   ((uint32_t)SAI_xIMR_OVRUDRIE)
#define SAI_IT_MUTEDET   ((uint32_t)SAI_xIMR_MUTEDETIE)
#define SAI_IT_WCKCFG   ((uint32_t)SAI_xIMR_WCKCFGIE)
#define SAI_IT_FREQ   ((uint32_t)SAI_xIMR_FREQIE)
#define SAI_IT_CNRDY   ((uint32_t)SAI_xIMR_CNRDYIE)
#define SAI_IT_AFSDET   ((uint32_t)SAI_xIMR_AFSDETIE)
#define SAI_IT_LFSDET   ((uint32_t)SAI_xIMR_LFSDETIE)
#define SAI_FLAG_OVRUDR   ((uint32_t)SAI_xSR_OVRUDR)
#define SAI_FLAG_MUTEDET   ((uint32_t)SAI_xSR_MUTEDET)
#define SAI_FLAG_WCKCFG   ((uint32_t)SAI_xSR_WCKCFG)
#define SAI_FLAG_FREQ   ((uint32_t)SAI_xSR_FREQ)
#define SAI_FLAG_CNRDY   ((uint32_t)SAI_xSR_CNRDY)
#define SAI_FLAG_AFSDET   ((uint32_t)SAI_xSR_AFSDET)
#define SAI_FLAG_LFSDET   ((uint32_t)SAI_xSR_LFSDET)
#define SAI_FIFOSTATUS_EMPTY   0x00000000U
#define SAI_FIFOSTATUS_LESS1QUARTERFULL   0x00010000U
#define SAI_FIFOSTATUS_1QUARTERFULL   0x00020000U
#define SAI_FIFOSTATUS_HALFFULL   0x00030000U
#define SAI_FIFOSTATUS_3QUARTERFULL   0x00040000U
#define SAI_FIFOSTATUS_FULL   0x00050000U
#define __HAL_SAI_RESET_HANDLE_STATE(__HANDLE__)
 Reset SAI handle state.
#define __HAL_SAI_ENABLE_IT(__HANDLE__, __INTERRUPT__)   ((__HANDLE__)->Instance->IMR |= (__INTERRUPT__))
 Enable or disable the specified SAI interrupts.
#define __HAL_SAI_DISABLE_IT(__HANDLE__, __INTERRUPT__)   ((__HANDLE__)->Instance->IMR &= (~(__INTERRUPT__)))
#define __HAL_SAI_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)   ((((__HANDLE__)->Instance->IMR & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
 Check if the specified SAI interrupt source is enabled or disabled.
#define __HAL_SAI_GET_FLAG(__HANDLE__, __FLAG__)   ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
 Check whether the specified SAI flag is set or not.
#define __HAL_SAI_CLEAR_FLAG(__HANDLE__, __FLAG__)   ((__HANDLE__)->Instance->CLRFR = (__FLAG__))
 Clear the specified SAI pending flag.
#define __HAL_SAI_ENABLE(__HANDLE__)   ((__HANDLE__)->Instance->CR1 |= SAI_xCR1_SAIEN)
 Enable SAI.
#define __HAL_SAI_DISABLE(__HANDLE__)   ((__HANDLE__)->Instance->CR1 &= ~SAI_xCR1_SAIEN)
 Disable SAI.
#define IS_SAI_BLOCK_SYNCEXT(STATE)
#define IS_SAI_SUPPORTED_PROTOCOL(PROTOCOL)
#define IS_SAI_PROTOCOL_DATASIZE(DATASIZE)
#define IS_SAI_AUDIO_FREQUENCY(AUDIO)
#define IS_SAI_BLOCK_MODE(MODE)
#define IS_SAI_BLOCK_PROTOCOL(PROTOCOL)
#define IS_SAI_BLOCK_DATASIZE(DATASIZE)
#define IS_SAI_BLOCK_FIRST_BIT(BIT)
#define IS_SAI_BLOCK_CLOCK_STROBING(CLOCK)
#define IS_SAI_BLOCK_SYNCHRO(SYNCHRO)
#define IS_SAI_BLOCK_OUTPUT_DRIVE(DRIVE)
#define IS_SAI_BLOCK_NODIVIDER(NODIVIDER)
#define IS_SAI_BLOCK_MUTE_COUNTER(COUNTER)   ((COUNTER) <= 63U)
#define IS_SAI_BLOCK_MUTE_VALUE(VALUE)
#define IS_SAI_BLOCK_COMPANDING_MODE(MODE)
#define IS_SAI_BLOCK_FIFO_THRESHOLD(THRESHOLD)
#define IS_SAI_BLOCK_TRISTATE_MANAGEMENT(STATE)
#define IS_SAI_MONO_STEREO_MODE(MODE)
#define IS_SAI_SLOT_ACTIVE(ACTIVE)   ((ACTIVE) <= SAI_SLOTACTIVE_ALL)
#define IS_SAI_BLOCK_SLOT_NUMBER(NUMBER)   ((1U <= (NUMBER)) && ((NUMBER) <= 16U))
#define IS_SAI_BLOCK_SLOT_SIZE(SIZE)
#define IS_SAI_BLOCK_FIRSTBIT_OFFSET(OFFSET)   ((OFFSET) <= 24U)
#define IS_SAI_BLOCK_FS_OFFSET(OFFSET)
#define IS_SAI_BLOCK_FS_POLARITY(POLARITY)
#define IS_SAI_BLOCK_FS_DEFINITION(DEFINITION)
#define IS_SAI_BLOCK_MASTER_DIVIDER(DIVIDER)   ((DIVIDER) <= 15U)
#define IS_SAI_BLOCK_FRAME_LENGTH(LENGTH)   ((8U <= (LENGTH)) && ((LENGTH) <= 256U))
#define IS_SAI_BLOCK_ACTIVE_FRAME(LENGTH)   ((1U <= (LENGTH)) && ((LENGTH) <= 128U))

Typedefs

typedef void(* SAIcallback )(void)
 SAI Callback prototype.
typedef struct __SAI_HandleTypeDef SAI_HandleTypeDef
typedef void(* pSAI_CallbackTypeDef )(SAI_HandleTypeDef *hsai)
 SAI callback pointer definition.

Enumerations

enum  HAL_SAI_StateTypeDef {
  HAL_SAI_STATE_RESET = 0x00U, HAL_SAI_STATE_READY = 0x01U, HAL_SAI_STATE_BUSY = 0x02U, HAL_SAI_STATE_BUSY_TX = 0x12U,
  HAL_SAI_STATE_BUSY_RX = 0x22U, HAL_SAI_STATE_TIMEOUT = 0x03U, HAL_SAI_STATE_ERROR = 0x04U
}
 HAL State structures definition. More...
enum  HAL_SAI_CallbackIDTypeDef {
  HAL_SAI_RX_COMPLETE_CB_ID = 0x00U, HAL_SAI_RX_HALFCOMPLETE_CB_ID = 0x01U, HAL_SAI_TX_COMPLETE_CB_ID = 0x02U, HAL_SAI_TX_HALFCOMPLETE_CB_ID = 0x03U,
  HAL_SAI_ERROR_CB_ID = 0x04U, HAL_SAI_MSPINIT_CB_ID = 0x05U, HAL_SAI_MSPDEINIT_CB_ID = 0x06U
}
 SAI callback ID enumeration definition. More...

Functions

HAL_StatusTypeDef HAL_SAI_InitProtocol (SAI_HandleTypeDef *hsai, uint32_t protocol, uint32_t datasize, uint32_t nbslot)
 Initialize the structure FrameInit, SlotInit and the low part of Init according to the specified parameters and call the function HAL_SAI_Init to initialize the SAI block.
HAL_StatusTypeDef HAL_SAI_Init (SAI_HandleTypeDef *hsai)
 Initialize the SAI according to the specified parameters.
HAL_StatusTypeDef HAL_SAI_DeInit (SAI_HandleTypeDef *hsai)
 DeInitialize the SAI peripheral.
__weak void HAL_SAI_MspInit (SAI_HandleTypeDef *hsai)
 Initialize the SAI MSP.
__weak void HAL_SAI_MspDeInit (SAI_HandleTypeDef *hsai)
 DeInitialize the SAI MSP.
HAL_StatusTypeDef HAL_SAI_RegisterCallback (SAI_HandleTypeDef *hsai, HAL_SAI_CallbackIDTypeDef CallbackID, pSAI_CallbackTypeDef pCallback)
 Register a user SAI callback to be used instead of the weak predefined callback.
HAL_StatusTypeDef HAL_SAI_UnRegisterCallback (SAI_HandleTypeDef *hsai, HAL_SAI_CallbackIDTypeDef CallbackID)
 Unregister a user SAI callback.
HAL_StatusTypeDef HAL_SAI_Transmit (SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size, uint32_t Timeout)
 Transmit an amount of data in blocking mode.
HAL_StatusTypeDef HAL_SAI_Receive (SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size, uint32_t Timeout)
 Receive an amount of data in blocking mode.
HAL_StatusTypeDef HAL_SAI_Transmit_IT (SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size)
 Transmit an amount of data in non-blocking mode with Interrupt.
HAL_StatusTypeDef HAL_SAI_Receive_IT (SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size)
 Receive an amount of data in non-blocking mode with Interrupt.
HAL_StatusTypeDef HAL_SAI_Transmit_DMA (SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size)
 Transmit an amount of data in non-blocking mode with DMA.
HAL_StatusTypeDef HAL_SAI_Receive_DMA (SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size)
 Receive an amount of data in non-blocking mode with DMA.
HAL_StatusTypeDef HAL_SAI_DMAPause (SAI_HandleTypeDef *hsai)
 Pause the audio stream playing from the Media.
HAL_StatusTypeDef HAL_SAI_DMAResume (SAI_HandleTypeDef *hsai)
 Resume the audio stream playing from the Media.
HAL_StatusTypeDef HAL_SAI_DMAStop (SAI_HandleTypeDef *hsai)
 Stop the audio stream playing from the Media.
HAL_StatusTypeDef HAL_SAI_Abort (SAI_HandleTypeDef *hsai)
 Abort the current transfer and disable the SAI.
HAL_StatusTypeDef HAL_SAI_EnableTxMuteMode (SAI_HandleTypeDef *hsai, uint16_t val)
 Enable the Tx mute mode.
HAL_StatusTypeDef HAL_SAI_DisableTxMuteMode (SAI_HandleTypeDef *hsai)
 Disable the Tx mute mode.
HAL_StatusTypeDef HAL_SAI_EnableRxMuteMode (SAI_HandleTypeDef *hsai, SAIcallback callback, uint16_t counter)
 Enable the Rx mute detection.
HAL_StatusTypeDef HAL_SAI_DisableRxMuteMode (SAI_HandleTypeDef *hsai)
 Disable the Rx mute detection.
void HAL_SAI_IRQHandler (SAI_HandleTypeDef *hsai)
 Handle SAI interrupt request.
__weak void HAL_SAI_TxHalfCpltCallback (SAI_HandleTypeDef *hsai)
 Tx Transfer Half completed callback.
__weak void HAL_SAI_TxCpltCallback (SAI_HandleTypeDef *hsai)
 Tx Transfer completed callback.
__weak void HAL_SAI_RxHalfCpltCallback (SAI_HandleTypeDef *hsai)
 Rx Transfer half completed callback.
__weak void HAL_SAI_RxCpltCallback (SAI_HandleTypeDef *hsai)
 Rx Transfer completed callback.
__weak void HAL_SAI_ErrorCallback (SAI_HandleTypeDef *hsai)
 SAI error callback.
HAL_SAI_StateTypeDef HAL_SAI_GetState (SAI_HandleTypeDef *hsai)
 Return the SAI handle state.
uint32_t HAL_SAI_GetError (SAI_HandleTypeDef *hsai)
 Return the SAI error code.

Detailed Description

Header file of SAI HAL module.

Author:
MCD Application Team
Attention:

© Copyright (c) 2017 STMicroelectronics. All rights reserved.

This software component is licensed by ST under BSD 3-Clause license, the "License"; You may not use this file except in compliance with the License. You may obtain a copy of the License at: opensource.org/licenses/BSD-3-Clause

Definition in file stm32f4xx_hal_sai.h.