raspiezo / mbed-dev

Dependents:   Nucleo_L432KC_Quadrature_Decoder_with_ADC_and_DAC

Fork of mbed-dev by mbed official

Committer:
<>
Date:
Fri Sep 02 15:07:44 2016 +0100
Revision:
144:ef7eb2e8f9f7
Parent:
83:a036322b8637
This updates the lib to the mbed lib v125

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 144:ef7eb2e8f9f7 1 /**
<> 144:ef7eb2e8f9f7 2 ******************************************************************************
<> 144:ef7eb2e8f9f7 3 * @file stm32f7xx_hal_sai.h
<> 144:ef7eb2e8f9f7 4 * @author MCD Application Team
<> 144:ef7eb2e8f9f7 5 * @version V1.1.0
<> 144:ef7eb2e8f9f7 6 * @date 22-April-2016
<> 144:ef7eb2e8f9f7 7 * @brief Header file of SAI HAL module.
<> 144:ef7eb2e8f9f7 8 ******************************************************************************
<> 144:ef7eb2e8f9f7 9 * @attention
<> 144:ef7eb2e8f9f7 10 *
<> 144:ef7eb2e8f9f7 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
<> 144:ef7eb2e8f9f7 12 *
<> 144:ef7eb2e8f9f7 13 * Redistribution and use in source and binary forms, with or without modification,
<> 144:ef7eb2e8f9f7 14 * are permitted provided that the following conditions are met:
<> 144:ef7eb2e8f9f7 15 * 1. Redistributions of source code must retain the above copyright notice,
<> 144:ef7eb2e8f9f7 16 * this list of conditions and the following disclaimer.
<> 144:ef7eb2e8f9f7 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
<> 144:ef7eb2e8f9f7 18 * this list of conditions and the following disclaimer in the documentation
<> 144:ef7eb2e8f9f7 19 * and/or other materials provided with the distribution.
<> 144:ef7eb2e8f9f7 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
<> 144:ef7eb2e8f9f7 21 * may be used to endorse or promote products derived from this software
<> 144:ef7eb2e8f9f7 22 * without specific prior written permission.
<> 144:ef7eb2e8f9f7 23 *
<> 144:ef7eb2e8f9f7 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
<> 144:ef7eb2e8f9f7 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
<> 144:ef7eb2e8f9f7 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
<> 144:ef7eb2e8f9f7 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
<> 144:ef7eb2e8f9f7 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
<> 144:ef7eb2e8f9f7 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
<> 144:ef7eb2e8f9f7 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
<> 144:ef7eb2e8f9f7 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
<> 144:ef7eb2e8f9f7 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
<> 144:ef7eb2e8f9f7 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<> 144:ef7eb2e8f9f7 34 *
<> 144:ef7eb2e8f9f7 35 ******************************************************************************
<> 144:ef7eb2e8f9f7 36 */
<> 144:ef7eb2e8f9f7 37
<> 144:ef7eb2e8f9f7 38 /* Define to prevent recursive inclusion -------------------------------------*/
<> 144:ef7eb2e8f9f7 39 #ifndef __STM32F7xx_HAL_SAI_H
<> 144:ef7eb2e8f9f7 40 #define __STM32F7xx_HAL_SAI_H
<> 144:ef7eb2e8f9f7 41
<> 144:ef7eb2e8f9f7 42 #ifdef __cplusplus
<> 144:ef7eb2e8f9f7 43 extern "C" {
<> 144:ef7eb2e8f9f7 44 #endif
<> 144:ef7eb2e8f9f7 45
<> 144:ef7eb2e8f9f7 46
<> 144:ef7eb2e8f9f7 47 /* Includes ------------------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 48 #include "stm32f7xx_hal_def.h"
<> 144:ef7eb2e8f9f7 49
<> 144:ef7eb2e8f9f7 50 /** @addtogroup STM32F7xx_HAL_Driver
<> 144:ef7eb2e8f9f7 51 * @{
<> 144:ef7eb2e8f9f7 52 */
<> 144:ef7eb2e8f9f7 53
<> 144:ef7eb2e8f9f7 54 /** @addtogroup SAI
<> 144:ef7eb2e8f9f7 55 * @{
<> 144:ef7eb2e8f9f7 56 */
<> 144:ef7eb2e8f9f7 57
<> 144:ef7eb2e8f9f7 58 /* Exported types ------------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 59 /** @defgroup SAI_Exported_Types SAI Exported Types
<> 144:ef7eb2e8f9f7 60 * @{
<> 144:ef7eb2e8f9f7 61 */
<> 144:ef7eb2e8f9f7 62
<> 144:ef7eb2e8f9f7 63 /**
<> 144:ef7eb2e8f9f7 64 * @brief HAL State structures definition
<> 144:ef7eb2e8f9f7 65 */
<> 144:ef7eb2e8f9f7 66 typedef enum
<> 144:ef7eb2e8f9f7 67 {
<> 144:ef7eb2e8f9f7 68 HAL_SAI_STATE_RESET = 0x00U, /*!< SAI not yet initialized or disabled */
<> 144:ef7eb2e8f9f7 69 HAL_SAI_STATE_READY = 0x01U, /*!< SAI initialized and ready for use */
<> 144:ef7eb2e8f9f7 70 HAL_SAI_STATE_BUSY = 0x02U, /*!< SAI internal process is ongoing */
<> 144:ef7eb2e8f9f7 71 HAL_SAI_STATE_BUSY_TX = 0x12U, /*!< Data transmission process is ongoing */
<> 144:ef7eb2e8f9f7 72 HAL_SAI_STATE_BUSY_RX = 0x22U, /*!< Data reception process is ongoing */
<> 144:ef7eb2e8f9f7 73 }HAL_SAI_StateTypeDef;
<> 144:ef7eb2e8f9f7 74
<> 144:ef7eb2e8f9f7 75 /**
<> 144:ef7eb2e8f9f7 76 * @brief SAI Callback prototype
<> 144:ef7eb2e8f9f7 77 */
<> 144:ef7eb2e8f9f7 78 typedef void (*SAIcallback)(void);
<> 144:ef7eb2e8f9f7 79
<> 144:ef7eb2e8f9f7 80 /** @defgroup SAI_Init_Structure_definition SAI Init Structure definition
<> 144:ef7eb2e8f9f7 81 * @brief SAI Init Structure definition
<> 144:ef7eb2e8f9f7 82 * @{
<> 144:ef7eb2e8f9f7 83 */
<> 144:ef7eb2e8f9f7 84 typedef struct
<> 144:ef7eb2e8f9f7 85 {
<> 144:ef7eb2e8f9f7 86 uint32_t AudioMode; /*!< Specifies the SAI Block audio Mode.
<> 144:ef7eb2e8f9f7 87 This parameter can be a value of @ref SAI_Block_Mode */
<> 144:ef7eb2e8f9f7 88
<> 144:ef7eb2e8f9f7 89 uint32_t Synchro; /*!< Specifies SAI Block synchronization
<> 144:ef7eb2e8f9f7 90 This parameter can be a value of @ref SAI_Block_Synchronization */
<> 144:ef7eb2e8f9f7 91
<> 144:ef7eb2e8f9f7 92 uint32_t SynchroExt; /*!< Specifies SAI external output synchronization, this setup is common
<> 144:ef7eb2e8f9f7 93 for BlockA and BlockB
<> 144:ef7eb2e8f9f7 94 This parameter can be a value of @ref SAI_Block_SyncExt
<> 144:ef7eb2e8f9f7 95 @note: If both audio blocks of same SAI are used, this parameter has
<> 144:ef7eb2e8f9f7 96 to be set to the same value for each audio block */
<> 144:ef7eb2e8f9f7 97
<> 144:ef7eb2e8f9f7 98 uint32_t OutputDrive; /*!< Specifies when SAI Block outputs are driven.
<> 144:ef7eb2e8f9f7 99 This parameter can be a value of @ref SAI_Block_Output_Drive
<> 144:ef7eb2e8f9f7 100 @note this value has to be set before enabling the audio block
<> 144:ef7eb2e8f9f7 101 but after the audio block configuration. */
<> 144:ef7eb2e8f9f7 102
<> 144:ef7eb2e8f9f7 103 uint32_t NoDivider; /*!< Specifies whether master clock will be divided or not.
<> 144:ef7eb2e8f9f7 104 This parameter can be a value of @ref SAI_Block_NoDivider
<> 144:ef7eb2e8f9f7 105 @note: If bit NODIV in the SAI_xCR1 register is cleared, the frame length
<> 144:ef7eb2e8f9f7 106 should be aligned to a number equal to a power of 2, from 8 to 256.
<> 144:ef7eb2e8f9f7 107 If bit NODIV in the SAI_xCR1 register is set, the frame length can
<> 144:ef7eb2e8f9f7 108 take any of the values without constraint since the input clock of
<> 144:ef7eb2e8f9f7 109 the audio block should be equal to the bit clock.
<> 144:ef7eb2e8f9f7 110 There is no MCLK_x clock which can be output. */
<> 144:ef7eb2e8f9f7 111
<> 144:ef7eb2e8f9f7 112 uint32_t FIFOThreshold; /*!< Specifies SAI Block FIFO threshold.
<> 144:ef7eb2e8f9f7 113 This parameter can be a value of @ref SAI_Block_Fifo_Threshold */
<> 144:ef7eb2e8f9f7 114
<> 144:ef7eb2e8f9f7 115 uint32_t AudioFrequency; /*!< Specifies the audio frequency sampling.
<> 144:ef7eb2e8f9f7 116 This parameter can be a value of @ref SAI_Audio_Frequency */
<> 144:ef7eb2e8f9f7 117
<> 144:ef7eb2e8f9f7 118 uint32_t Mckdiv; /*!< Specifies the master clock divider, the parameter will be used if for
<> 144:ef7eb2e8f9f7 119 AudioFrequency the user choice
<> 144:ef7eb2e8f9f7 120 This parameter must be a number between Min_Data = 0 and Max_Data = 15 */
<> 144:ef7eb2e8f9f7 121
<> 144:ef7eb2e8f9f7 122 uint32_t MonoStereoMode; /*!< Specifies if the mono or stereo mode is selected.
<> 144:ef7eb2e8f9f7 123 This parameter can be a value of @ref SAI_Mono_Stereo_Mode */
<> 144:ef7eb2e8f9f7 124
<> 144:ef7eb2e8f9f7 125 uint32_t CompandingMode; /*!< Specifies the companding mode type.
<> 144:ef7eb2e8f9f7 126 This parameter can be a value of @ref SAI_Block_Companding_Mode */
<> 144:ef7eb2e8f9f7 127
<> 144:ef7eb2e8f9f7 128 uint32_t TriState; /*!< Specifies the companding mode type.
<> 144:ef7eb2e8f9f7 129 This parameter can be a value of @ref SAI_TRIState_Management */
<> 144:ef7eb2e8f9f7 130
<> 144:ef7eb2e8f9f7 131 /* This part of the structure is automatically filled if your are using the high level initialisation
<> 144:ef7eb2e8f9f7 132 function HAL_SAI_InitProtocol */
<> 144:ef7eb2e8f9f7 133
<> 144:ef7eb2e8f9f7 134 uint32_t Protocol; /*!< Specifies the SAI Block protocol.
<> 144:ef7eb2e8f9f7 135 This parameter can be a value of @ref SAI_Block_Protocol */
<> 144:ef7eb2e8f9f7 136
<> 144:ef7eb2e8f9f7 137 uint32_t DataSize; /*!< Specifies the SAI Block data size.
<> 144:ef7eb2e8f9f7 138 This parameter can be a value of @ref SAI_Block_Data_Size */
<> 144:ef7eb2e8f9f7 139
<> 144:ef7eb2e8f9f7 140 uint32_t FirstBit; /*!< Specifies whether data transfers start from MSB or LSB bit.
<> 144:ef7eb2e8f9f7 141 This parameter can be a value of @ref SAI_Block_MSB_LSB_transmission */
<> 144:ef7eb2e8f9f7 142
<> 144:ef7eb2e8f9f7 143 uint32_t ClockStrobing; /*!< Specifies the SAI Block clock strobing edge sensitivity.
<> 144:ef7eb2e8f9f7 144 This parameter can be a value of @ref SAI_Block_Clock_Strobing */
<> 144:ef7eb2e8f9f7 145 }SAI_InitTypeDef;
<> 144:ef7eb2e8f9f7 146 /**
<> 144:ef7eb2e8f9f7 147 * @}
<> 144:ef7eb2e8f9f7 148 */
<> 144:ef7eb2e8f9f7 149
<> 144:ef7eb2e8f9f7 150 /** @defgroup SAI_Frame_Structure_definition SAI Frame Structure definition
<> 144:ef7eb2e8f9f7 151 * @brief SAI Frame Init structure definition
<> 144:ef7eb2e8f9f7 152 * @{
<> 144:ef7eb2e8f9f7 153 */
<> 144:ef7eb2e8f9f7 154 typedef struct
<> 144:ef7eb2e8f9f7 155 {
<> 144:ef7eb2e8f9f7 156
<> 144:ef7eb2e8f9f7 157 uint32_t FrameLength; /*!< Specifies the Frame length, the number of SCK clocks for each audio frame.
<> 144:ef7eb2e8f9f7 158 This parameter must be a number between Min_Data = 8 and Max_Data = 256.
<> 144:ef7eb2e8f9f7 159 @note: If master clock MCLK_x pin is declared as an output, the frame length
<> 144:ef7eb2e8f9f7 160 should be aligned to a number equal to power of 2 in order to keep
<> 144:ef7eb2e8f9f7 161 in an audio frame, an integer number of MCLK pulses by bit Clock. */
<> 144:ef7eb2e8f9f7 162
<> 144:ef7eb2e8f9f7 163 uint32_t ActiveFrameLength; /*!< Specifies the Frame synchronization active level length.
<> 144:ef7eb2e8f9f7 164 This Parameter specifies the length in number of bit clock (SCK + 1)
<> 144:ef7eb2e8f9f7 165 of the active level of FS signal in audio frame.
<> 144:ef7eb2e8f9f7 166 This parameter must be a number between Min_Data = 1 and Max_Data = 128 */
<> 144:ef7eb2e8f9f7 167
<> 144:ef7eb2e8f9f7 168 uint32_t FSDefinition; /*!< Specifies the Frame synchronization definition.
<> 144:ef7eb2e8f9f7 169 This parameter can be a value of @ref SAI_Block_FS_Definition */
<> 144:ef7eb2e8f9f7 170
<> 144:ef7eb2e8f9f7 171 uint32_t FSPolarity; /*!< Specifies the Frame synchronization Polarity.
<> 144:ef7eb2e8f9f7 172 This parameter can be a value of @ref SAI_Block_FS_Polarity */
<> 144:ef7eb2e8f9f7 173
<> 144:ef7eb2e8f9f7 174 uint32_t FSOffset; /*!< Specifies the Frame synchronization Offset.
<> 144:ef7eb2e8f9f7 175 This parameter can be a value of @ref SAI_Block_FS_Offset */
<> 144:ef7eb2e8f9f7 176
<> 144:ef7eb2e8f9f7 177 }SAI_FrameInitTypeDef;
<> 144:ef7eb2e8f9f7 178 /**
<> 144:ef7eb2e8f9f7 179 * @}
<> 144:ef7eb2e8f9f7 180 */
<> 144:ef7eb2e8f9f7 181
<> 144:ef7eb2e8f9f7 182 /** @defgroup SAI_Slot_Structure_definition SAI Slot Structure definition
<> 144:ef7eb2e8f9f7 183 * @brief SAI Block Slot Init Structure definition
<> 144:ef7eb2e8f9f7 184 * @{
<> 144:ef7eb2e8f9f7 185 */
<> 144:ef7eb2e8f9f7 186 typedef struct
<> 144:ef7eb2e8f9f7 187 {
<> 144:ef7eb2e8f9f7 188 uint32_t FirstBitOffset; /*!< Specifies the position of first data transfer bit in the slot.
<> 144:ef7eb2e8f9f7 189 This parameter must be a number between Min_Data = 0 and Max_Data = 24 */
<> 144:ef7eb2e8f9f7 190
<> 144:ef7eb2e8f9f7 191 uint32_t SlotSize; /*!< Specifies the Slot Size.
<> 144:ef7eb2e8f9f7 192 This parameter can be a value of @ref SAI_Block_Slot_Size */
<> 144:ef7eb2e8f9f7 193
<> 144:ef7eb2e8f9f7 194 uint32_t SlotNumber; /*!< Specifies the number of slot in the audio frame.
<> 144:ef7eb2e8f9f7 195 This parameter must be a number between Min_Data = 1 and Max_Data = 16 */
<> 144:ef7eb2e8f9f7 196
<> 144:ef7eb2e8f9f7 197 uint32_t SlotActive; /*!< Specifies the slots in audio frame that will be activated.
<> 144:ef7eb2e8f9f7 198 This parameter can be a value of @ref SAI_Block_Slot_Active */
<> 144:ef7eb2e8f9f7 199 }SAI_SlotInitTypeDef;
<> 144:ef7eb2e8f9f7 200 /**
<> 144:ef7eb2e8f9f7 201 * @}
<> 144:ef7eb2e8f9f7 202 */
<> 144:ef7eb2e8f9f7 203
<> 144:ef7eb2e8f9f7 204 /** @defgroup SAI_Handle_Structure_definition SAI Handle Structure definition
<> 144:ef7eb2e8f9f7 205 * @brief SAI handle Structure definition
<> 144:ef7eb2e8f9f7 206 * @{
<> 144:ef7eb2e8f9f7 207 */
<> 144:ef7eb2e8f9f7 208 typedef struct __SAI_HandleTypeDef
<> 144:ef7eb2e8f9f7 209 {
<> 144:ef7eb2e8f9f7 210 SAI_Block_TypeDef *Instance; /*!< SAI Blockx registers base address */
<> 144:ef7eb2e8f9f7 211
<> 144:ef7eb2e8f9f7 212 SAI_InitTypeDef Init; /*!< SAI communication parameters */
<> 144:ef7eb2e8f9f7 213
<> 144:ef7eb2e8f9f7 214 SAI_FrameInitTypeDef FrameInit; /*!< SAI Frame configuration parameters */
<> 144:ef7eb2e8f9f7 215
<> 144:ef7eb2e8f9f7 216 SAI_SlotInitTypeDef SlotInit; /*!< SAI Slot configuration parameters */
<> 144:ef7eb2e8f9f7 217
<> 144:ef7eb2e8f9f7 218 uint8_t *pBuffPtr; /*!< Pointer to SAI transfer Buffer */
<> 144:ef7eb2e8f9f7 219
<> 144:ef7eb2e8f9f7 220 uint16_t XferSize; /*!< SAI transfer size */
<> 144:ef7eb2e8f9f7 221
<> 144:ef7eb2e8f9f7 222 uint16_t XferCount; /*!< SAI transfer counter */
<> 144:ef7eb2e8f9f7 223
<> 144:ef7eb2e8f9f7 224 DMA_HandleTypeDef *hdmatx; /*!< SAI Tx DMA handle parameters */
<> 144:ef7eb2e8f9f7 225
<> 144:ef7eb2e8f9f7 226 DMA_HandleTypeDef *hdmarx; /*!< SAI Rx DMA handle parameters */
<> 144:ef7eb2e8f9f7 227
<> 144:ef7eb2e8f9f7 228 SAIcallback mutecallback; /*!< SAI mute callback */
<> 144:ef7eb2e8f9f7 229
<> 144:ef7eb2e8f9f7 230 void (*InterruptServiceRoutine)(struct __SAI_HandleTypeDef *hsai); /* function pointer for IRQ handler */
<> 144:ef7eb2e8f9f7 231
<> 144:ef7eb2e8f9f7 232 HAL_LockTypeDef Lock; /*!< SAI locking object */
<> 144:ef7eb2e8f9f7 233
<> 144:ef7eb2e8f9f7 234 __IO HAL_SAI_StateTypeDef State; /*!< SAI communication state */
<> 144:ef7eb2e8f9f7 235
<> 144:ef7eb2e8f9f7 236 __IO uint32_t ErrorCode; /*!< SAI Error code */
<> 144:ef7eb2e8f9f7 237 }SAI_HandleTypeDef;
<> 144:ef7eb2e8f9f7 238 /**
<> 144:ef7eb2e8f9f7 239 * @}
<> 144:ef7eb2e8f9f7 240 */
<> 144:ef7eb2e8f9f7 241
<> 144:ef7eb2e8f9f7 242 /**
<> 144:ef7eb2e8f9f7 243 * @}
<> 144:ef7eb2e8f9f7 244 */
<> 144:ef7eb2e8f9f7 245
<> 144:ef7eb2e8f9f7 246 /* Exported constants --------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 247
<> 144:ef7eb2e8f9f7 248 /** @defgroup SAI_Exported_Constants SAI Exported Constants
<> 144:ef7eb2e8f9f7 249 * @{
<> 144:ef7eb2e8f9f7 250 */
<> 144:ef7eb2e8f9f7 251
<> 144:ef7eb2e8f9f7 252 /** @defgroup SAI_Error_Code SAI Error Code
<> 144:ef7eb2e8f9f7 253 * @{
<> 144:ef7eb2e8f9f7 254 */
<> 144:ef7eb2e8f9f7 255 #define HAL_SAI_ERROR_NONE ((uint32_t)0x00000000U) /*!< No error */
<> 144:ef7eb2e8f9f7 256 #define HAL_SAI_ERROR_OVR ((uint32_t)0x00000001U) /*!< Overrun Error */
<> 144:ef7eb2e8f9f7 257 #define HAL_SAI_ERROR_UDR ((uint32_t)0x00000002U) /*!< Underrun error */
<> 144:ef7eb2e8f9f7 258 #define HAL_SAI_ERROR_AFSDET ((uint32_t)0x00000004U) /*!< Anticipated Frame synchronisation detection */
<> 144:ef7eb2e8f9f7 259 #define HAL_SAI_ERROR_LFSDET ((uint32_t)0x00000008U) /*!< Late Frame synchronisation detection */
<> 144:ef7eb2e8f9f7 260 #define HAL_SAI_ERROR_CNREADY ((uint32_t)0x00000010U) /*!< codec not ready */
<> 144:ef7eb2e8f9f7 261 #define HAL_SAI_ERROR_WCKCFG ((uint32_t)0x00000020U) /*!< Wrong clock configuration */
<> 144:ef7eb2e8f9f7 262 #define HAL_SAI_ERROR_TIMEOUT ((uint32_t)0x00000040U) /*!< Timeout error */
<> 144:ef7eb2e8f9f7 263 #define HAL_SAI_ERROR_DMA ((uint32_t)0x00000080U) /*!< DMA error */
<> 144:ef7eb2e8f9f7 264 /**
<> 144:ef7eb2e8f9f7 265 * @}
<> 144:ef7eb2e8f9f7 266 */
<> 144:ef7eb2e8f9f7 267
<> 144:ef7eb2e8f9f7 268 /** @defgroup SAI_Block_SyncExt SAI External synchronisation
<> 144:ef7eb2e8f9f7 269 * @{
<> 144:ef7eb2e8f9f7 270 */
<> 144:ef7eb2e8f9f7 271 #define SAI_SYNCEXT_DISABLE 0
<> 144:ef7eb2e8f9f7 272 #define SAI_SYNCEXT_OUTBLOCKA_ENABLE 1
<> 144:ef7eb2e8f9f7 273 #define SAI_SYNCEXT_OUTBLOCKB_ENABLE 2
<> 144:ef7eb2e8f9f7 274 /**
<> 144:ef7eb2e8f9f7 275 * @}
<> 144:ef7eb2e8f9f7 276 */
<> 144:ef7eb2e8f9f7 277
<> 144:ef7eb2e8f9f7 278 /** @defgroup SAI_Protocol SAI Supported protocol
<> 144:ef7eb2e8f9f7 279 * @{
<> 144:ef7eb2e8f9f7 280 */
<> 144:ef7eb2e8f9f7 281 #define SAI_I2S_STANDARD 0
<> 144:ef7eb2e8f9f7 282 #define SAI_I2S_MSBJUSTIFIED 1
<> 144:ef7eb2e8f9f7 283 #define SAI_I2S_LSBJUSTIFIED 2
<> 144:ef7eb2e8f9f7 284 #define SAI_PCM_LONG 3
<> 144:ef7eb2e8f9f7 285 #define SAI_PCM_SHORT 4
<> 144:ef7eb2e8f9f7 286 /**
<> 144:ef7eb2e8f9f7 287 * @}
<> 144:ef7eb2e8f9f7 288 */
<> 144:ef7eb2e8f9f7 289
<> 144:ef7eb2e8f9f7 290 /** @defgroup SAI_Protocol_DataSize SAI protocol data size
<> 144:ef7eb2e8f9f7 291 * @{
<> 144:ef7eb2e8f9f7 292 */
<> 144:ef7eb2e8f9f7 293 #define SAI_PROTOCOL_DATASIZE_16BIT 0
<> 144:ef7eb2e8f9f7 294 #define SAI_PROTOCOL_DATASIZE_16BITEXTENDED 1
<> 144:ef7eb2e8f9f7 295 #define SAI_PROTOCOL_DATASIZE_24BIT 2
<> 144:ef7eb2e8f9f7 296 #define SAI_PROTOCOL_DATASIZE_32BIT 3
<> 144:ef7eb2e8f9f7 297 /**
<> 144:ef7eb2e8f9f7 298 * @}
<> 144:ef7eb2e8f9f7 299 */
<> 144:ef7eb2e8f9f7 300
<> 144:ef7eb2e8f9f7 301 /** @defgroup SAI_Audio_Frequency SAI Audio Frequency
<> 144:ef7eb2e8f9f7 302 * @{
<> 144:ef7eb2e8f9f7 303 */
<> 144:ef7eb2e8f9f7 304 #define SAI_AUDIO_FREQUENCY_192K ((uint32_t)192000U)
<> 144:ef7eb2e8f9f7 305 #define SAI_AUDIO_FREQUENCY_96K ((uint32_t)96000U)
<> 144:ef7eb2e8f9f7 306 #define SAI_AUDIO_FREQUENCY_48K ((uint32_t)48000U)
<> 144:ef7eb2e8f9f7 307 #define SAI_AUDIO_FREQUENCY_44K ((uint32_t)44100U)
<> 144:ef7eb2e8f9f7 308 #define SAI_AUDIO_FREQUENCY_32K ((uint32_t)32000U)
<> 144:ef7eb2e8f9f7 309 #define SAI_AUDIO_FREQUENCY_22K ((uint32_t)22050U)
<> 144:ef7eb2e8f9f7 310 #define SAI_AUDIO_FREQUENCY_16K ((uint32_t)16000U)
<> 144:ef7eb2e8f9f7 311 #define SAI_AUDIO_FREQUENCY_11K ((uint32_t)11025U)
<> 144:ef7eb2e8f9f7 312 #define SAI_AUDIO_FREQUENCY_8K ((uint32_t)8000U)
<> 144:ef7eb2e8f9f7 313 #define SAI_AUDIO_FREQUENCY_MCKDIV ((uint32_t)0U)
<> 144:ef7eb2e8f9f7 314 /**
<> 144:ef7eb2e8f9f7 315 * @}
<> 144:ef7eb2e8f9f7 316 */
<> 144:ef7eb2e8f9f7 317
<> 144:ef7eb2e8f9f7 318 /** @defgroup SAI_Block_Mode SAI Block Mode
<> 144:ef7eb2e8f9f7 319 * @{
<> 144:ef7eb2e8f9f7 320 */
<> 144:ef7eb2e8f9f7 321 #define SAI_MODEMASTER_TX ((uint32_t)0x00000000U)
<> 144:ef7eb2e8f9f7 322 #define SAI_MODEMASTER_RX ((uint32_t)SAI_xCR1_MODE_0)
<> 144:ef7eb2e8f9f7 323 #define SAI_MODESLAVE_TX ((uint32_t)SAI_xCR1_MODE_1)
<> 144:ef7eb2e8f9f7 324 #define SAI_MODESLAVE_RX ((uint32_t)(SAI_xCR1_MODE_1 | SAI_xCR1_MODE_0))
<> 144:ef7eb2e8f9f7 325
<> 144:ef7eb2e8f9f7 326 /**
<> 144:ef7eb2e8f9f7 327 * @}
<> 144:ef7eb2e8f9f7 328 */
<> 144:ef7eb2e8f9f7 329
<> 144:ef7eb2e8f9f7 330 /** @defgroup SAI_Block_Protocol SAI Block Protocol
<> 144:ef7eb2e8f9f7 331 * @{
<> 144:ef7eb2e8f9f7 332 */
<> 144:ef7eb2e8f9f7 333 #define SAI_FREE_PROTOCOL ((uint32_t)0x00000000U)
<> 144:ef7eb2e8f9f7 334 #define SAI_SPDIF_PROTOCOL ((uint32_t)SAI_xCR1_PRTCFG_0)
<> 144:ef7eb2e8f9f7 335 #define SAI_AC97_PROTOCOL ((uint32_t)SAI_xCR1_PRTCFG_1)
<> 144:ef7eb2e8f9f7 336 /**
<> 144:ef7eb2e8f9f7 337 * @}
<> 144:ef7eb2e8f9f7 338 */
<> 144:ef7eb2e8f9f7 339
<> 144:ef7eb2e8f9f7 340 /** @defgroup SAI_Block_Data_Size SAI Block Data Size
<> 144:ef7eb2e8f9f7 341 * @{
<> 144:ef7eb2e8f9f7 342 */
<> 144:ef7eb2e8f9f7 343 #define SAI_DATASIZE_8 ((uint32_t)SAI_xCR1_DS_1)
<> 144:ef7eb2e8f9f7 344 #define SAI_DATASIZE_10 ((uint32_t)(SAI_xCR1_DS_1 | SAI_xCR1_DS_0))
<> 144:ef7eb2e8f9f7 345 #define SAI_DATASIZE_16 ((uint32_t)SAI_xCR1_DS_2)
<> 144:ef7eb2e8f9f7 346 #define SAI_DATASIZE_20 ((uint32_t)(SAI_xCR1_DS_2 | SAI_xCR1_DS_0))
<> 144:ef7eb2e8f9f7 347 #define SAI_DATASIZE_24 ((uint32_t)(SAI_xCR1_DS_2 | SAI_xCR1_DS_1))
<> 144:ef7eb2e8f9f7 348 #define SAI_DATASIZE_32 ((uint32_t)(SAI_xCR1_DS_2 | SAI_xCR1_DS_1 | SAI_xCR1_DS_0))
<> 144:ef7eb2e8f9f7 349 /**
<> 144:ef7eb2e8f9f7 350 * @}
<> 144:ef7eb2e8f9f7 351 */
<> 144:ef7eb2e8f9f7 352
<> 144:ef7eb2e8f9f7 353 /** @defgroup SAI_Block_MSB_LSB_transmission SAI Block MSB LSB transmission
<> 144:ef7eb2e8f9f7 354 * @{
<> 144:ef7eb2e8f9f7 355 */
<> 144:ef7eb2e8f9f7 356 #define SAI_FIRSTBIT_MSB ((uint32_t)0x00000000U)
<> 144:ef7eb2e8f9f7 357 #define SAI_FIRSTBIT_LSB ((uint32_t)SAI_xCR1_LSBFIRST)
<> 144:ef7eb2e8f9f7 358 /**
<> 144:ef7eb2e8f9f7 359 * @}
<> 144:ef7eb2e8f9f7 360 */
<> 144:ef7eb2e8f9f7 361
<> 144:ef7eb2e8f9f7 362 /** @defgroup SAI_Block_Clock_Strobing SAI Block Clock Strobing
<> 144:ef7eb2e8f9f7 363 * @{
<> 144:ef7eb2e8f9f7 364 */
<> 144:ef7eb2e8f9f7 365 #define SAI_CLOCKSTROBING_FALLINGEDGE 0
<> 144:ef7eb2e8f9f7 366 #define SAI_CLOCKSTROBING_RISINGEDGE 1
<> 144:ef7eb2e8f9f7 367 /**
<> 144:ef7eb2e8f9f7 368 * @}
<> 144:ef7eb2e8f9f7 369 */
<> 144:ef7eb2e8f9f7 370
<> 144:ef7eb2e8f9f7 371 /** @defgroup SAI_Block_Synchronization SAI Block Synchronization
<> 144:ef7eb2e8f9f7 372 * @{
<> 144:ef7eb2e8f9f7 373 */
<> 144:ef7eb2e8f9f7 374 #define SAI_ASYNCHRONOUS 0 /*!< Asynchronous */
<> 144:ef7eb2e8f9f7 375 #define SAI_SYNCHRONOUS 1 /*!< Synchronous with other block of same SAI */
<> 144:ef7eb2e8f9f7 376 #define SAI_SYNCHRONOUS_EXT_SAI1 2 /*!< Synchronous with other SAI, SAI1 */
<> 144:ef7eb2e8f9f7 377 #define SAI_SYNCHRONOUS_EXT_SAI2 3 /*!< Synchronous with other SAI, SAI2 */
<> 144:ef7eb2e8f9f7 378 /**
<> 144:ef7eb2e8f9f7 379 * @}
<> 144:ef7eb2e8f9f7 380 */
<> 144:ef7eb2e8f9f7 381
<> 144:ef7eb2e8f9f7 382 /** @defgroup SAI_Block_Output_Drive SAI Block Output Drive
<> 144:ef7eb2e8f9f7 383 * @{
<> 144:ef7eb2e8f9f7 384 */
<> 144:ef7eb2e8f9f7 385 #define SAI_OUTPUTDRIVE_DISABLE ((uint32_t)0x00000000U)
<> 144:ef7eb2e8f9f7 386 #define SAI_OUTPUTDRIVE_ENABLE ((uint32_t)SAI_xCR1_OUTDRIV)
<> 144:ef7eb2e8f9f7 387 /**
<> 144:ef7eb2e8f9f7 388 * @}
<> 144:ef7eb2e8f9f7 389 */
<> 144:ef7eb2e8f9f7 390
<> 144:ef7eb2e8f9f7 391 /** @defgroup SAI_Block_NoDivider SAI Block NoDivider
<> 144:ef7eb2e8f9f7 392 * @{
<> 144:ef7eb2e8f9f7 393 */
<> 144:ef7eb2e8f9f7 394 #define SAI_MASTERDIVIDER_ENABLE ((uint32_t)0x00000000U)
<> 144:ef7eb2e8f9f7 395 #define SAI_MASTERDIVIDER_DISABLE ((uint32_t)SAI_xCR1_NODIV)
<> 144:ef7eb2e8f9f7 396 /**
<> 144:ef7eb2e8f9f7 397 * @}
<> 144:ef7eb2e8f9f7 398 */
<> 144:ef7eb2e8f9f7 399
<> 144:ef7eb2e8f9f7 400
<> 144:ef7eb2e8f9f7 401 /** @defgroup SAI_Block_FS_Definition SAI Block FS Definition
<> 144:ef7eb2e8f9f7 402 * @{
<> 144:ef7eb2e8f9f7 403 */
<> 144:ef7eb2e8f9f7 404 #define SAI_FS_STARTFRAME ((uint32_t)0x00000000U)
<> 144:ef7eb2e8f9f7 405 #define SAI_FS_CHANNEL_IDENTIFICATION ((uint32_t)SAI_xFRCR_FSDEF)
<> 144:ef7eb2e8f9f7 406 /**
<> 144:ef7eb2e8f9f7 407 * @}
<> 144:ef7eb2e8f9f7 408 */
<> 144:ef7eb2e8f9f7 409
<> 144:ef7eb2e8f9f7 410 /** @defgroup SAI_Block_FS_Polarity SAI Block FS Polarity
<> 144:ef7eb2e8f9f7 411 * @{
<> 144:ef7eb2e8f9f7 412 */
<> 144:ef7eb2e8f9f7 413 #define SAI_FS_ACTIVE_LOW ((uint32_t)0x00000000U)
<> 144:ef7eb2e8f9f7 414 #define SAI_FS_ACTIVE_HIGH ((uint32_t)SAI_xFRCR_FSPOL)
<> 144:ef7eb2e8f9f7 415 /**
<> 144:ef7eb2e8f9f7 416 * @}
<> 144:ef7eb2e8f9f7 417 */
<> 144:ef7eb2e8f9f7 418
<> 144:ef7eb2e8f9f7 419 /** @defgroup SAI_Block_FS_Offset SAI Block FS Offset
<> 144:ef7eb2e8f9f7 420 * @{
<> 144:ef7eb2e8f9f7 421 */
<> 144:ef7eb2e8f9f7 422 #define SAI_FS_FIRSTBIT ((uint32_t)0x00000000U)
<> 144:ef7eb2e8f9f7 423 #define SAI_FS_BEFOREFIRSTBIT ((uint32_t)SAI_xFRCR_FSOFF)
<> 144:ef7eb2e8f9f7 424 /**
<> 144:ef7eb2e8f9f7 425 * @}
<> 144:ef7eb2e8f9f7 426 */
<> 144:ef7eb2e8f9f7 427
<> 144:ef7eb2e8f9f7 428
<> 144:ef7eb2e8f9f7 429 /** @defgroup SAI_Block_Slot_Size SAI Block Slot Size
<> 144:ef7eb2e8f9f7 430 * @{
<> 144:ef7eb2e8f9f7 431 */
<> 144:ef7eb2e8f9f7 432 #define SAI_SLOTSIZE_DATASIZE ((uint32_t)0x00000000U)
<> 144:ef7eb2e8f9f7 433 #define SAI_SLOTSIZE_16B ((uint32_t)SAI_xSLOTR_SLOTSZ_0)
<> 144:ef7eb2e8f9f7 434 #define SAI_SLOTSIZE_32B ((uint32_t)SAI_xSLOTR_SLOTSZ_1)
<> 144:ef7eb2e8f9f7 435 /**
<> 144:ef7eb2e8f9f7 436 * @}
<> 144:ef7eb2e8f9f7 437 */
<> 144:ef7eb2e8f9f7 438
<> 144:ef7eb2e8f9f7 439 /** @defgroup SAI_Block_Slot_Active SAI Block Slot Active
<> 144:ef7eb2e8f9f7 440 * @{
<> 144:ef7eb2e8f9f7 441 */
<> 144:ef7eb2e8f9f7 442 #define SAI_SLOT_NOTACTIVE ((uint32_t)0x00000000U)
<> 144:ef7eb2e8f9f7 443 #define SAI_SLOTACTIVE_0 ((uint32_t)0x00000001U)
<> 144:ef7eb2e8f9f7 444 #define SAI_SLOTACTIVE_1 ((uint32_t)0x00000002U)
<> 144:ef7eb2e8f9f7 445 #define SAI_SLOTACTIVE_2 ((uint32_t)0x00000004U)
<> 144:ef7eb2e8f9f7 446 #define SAI_SLOTACTIVE_3 ((uint32_t)0x00000008U)
<> 144:ef7eb2e8f9f7 447 #define SAI_SLOTACTIVE_4 ((uint32_t)0x00000010U)
<> 144:ef7eb2e8f9f7 448 #define SAI_SLOTACTIVE_5 ((uint32_t)0x00000020U)
<> 144:ef7eb2e8f9f7 449 #define SAI_SLOTACTIVE_6 ((uint32_t)0x00000040U)
<> 144:ef7eb2e8f9f7 450 #define SAI_SLOTACTIVE_7 ((uint32_t)0x00000080U)
<> 144:ef7eb2e8f9f7 451 #define SAI_SLOTACTIVE_8 ((uint32_t)0x00000100U)
<> 144:ef7eb2e8f9f7 452 #define SAI_SLOTACTIVE_9 ((uint32_t)0x00000200U)
<> 144:ef7eb2e8f9f7 453 #define SAI_SLOTACTIVE_10 ((uint32_t)0x00000400U)
<> 144:ef7eb2e8f9f7 454 #define SAI_SLOTACTIVE_11 ((uint32_t)0x00000800U)
<> 144:ef7eb2e8f9f7 455 #define SAI_SLOTACTIVE_12 ((uint32_t)0x00001000U)
<> 144:ef7eb2e8f9f7 456 #define SAI_SLOTACTIVE_13 ((uint32_t)0x00002000U)
<> 144:ef7eb2e8f9f7 457 #define SAI_SLOTACTIVE_14 ((uint32_t)0x00004000U)
<> 144:ef7eb2e8f9f7 458 #define SAI_SLOTACTIVE_15 ((uint32_t)0x00008000U)
<> 144:ef7eb2e8f9f7 459 #define SAI_SLOTACTIVE_ALL ((uint32_t)0x0000FFFFU)
<> 144:ef7eb2e8f9f7 460 /**
<> 144:ef7eb2e8f9f7 461 * @}
<> 144:ef7eb2e8f9f7 462 */
<> 144:ef7eb2e8f9f7 463
<> 144:ef7eb2e8f9f7 464 /** @defgroup SAI_Mono_Stereo_Mode SAI Mono Stereo Mode
<> 144:ef7eb2e8f9f7 465 * @{
<> 144:ef7eb2e8f9f7 466 */
<> 144:ef7eb2e8f9f7 467 #define SAI_STEREOMODE ((uint32_t)0x00000000U)
<> 144:ef7eb2e8f9f7 468 #define SAI_MONOMODE ((uint32_t)SAI_xCR1_MONO)
<> 144:ef7eb2e8f9f7 469 /**
<> 144:ef7eb2e8f9f7 470 * @}
<> 144:ef7eb2e8f9f7 471 */
<> 144:ef7eb2e8f9f7 472
<> 144:ef7eb2e8f9f7 473 /** @defgroup SAI_TRIState_Management SAI TRIState Management
<> 144:ef7eb2e8f9f7 474 * @{
<> 144:ef7eb2e8f9f7 475 */
<> 144:ef7eb2e8f9f7 476 #define SAI_OUTPUT_NOTRELEASED ((uint32_t)0x00000000U)
<> 144:ef7eb2e8f9f7 477 #define SAI_OUTPUT_RELEASED ((uint32_t)SAI_xCR2_TRIS)
<> 144:ef7eb2e8f9f7 478 /**
<> 144:ef7eb2e8f9f7 479 * @}
<> 144:ef7eb2e8f9f7 480 */
<> 144:ef7eb2e8f9f7 481
<> 144:ef7eb2e8f9f7 482 /** @defgroup SAI_Block_Fifo_Threshold SAI Block Fifo Threshold
<> 144:ef7eb2e8f9f7 483 * @{
<> 144:ef7eb2e8f9f7 484 */
<> 144:ef7eb2e8f9f7 485 #define SAI_FIFOTHRESHOLD_EMPTY ((uint32_t)0x00000000U)
<> 144:ef7eb2e8f9f7 486 #define SAI_FIFOTHRESHOLD_1QF ((uint32_t)(SAI_xCR2_FTH_0))
<> 144:ef7eb2e8f9f7 487 #define SAI_FIFOTHRESHOLD_HF ((uint32_t)(SAI_xCR2_FTH_1))
<> 144:ef7eb2e8f9f7 488 #define SAI_FIFOTHRESHOLD_3QF ((uint32_t)(SAI_xCR2_FTH_1 | SAI_xCR2_FTH_0))
<> 144:ef7eb2e8f9f7 489 #define SAI_FIFOTHRESHOLD_FULL ((uint32_t)(SAI_xCR2_FTH_2))
<> 144:ef7eb2e8f9f7 490 /**
<> 144:ef7eb2e8f9f7 491 * @}
<> 144:ef7eb2e8f9f7 492 */
<> 144:ef7eb2e8f9f7 493
<> 144:ef7eb2e8f9f7 494 /** @defgroup SAI_Block_Companding_Mode SAI Block Companding Mode
<> 144:ef7eb2e8f9f7 495 * @{
<> 144:ef7eb2e8f9f7 496 */
<> 144:ef7eb2e8f9f7 497 #define SAI_NOCOMPANDING ((uint32_t)0x00000000U)
<> 144:ef7eb2e8f9f7 498 #define SAI_ULAW_1CPL_COMPANDING ((uint32_t)(SAI_xCR2_COMP_1))
<> 144:ef7eb2e8f9f7 499 #define SAI_ALAW_1CPL_COMPANDING ((uint32_t)(SAI_xCR2_COMP_1 | SAI_xCR2_COMP_0))
<> 144:ef7eb2e8f9f7 500 #define SAI_ULAW_2CPL_COMPANDING ((uint32_t)(SAI_xCR2_COMP_1 | SAI_xCR2_CPL))
<> 144:ef7eb2e8f9f7 501 #define SAI_ALAW_2CPL_COMPANDING ((uint32_t)(SAI_xCR2_COMP_1 | SAI_xCR2_COMP_0 | SAI_xCR2_CPL))
<> 144:ef7eb2e8f9f7 502 /**
<> 144:ef7eb2e8f9f7 503 * @}
<> 144:ef7eb2e8f9f7 504 */
<> 144:ef7eb2e8f9f7 505
<> 144:ef7eb2e8f9f7 506 /** @defgroup SAI_Block_Mute_Value SAI Block Mute Value
<> 144:ef7eb2e8f9f7 507 * @{
<> 144:ef7eb2e8f9f7 508 */
<> 144:ef7eb2e8f9f7 509 #define SAI_ZERO_VALUE ((uint32_t)0x00000000U)
<> 144:ef7eb2e8f9f7 510 #define SAI_LAST_SENT_VALUE ((uint32_t)SAI_xCR2_MUTEVAL)
<> 144:ef7eb2e8f9f7 511 /**
<> 144:ef7eb2e8f9f7 512 * @}
<> 144:ef7eb2e8f9f7 513 */
<> 144:ef7eb2e8f9f7 514
<> 144:ef7eb2e8f9f7 515 /** @defgroup SAI_Block_Interrupts_Definition SAI Block Interrupts Definition
<> 144:ef7eb2e8f9f7 516 * @{
<> 144:ef7eb2e8f9f7 517 */
<> 144:ef7eb2e8f9f7 518 #define SAI_IT_OVRUDR ((uint32_t)SAI_xIMR_OVRUDRIE)
<> 144:ef7eb2e8f9f7 519 #define SAI_IT_MUTEDET ((uint32_t)SAI_xIMR_MUTEDETIE)
<> 144:ef7eb2e8f9f7 520 #define SAI_IT_WCKCFG ((uint32_t)SAI_xIMR_WCKCFGIE)
<> 144:ef7eb2e8f9f7 521 #define SAI_IT_FREQ ((uint32_t)SAI_xIMR_FREQIE)
<> 144:ef7eb2e8f9f7 522 #define SAI_IT_CNRDY ((uint32_t)SAI_xIMR_CNRDYIE)
<> 144:ef7eb2e8f9f7 523 #define SAI_IT_AFSDET ((uint32_t)SAI_xIMR_AFSDETIE)
<> 144:ef7eb2e8f9f7 524 #define SAI_IT_LFSDET ((uint32_t)SAI_xIMR_LFSDETIE)
<> 144:ef7eb2e8f9f7 525 /**
<> 144:ef7eb2e8f9f7 526 * @}
<> 144:ef7eb2e8f9f7 527 */
<> 144:ef7eb2e8f9f7 528
<> 144:ef7eb2e8f9f7 529 /** @defgroup SAI_Block_Flags_Definition SAI Block Flags Definition
<> 144:ef7eb2e8f9f7 530 * @{
<> 144:ef7eb2e8f9f7 531 */
<> 144:ef7eb2e8f9f7 532 #define SAI_FLAG_OVRUDR ((uint32_t)SAI_xSR_OVRUDR)
<> 144:ef7eb2e8f9f7 533 #define SAI_FLAG_MUTEDET ((uint32_t)SAI_xSR_MUTEDET)
<> 144:ef7eb2e8f9f7 534 #define SAI_FLAG_WCKCFG ((uint32_t)SAI_xSR_WCKCFG)
<> 144:ef7eb2e8f9f7 535 #define SAI_FLAG_FREQ ((uint32_t)SAI_xSR_FREQ)
<> 144:ef7eb2e8f9f7 536 #define SAI_FLAG_CNRDY ((uint32_t)SAI_xSR_CNRDY)
<> 144:ef7eb2e8f9f7 537 #define SAI_FLAG_AFSDET ((uint32_t)SAI_xSR_AFSDET)
<> 144:ef7eb2e8f9f7 538 #define SAI_FLAG_LFSDET ((uint32_t)SAI_xSR_LFSDET)
<> 144:ef7eb2e8f9f7 539 /**
<> 144:ef7eb2e8f9f7 540 * @}
<> 144:ef7eb2e8f9f7 541 */
<> 144:ef7eb2e8f9f7 542
<> 144:ef7eb2e8f9f7 543 /** @defgroup SAI_Block_Fifo_Status_Level SAI Block Fifo Status Level
<> 144:ef7eb2e8f9f7 544 * @{
<> 144:ef7eb2e8f9f7 545 */
<> 144:ef7eb2e8f9f7 546 #define SAI_FIFOSTATUS_EMPTY ((uint32_t)0x00000000U)
<> 144:ef7eb2e8f9f7 547 #define SAI_FIFOSTATUS_LESS1QUARTERFULL ((uint32_t)0x00010000U)
<> 144:ef7eb2e8f9f7 548 #define SAI_FIFOSTATUS_1QUARTERFULL ((uint32_t)0x00020000U)
<> 144:ef7eb2e8f9f7 549 #define SAI_FIFOSTATUS_HALFFULL ((uint32_t)0x00030000U)
<> 144:ef7eb2e8f9f7 550 #define SAI_FIFOSTATUS_3QUARTERFULL ((uint32_t)0x00040000U)
<> 144:ef7eb2e8f9f7 551 #define SAI_FIFOSTATUS_FULL ((uint32_t)0x00050000U)
<> 144:ef7eb2e8f9f7 552 /**
<> 144:ef7eb2e8f9f7 553 * @}
<> 144:ef7eb2e8f9f7 554 */
<> 144:ef7eb2e8f9f7 555
<> 144:ef7eb2e8f9f7 556 /**
<> 144:ef7eb2e8f9f7 557 * @}
<> 144:ef7eb2e8f9f7 558 */
<> 144:ef7eb2e8f9f7 559
<> 144:ef7eb2e8f9f7 560 /* Exported macro ------------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 561
<> 144:ef7eb2e8f9f7 562 /** @defgroup SAI_Exported_Macros SAI Exported Macros
<> 144:ef7eb2e8f9f7 563 * @brief macros to handle interrupts and specific configurations
<> 144:ef7eb2e8f9f7 564 * @{
<> 144:ef7eb2e8f9f7 565 */
<> 144:ef7eb2e8f9f7 566
<> 144:ef7eb2e8f9f7 567 /** @brief Reset SAI handle state.
<> 144:ef7eb2e8f9f7 568 * @param __HANDLE__: specifies the SAI Handle.
<> 144:ef7eb2e8f9f7 569 * @retval None
<> 144:ef7eb2e8f9f7 570 */
<> 144:ef7eb2e8f9f7 571 #define __HAL_SAI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SAI_STATE_RESET)
<> 144:ef7eb2e8f9f7 572
<> 144:ef7eb2e8f9f7 573 /** @brief Enable or disable the specified SAI interrupts.
<> 144:ef7eb2e8f9f7 574 * @param __HANDLE__: specifies the SAI Handle.
<> 144:ef7eb2e8f9f7 575 * @param __INTERRUPT__: specifies the interrupt source to enable or disable.
<> 144:ef7eb2e8f9f7 576 * This parameter can be one of the following values:
<> 144:ef7eb2e8f9f7 577 * @arg SAI_IT_OVRUDR: Overrun underrun interrupt enable
<> 144:ef7eb2e8f9f7 578 * @arg SAI_IT_MUTEDET: Mute detection interrupt enable
<> 144:ef7eb2e8f9f7 579 * @arg SAI_IT_WCKCFG: Wrong Clock Configuration interrupt enable
<> 144:ef7eb2e8f9f7 580 * @arg SAI_IT_FREQ: FIFO request interrupt enable
<> 144:ef7eb2e8f9f7 581 * @arg SAI_IT_CNRDY: Codec not ready interrupt enable
<> 144:ef7eb2e8f9f7 582 * @arg SAI_IT_AFSDET: Anticipated frame synchronization detection interrupt enable
<> 144:ef7eb2e8f9f7 583 * @arg SAI_IT_LFSDET: Late frame synchronization detection interrupt enable
<> 144:ef7eb2e8f9f7 584 * @retval None
<> 144:ef7eb2e8f9f7 585 */
<> 144:ef7eb2e8f9f7 586 #define __HAL_SAI_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IMR |= (__INTERRUPT__))
<> 144:ef7eb2e8f9f7 587 #define __HAL_SAI_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IMR &= (~(__INTERRUPT__)))
<> 144:ef7eb2e8f9f7 588
<> 144:ef7eb2e8f9f7 589 /** @brief Check whether the specified SAI interrupt source is enabled or not.
<> 144:ef7eb2e8f9f7 590 * @param __HANDLE__: specifies the SAI Handle.
<> 144:ef7eb2e8f9f7 591 * @param __INTERRUPT__: specifies the SAI interrupt source to check.
<> 144:ef7eb2e8f9f7 592 * This parameter can be one of the following values:
<> 144:ef7eb2e8f9f7 593 * @arg SAI_IT_OVRUDR: Overrun underrun interrupt enable
<> 144:ef7eb2e8f9f7 594 * @arg SAI_IT_MUTEDET: Mute detection interrupt enable
<> 144:ef7eb2e8f9f7 595 * @arg SAI_IT_WCKCFG: Wrong Clock Configuration interrupt enable
<> 144:ef7eb2e8f9f7 596 * @arg SAI_IT_FREQ: FIFO request interrupt enable
<> 144:ef7eb2e8f9f7 597 * @arg SAI_IT_CNRDY: Codec not ready interrupt enable
<> 144:ef7eb2e8f9f7 598 * @arg SAI_IT_AFSDET: Anticipated frame synchronization detection interrupt enable
<> 144:ef7eb2e8f9f7 599 * @arg SAI_IT_LFSDET: Late frame synchronization detection interrupt enable
<> 144:ef7eb2e8f9f7 600 * @retval The new state of __INTERRUPT__ (TRUE or FALSE).
<> 144:ef7eb2e8f9f7 601 */
<> 144:ef7eb2e8f9f7 602 #define __HAL_SAI_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->IMR & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
<> 144:ef7eb2e8f9f7 603
<> 144:ef7eb2e8f9f7 604 /** @brief Check whether the specified SAI flag is set or not.
<> 144:ef7eb2e8f9f7 605 * @param __HANDLE__: specifies the SAI Handle.
<> 144:ef7eb2e8f9f7 606 * @param __FLAG__: specifies the flag to check.
<> 144:ef7eb2e8f9f7 607 * This parameter can be one of the following values:
<> 144:ef7eb2e8f9f7 608 * @arg SAI_FLAG_OVRUDR: Overrun underrun flag.
<> 144:ef7eb2e8f9f7 609 * @arg SAI_FLAG_MUTEDET: Mute detection flag.
<> 144:ef7eb2e8f9f7 610 * @arg SAI_FLAG_WCKCFG: Wrong Clock Configuration flag.
<> 144:ef7eb2e8f9f7 611 * @arg SAI_FLAG_FREQ: FIFO request flag.
<> 144:ef7eb2e8f9f7 612 * @arg SAI_FLAG_CNRDY: Codec not ready flag.
<> 144:ef7eb2e8f9f7 613 * @arg SAI_FLAG_AFSDET: Anticipated frame synchronization detection flag.
<> 144:ef7eb2e8f9f7 614 * @arg SAI_FLAG_LFSDET: Late frame synchronization detection flag.
<> 144:ef7eb2e8f9f7 615 * @retval The new state of __FLAG__ (TRUE or FALSE).
<> 144:ef7eb2e8f9f7 616 */
<> 144:ef7eb2e8f9f7 617 #define __HAL_SAI_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
<> 144:ef7eb2e8f9f7 618
<> 144:ef7eb2e8f9f7 619 /** @brief Clear the specified SAI pending flag.
<> 144:ef7eb2e8f9f7 620 * @param __HANDLE__: specifies the SAI Handle.
<> 144:ef7eb2e8f9f7 621 * @param __FLAG__: specifies the flag to check.
<> 144:ef7eb2e8f9f7 622 * This parameter can be any combination of the following values:
<> 144:ef7eb2e8f9f7 623 * @arg SAI_FLAG_OVRUDR: Clear Overrun underrun
<> 144:ef7eb2e8f9f7 624 * @arg SAI_FLAG_MUTEDET: Clear Mute detection
<> 144:ef7eb2e8f9f7 625 * @arg SAI_FLAG_WCKCFG: Clear Wrong Clock Configuration
<> 144:ef7eb2e8f9f7 626 * @arg SAI_FLAG_FREQ: Clear FIFO request
<> 144:ef7eb2e8f9f7 627 * @arg SAI_FLAG_CNRDY: Clear Codec not ready
<> 144:ef7eb2e8f9f7 628 * @arg SAI_FLAG_AFSDET: Clear Anticipated frame synchronization detection
<> 144:ef7eb2e8f9f7 629 * @arg SAI_FLAG_LFSDET: Clear Late frame synchronization detection
<> 144:ef7eb2e8f9f7 630 *
<> 144:ef7eb2e8f9f7 631 * @retval None
<> 144:ef7eb2e8f9f7 632 */
<> 144:ef7eb2e8f9f7 633 #define __HAL_SAI_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->CLRFR = (__FLAG__))
<> 144:ef7eb2e8f9f7 634
<> 144:ef7eb2e8f9f7 635 #define __HAL_SAI_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= SAI_xCR1_SAIEN)
<> 144:ef7eb2e8f9f7 636 #define __HAL_SAI_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~SAI_xCR1_SAIEN)
<> 144:ef7eb2e8f9f7 637
<> 144:ef7eb2e8f9f7 638 /**
<> 144:ef7eb2e8f9f7 639 * @}
<> 144:ef7eb2e8f9f7 640 */
<> 144:ef7eb2e8f9f7 641
<> 144:ef7eb2e8f9f7 642 /* Exported functions --------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 643
<> 144:ef7eb2e8f9f7 644 /** @addtogroup SAI_Exported_Functions
<> 144:ef7eb2e8f9f7 645 * @{
<> 144:ef7eb2e8f9f7 646 */
<> 144:ef7eb2e8f9f7 647
<> 144:ef7eb2e8f9f7 648 /* Initialization/de-initialization functions ********************************/
<> 144:ef7eb2e8f9f7 649
<> 144:ef7eb2e8f9f7 650 /** @addtogroup SAI_Exported_Functions_Group1
<> 144:ef7eb2e8f9f7 651 * @{
<> 144:ef7eb2e8f9f7 652 */
<> 144:ef7eb2e8f9f7 653 HAL_StatusTypeDef HAL_SAI_InitProtocol(SAI_HandleTypeDef *hsai, uint32_t protocol, uint32_t datasize, uint32_t nbslot);
<> 144:ef7eb2e8f9f7 654 HAL_StatusTypeDef HAL_SAI_Init(SAI_HandleTypeDef *hsai);
<> 144:ef7eb2e8f9f7 655 HAL_StatusTypeDef HAL_SAI_DeInit (SAI_HandleTypeDef *hsai);
<> 144:ef7eb2e8f9f7 656 void HAL_SAI_MspInit(SAI_HandleTypeDef *hsai);
<> 144:ef7eb2e8f9f7 657 void HAL_SAI_MspDeInit(SAI_HandleTypeDef *hsai);
<> 144:ef7eb2e8f9f7 658
<> 144:ef7eb2e8f9f7 659 /**
<> 144:ef7eb2e8f9f7 660 * @}
<> 144:ef7eb2e8f9f7 661 */
<> 144:ef7eb2e8f9f7 662
<> 144:ef7eb2e8f9f7 663 /* I/O operation functions ***************************************************/
<> 144:ef7eb2e8f9f7 664
<> 144:ef7eb2e8f9f7 665 /** @addtogroup SAI_Exported_Functions_Group2
<> 144:ef7eb2e8f9f7 666 * @{
<> 144:ef7eb2e8f9f7 667 */
<> 144:ef7eb2e8f9f7 668 /* Blocking mode: Polling */
<> 144:ef7eb2e8f9f7 669 HAL_StatusTypeDef HAL_SAI_Transmit(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size, uint32_t Timeout);
<> 144:ef7eb2e8f9f7 670 HAL_StatusTypeDef HAL_SAI_Receive(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size, uint32_t Timeout);
<> 144:ef7eb2e8f9f7 671
<> 144:ef7eb2e8f9f7 672 /* Non-Blocking mode: Interrupt */
<> 144:ef7eb2e8f9f7 673 HAL_StatusTypeDef HAL_SAI_Transmit_IT(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size);
<> 144:ef7eb2e8f9f7 674 HAL_StatusTypeDef HAL_SAI_Receive_IT(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size);
<> 144:ef7eb2e8f9f7 675
<> 144:ef7eb2e8f9f7 676 /* Non-Blocking mode: DMA */
<> 144:ef7eb2e8f9f7 677 HAL_StatusTypeDef HAL_SAI_Transmit_DMA(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size);
<> 144:ef7eb2e8f9f7 678 HAL_StatusTypeDef HAL_SAI_Receive_DMA(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size);
<> 144:ef7eb2e8f9f7 679 HAL_StatusTypeDef HAL_SAI_DMAPause(SAI_HandleTypeDef *hsai);
<> 144:ef7eb2e8f9f7 680 HAL_StatusTypeDef HAL_SAI_DMAResume(SAI_HandleTypeDef *hsai);
<> 144:ef7eb2e8f9f7 681 HAL_StatusTypeDef HAL_SAI_DMAStop(SAI_HandleTypeDef *hsai);
<> 144:ef7eb2e8f9f7 682
<> 144:ef7eb2e8f9f7 683 /* Abort function */
<> 144:ef7eb2e8f9f7 684 HAL_StatusTypeDef HAL_SAI_Abort(SAI_HandleTypeDef *hsai);
<> 144:ef7eb2e8f9f7 685
<> 144:ef7eb2e8f9f7 686 /* Mute management */
<> 144:ef7eb2e8f9f7 687 HAL_StatusTypeDef HAL_SAI_EnableTxMuteMode(SAI_HandleTypeDef *hsai, uint16_t val);
<> 144:ef7eb2e8f9f7 688 HAL_StatusTypeDef HAL_SAI_DisableTxMuteMode(SAI_HandleTypeDef *hsai);
<> 144:ef7eb2e8f9f7 689 HAL_StatusTypeDef HAL_SAI_EnableRxMuteMode(SAI_HandleTypeDef *hsai, SAIcallback callback, uint16_t counter);
<> 144:ef7eb2e8f9f7 690 HAL_StatusTypeDef HAL_SAI_DisableRxMuteMode(SAI_HandleTypeDef *hsai);
<> 144:ef7eb2e8f9f7 691
<> 144:ef7eb2e8f9f7 692 /* SAI IRQHandler and Callbacks used in non blocking modes (Interrupt and DMA) */
<> 144:ef7eb2e8f9f7 693 void HAL_SAI_IRQHandler(SAI_HandleTypeDef *hsai);
<> 144:ef7eb2e8f9f7 694 void HAL_SAI_TxHalfCpltCallback(SAI_HandleTypeDef *hsai);
<> 144:ef7eb2e8f9f7 695 void HAL_SAI_TxCpltCallback(SAI_HandleTypeDef *hsai);
<> 144:ef7eb2e8f9f7 696 void HAL_SAI_RxHalfCpltCallback(SAI_HandleTypeDef *hsai);
<> 144:ef7eb2e8f9f7 697 void HAL_SAI_RxCpltCallback(SAI_HandleTypeDef *hsai);
<> 144:ef7eb2e8f9f7 698 void HAL_SAI_ErrorCallback(SAI_HandleTypeDef *hsai);
<> 144:ef7eb2e8f9f7 699 /**
<> 144:ef7eb2e8f9f7 700 * @}
<> 144:ef7eb2e8f9f7 701 */
<> 144:ef7eb2e8f9f7 702
<> 144:ef7eb2e8f9f7 703 /** @addtogroup SAI_Exported_Functions_Group3
<> 144:ef7eb2e8f9f7 704 * @{
<> 144:ef7eb2e8f9f7 705 */
<> 144:ef7eb2e8f9f7 706 /* Peripheral State functions ************************************************/
<> 144:ef7eb2e8f9f7 707 HAL_SAI_StateTypeDef HAL_SAI_GetState(SAI_HandleTypeDef *hsai);
<> 144:ef7eb2e8f9f7 708 uint32_t HAL_SAI_GetError(SAI_HandleTypeDef *hsai);
<> 144:ef7eb2e8f9f7 709 /**
<> 144:ef7eb2e8f9f7 710 * @}
<> 144:ef7eb2e8f9f7 711 */
<> 144:ef7eb2e8f9f7 712
<> 144:ef7eb2e8f9f7 713 /**
<> 144:ef7eb2e8f9f7 714 * @}
<> 144:ef7eb2e8f9f7 715 */
<> 144:ef7eb2e8f9f7 716
<> 144:ef7eb2e8f9f7 717 /* Private macros ------------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 718 /** @addtogroup SAI_Private_Macros
<> 144:ef7eb2e8f9f7 719 * @{
<> 144:ef7eb2e8f9f7 720 */
<> 144:ef7eb2e8f9f7 721 #define IS_SAI_BLOCK_SYNCEXT(STATE) (((STATE) == SAI_SYNCEXT_DISABLE) ||\
<> 144:ef7eb2e8f9f7 722 ((STATE) == SAI_SYNCEXT_OUTBLOCKA_ENABLE) ||\
<> 144:ef7eb2e8f9f7 723 ((STATE) == SAI_SYNCEXT_OUTBLOCKB_ENABLE))
<> 144:ef7eb2e8f9f7 724
<> 144:ef7eb2e8f9f7 725 #define IS_SAI_SUPPORTED_PROTOCOL(PROTOCOL) (((PROTOCOL) == SAI_I2S_STANDARD) ||\
<> 144:ef7eb2e8f9f7 726 ((PROTOCOL) == SAI_I2S_MSBJUSTIFIED) ||\
<> 144:ef7eb2e8f9f7 727 ((PROTOCOL) == SAI_I2S_LSBJUSTIFIED) ||\
<> 144:ef7eb2e8f9f7 728 ((PROTOCOL) == SAI_PCM_LONG) ||\
<> 144:ef7eb2e8f9f7 729 ((PROTOCOL) == SAI_PCM_SHORT))
<> 144:ef7eb2e8f9f7 730
<> 144:ef7eb2e8f9f7 731 #define IS_SAI_PROTOCOL_DATASIZE(DATASIZE) (((DATASIZE) == SAI_PROTOCOL_DATASIZE_16BIT) ||\
<> 144:ef7eb2e8f9f7 732 ((DATASIZE) == SAI_PROTOCOL_DATASIZE_16BITEXTENDED) ||\
<> 144:ef7eb2e8f9f7 733 ((DATASIZE) == SAI_PROTOCOL_DATASIZE_24BIT) ||\
<> 144:ef7eb2e8f9f7 734 ((DATASIZE) == SAI_PROTOCOL_DATASIZE_32BIT))
<> 144:ef7eb2e8f9f7 735
<> 144:ef7eb2e8f9f7 736 #define IS_SAI_AUDIO_FREQUENCY(AUDIO) (((AUDIO) == SAI_AUDIO_FREQUENCY_192K) || ((AUDIO) == SAI_AUDIO_FREQUENCY_96K) || \
<> 144:ef7eb2e8f9f7 737 ((AUDIO) == SAI_AUDIO_FREQUENCY_48K) || ((AUDIO) == SAI_AUDIO_FREQUENCY_44K) || \
<> 144:ef7eb2e8f9f7 738 ((AUDIO) == SAI_AUDIO_FREQUENCY_32K) || ((AUDIO) == SAI_AUDIO_FREQUENCY_22K) || \
<> 144:ef7eb2e8f9f7 739 ((AUDIO) == SAI_AUDIO_FREQUENCY_16K) || ((AUDIO) == SAI_AUDIO_FREQUENCY_11K) || \
<> 144:ef7eb2e8f9f7 740 ((AUDIO) == SAI_AUDIO_FREQUENCY_8K) || ((AUDIO) == SAI_AUDIO_FREQUENCY_MCKDIV))
<> 144:ef7eb2e8f9f7 741
<> 144:ef7eb2e8f9f7 742 #define IS_SAI_BLOCK_MODE(MODE) (((MODE) == SAI_MODEMASTER_TX) || \
<> 144:ef7eb2e8f9f7 743 ((MODE) == SAI_MODEMASTER_RX) || \
<> 144:ef7eb2e8f9f7 744 ((MODE) == SAI_MODESLAVE_TX) || \
<> 144:ef7eb2e8f9f7 745 ((MODE) == SAI_MODESLAVE_RX))
<> 144:ef7eb2e8f9f7 746
<> 144:ef7eb2e8f9f7 747 #define IS_SAI_BLOCK_PROTOCOL(PROTOCOL) (((PROTOCOL) == SAI_FREE_PROTOCOL) || \
<> 144:ef7eb2e8f9f7 748 ((PROTOCOL) == SAI_AC97_PROTOCOL) || \
<> 144:ef7eb2e8f9f7 749 ((PROTOCOL) == SAI_SPDIF_PROTOCOL))
<> 144:ef7eb2e8f9f7 750
<> 144:ef7eb2e8f9f7 751 #define IS_SAI_BLOCK_DATASIZE(DATASIZE) (((DATASIZE) == SAI_DATASIZE_8) || \
<> 144:ef7eb2e8f9f7 752 ((DATASIZE) == SAI_DATASIZE_10) || \
<> 144:ef7eb2e8f9f7 753 ((DATASIZE) == SAI_DATASIZE_16) || \
<> 144:ef7eb2e8f9f7 754 ((DATASIZE) == SAI_DATASIZE_20) || \
<> 144:ef7eb2e8f9f7 755 ((DATASIZE) == SAI_DATASIZE_24) || \
<> 144:ef7eb2e8f9f7 756 ((DATASIZE) == SAI_DATASIZE_32))
<> 144:ef7eb2e8f9f7 757
<> 144:ef7eb2e8f9f7 758 #define IS_SAI_BLOCK_FIRST_BIT(BIT) (((BIT) == SAI_FIRSTBIT_MSB) || \
<> 144:ef7eb2e8f9f7 759 ((BIT) == SAI_FIRSTBIT_LSB))
<> 144:ef7eb2e8f9f7 760
<> 144:ef7eb2e8f9f7 761 #define IS_SAI_BLOCK_CLOCK_STROBING(CLOCK) (((CLOCK) == SAI_CLOCKSTROBING_FALLINGEDGE) || \
<> 144:ef7eb2e8f9f7 762 ((CLOCK) == SAI_CLOCKSTROBING_RISINGEDGE))
<> 144:ef7eb2e8f9f7 763
<> 144:ef7eb2e8f9f7 764 #define IS_SAI_BLOCK_SYNCHRO(SYNCHRO) (((SYNCHRO) == SAI_ASYNCHRONOUS) || \
<> 144:ef7eb2e8f9f7 765 ((SYNCHRO) == SAI_SYNCHRONOUS) || \
<> 144:ef7eb2e8f9f7 766 ((SYNCHRO) == SAI_SYNCHRONOUS_EXT_SAI1) || \
<> 144:ef7eb2e8f9f7 767 ((SYNCHRO) == SAI_SYNCHRONOUS_EXT_SAI2))
<> 144:ef7eb2e8f9f7 768
<> 144:ef7eb2e8f9f7 769 #define IS_SAI_BLOCK_OUTPUT_DRIVE(DRIVE) (((DRIVE) == SAI_OUTPUTDRIVE_DISABLE) || \
<> 144:ef7eb2e8f9f7 770 ((DRIVE) == SAI_OUTPUTDRIVE_ENABLE))
<> 144:ef7eb2e8f9f7 771
<> 144:ef7eb2e8f9f7 772 #define IS_SAI_BLOCK_NODIVIDER(NODIVIDER) (((NODIVIDER) == SAI_MASTERDIVIDER_ENABLE) || \
<> 144:ef7eb2e8f9f7 773 ((NODIVIDER) == SAI_MASTERDIVIDER_DISABLE))
<> 144:ef7eb2e8f9f7 774
<> 144:ef7eb2e8f9f7 775 #define IS_SAI_BLOCK_MUTE_COUNTER(COUNTER) ((COUNTER) <= 63)
<> 144:ef7eb2e8f9f7 776
<> 144:ef7eb2e8f9f7 777 #define IS_SAI_BLOCK_MUTE_VALUE(VALUE) (((VALUE) == SAI_ZERO_VALUE) || \
<> 144:ef7eb2e8f9f7 778 ((VALUE) == SAI_LAST_SENT_VALUE))
<> 144:ef7eb2e8f9f7 779
<> 144:ef7eb2e8f9f7 780 #define IS_SAI_BLOCK_COMPANDING_MODE(MODE) (((MODE) == SAI_NOCOMPANDING) || \
<> 144:ef7eb2e8f9f7 781 ((MODE) == SAI_ULAW_1CPL_COMPANDING) || \
<> 144:ef7eb2e8f9f7 782 ((MODE) == SAI_ALAW_1CPL_COMPANDING) || \
<> 144:ef7eb2e8f9f7 783 ((MODE) == SAI_ULAW_2CPL_COMPANDING) || \
<> 144:ef7eb2e8f9f7 784 ((MODE) == SAI_ALAW_2CPL_COMPANDING))
<> 144:ef7eb2e8f9f7 785
<> 144:ef7eb2e8f9f7 786 #define IS_SAI_BLOCK_FIFO_THRESHOLD(THRESHOLD) (((THRESHOLD) == SAI_FIFOTHRESHOLD_EMPTY) || \
<> 144:ef7eb2e8f9f7 787 ((THRESHOLD) == SAI_FIFOTHRESHOLD_1QF) || \
<> 144:ef7eb2e8f9f7 788 ((THRESHOLD) == SAI_FIFOTHRESHOLD_HF) || \
<> 144:ef7eb2e8f9f7 789 ((THRESHOLD) == SAI_FIFOTHRESHOLD_3QF) || \
<> 144:ef7eb2e8f9f7 790 ((THRESHOLD) == SAI_FIFOTHRESHOLD_FULL))
<> 144:ef7eb2e8f9f7 791
<> 144:ef7eb2e8f9f7 792 #define IS_SAI_BLOCK_TRISTATE_MANAGEMENT(STATE) (((STATE) == SAI_OUTPUT_NOTRELEASED) ||\
<> 144:ef7eb2e8f9f7 793 ((STATE) == SAI_OUTPUT_RELEASED))
<> 144:ef7eb2e8f9f7 794
<> 144:ef7eb2e8f9f7 795 #define IS_SAI_MONO_STEREO_MODE(MODE) (((MODE) == SAI_MONOMODE) ||\
<> 144:ef7eb2e8f9f7 796 ((MODE) == SAI_STEREOMODE))
<> 144:ef7eb2e8f9f7 797
<> 144:ef7eb2e8f9f7 798 #define IS_SAI_SLOT_ACTIVE(ACTIVE) ((ACTIVE) <= SAI_SLOTACTIVE_ALL)
<> 144:ef7eb2e8f9f7 799
<> 144:ef7eb2e8f9f7 800 #define IS_SAI_BLOCK_SLOT_NUMBER(NUMBER) ((1 <= (NUMBER)) && ((NUMBER) <= 16))
<> 144:ef7eb2e8f9f7 801
<> 144:ef7eb2e8f9f7 802 #define IS_SAI_BLOCK_SLOT_SIZE(SIZE) (((SIZE) == SAI_SLOTSIZE_DATASIZE) || \
<> 144:ef7eb2e8f9f7 803 ((SIZE) == SAI_SLOTSIZE_16B) || \
<> 144:ef7eb2e8f9f7 804 ((SIZE) == SAI_SLOTSIZE_32B))
<> 144:ef7eb2e8f9f7 805
<> 144:ef7eb2e8f9f7 806 #define IS_SAI_BLOCK_FIRSTBIT_OFFSET(OFFSET) ((OFFSET) <= 24)
<> 144:ef7eb2e8f9f7 807
<> 144:ef7eb2e8f9f7 808 #define IS_SAI_BLOCK_FS_OFFSET(OFFSET) (((OFFSET) == SAI_FS_FIRSTBIT) || \
<> 144:ef7eb2e8f9f7 809 ((OFFSET) == SAI_FS_BEFOREFIRSTBIT))
<> 144:ef7eb2e8f9f7 810
<> 144:ef7eb2e8f9f7 811 #define IS_SAI_BLOCK_FS_POLARITY(POLARITY) (((POLARITY) == SAI_FS_ACTIVE_LOW) || \
<> 144:ef7eb2e8f9f7 812 ((POLARITY) == SAI_FS_ACTIVE_HIGH))
<> 144:ef7eb2e8f9f7 813
<> 144:ef7eb2e8f9f7 814 #define IS_SAI_BLOCK_FS_DEFINITION(DEFINITION) (((DEFINITION) == SAI_FS_STARTFRAME) || \
<> 144:ef7eb2e8f9f7 815 ((DEFINITION) == SAI_FS_CHANNEL_IDENTIFICATION))
<> 144:ef7eb2e8f9f7 816
<> 144:ef7eb2e8f9f7 817 #define IS_SAI_BLOCK_MASTER_DIVIDER(DIVIDER) ((DIVIDER) <= 15)
<> 144:ef7eb2e8f9f7 818
<> 144:ef7eb2e8f9f7 819 #define IS_SAI_BLOCK_FRAME_LENGTH(LENGTH) ((8 <= (LENGTH)) && ((LENGTH) <= 256))
<> 144:ef7eb2e8f9f7 820
<> 144:ef7eb2e8f9f7 821 #define IS_SAI_BLOCK_ACTIVE_FRAME(LENGTH) ((1 <= (LENGTH)) && ((LENGTH) <= 128))
<> 144:ef7eb2e8f9f7 822
<> 144:ef7eb2e8f9f7 823 /**
<> 144:ef7eb2e8f9f7 824 * @}
<> 144:ef7eb2e8f9f7 825 */
<> 144:ef7eb2e8f9f7 826
<> 144:ef7eb2e8f9f7 827 /* Private functions ---------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 828 /** @defgroup SAI_Private_Functions SAI Private Functions
<> 144:ef7eb2e8f9f7 829 * @{
<> 144:ef7eb2e8f9f7 830 */
<> 144:ef7eb2e8f9f7 831
<> 144:ef7eb2e8f9f7 832 /**
<> 144:ef7eb2e8f9f7 833 * @}
<> 144:ef7eb2e8f9f7 834 */
<> 144:ef7eb2e8f9f7 835
<> 144:ef7eb2e8f9f7 836 /**
<> 144:ef7eb2e8f9f7 837 * @}
<> 144:ef7eb2e8f9f7 838 */
<> 144:ef7eb2e8f9f7 839
<> 144:ef7eb2e8f9f7 840 /**
<> 144:ef7eb2e8f9f7 841 * @}
<> 144:ef7eb2e8f9f7 842 */
<> 144:ef7eb2e8f9f7 843
<> 144:ef7eb2e8f9f7 844 #ifdef __cplusplus
<> 144:ef7eb2e8f9f7 845 }
<> 144:ef7eb2e8f9f7 846 #endif
<> 144:ef7eb2e8f9f7 847
<> 144:ef7eb2e8f9f7 848 #endif /* __STM32F7xx_HAL_SAI_H */
<> 144:ef7eb2e8f9f7 849
<> 144:ef7eb2e8f9f7 850 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/