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:
Thu Jul 02 16:30:08 2015 +0100
Revision:
581:39197bcd20f2
Parent:
532:fe11edbda85c
Child:
613:bc40b8d2aec4
Synchronized with git revision ae2d3cdffe70184eb8736d94f76c45c93f4b7724

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

Make it possible to build the core mbed library with yotta

Who changed what in which revision?

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