mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Wed Jul 01 09:45:11 2015 +0100
Revision:
579:53297373a894
Parent:
573:ad23fe03a082
Child:
610:813dcc80987e
Synchronized with git revision d5b4d2ab9c47edb4dc5776e7177b0c2263459081

Full URL: https://github.com/mbedmicro/mbed/commit/d5b4d2ab9c47edb4dc5776e7177b0c2263459081/

Initial version of drivers for SAMR21

Who changed what in which revision?

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