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:
Fri Aug 14 13:15:17 2015 +0100
Revision:
610:813dcc80987e
Parent:
573:ad23fe03a082
Synchronized with git revision 6d84db41c6833e0b9b024741eb0616a5f62d5599

Full URL: https://github.com/mbedmicro/mbed/commit/6d84db41c6833e0b9b024741eb0616a5f62d5599/

DISCO_F746NG - Improvements

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_i2s.h
mbed_official 573:ad23fe03a082 4 * @author MCD Application Team
mbed_official 610:813dcc80987e 5 * @version V1.0.1
mbed_official 610:813dcc80987e 6 * @date 25-June-2015
mbed_official 573:ad23fe03a082 7 * @brief Header file of I2S 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_I2S_H
mbed_official 573:ad23fe03a082 40 #define __STM32F7xx_HAL_I2S_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 /* Includes ------------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 47 #include "stm32f7xx_hal_def.h"
mbed_official 573:ad23fe03a082 48
mbed_official 573:ad23fe03a082 49 /** @addtogroup STM32F7xx_HAL_Driver
mbed_official 573:ad23fe03a082 50 * @{
mbed_official 573:ad23fe03a082 51 */
mbed_official 573:ad23fe03a082 52
mbed_official 573:ad23fe03a082 53 /** @addtogroup I2S
mbed_official 573:ad23fe03a082 54 * @{
mbed_official 573:ad23fe03a082 55 */
mbed_official 573:ad23fe03a082 56
mbed_official 573:ad23fe03a082 57 /* Exported types ------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 58 /** @defgroup I2S_Exported_Types I2S Exported Types
mbed_official 573:ad23fe03a082 59 * @{
mbed_official 573:ad23fe03a082 60 */
mbed_official 573:ad23fe03a082 61
mbed_official 573:ad23fe03a082 62 /**
mbed_official 573:ad23fe03a082 63 * @brief I2S Init structure definition
mbed_official 573:ad23fe03a082 64 */
mbed_official 573:ad23fe03a082 65 typedef struct
mbed_official 573:ad23fe03a082 66 {
mbed_official 573:ad23fe03a082 67 uint32_t Mode; /*!< Specifies the I2S operating mode.
mbed_official 573:ad23fe03a082 68 This parameter can be a value of @ref I2S_Mode */
mbed_official 573:ad23fe03a082 69
mbed_official 573:ad23fe03a082 70 uint32_t Standard; /*!< Specifies the standard used for the I2S communication.
mbed_official 573:ad23fe03a082 71 This parameter can be a value of @ref I2S_Standard */
mbed_official 573:ad23fe03a082 72
mbed_official 573:ad23fe03a082 73 uint32_t DataFormat; /*!< Specifies the data format for the I2S communication.
mbed_official 573:ad23fe03a082 74 This parameter can be a value of @ref I2S_Data_Format */
mbed_official 573:ad23fe03a082 75
mbed_official 573:ad23fe03a082 76 uint32_t MCLKOutput; /*!< Specifies whether the I2S MCLK output is enabled or not.
mbed_official 573:ad23fe03a082 77 This parameter can be a value of @ref I2S_MCLK_Output */
mbed_official 573:ad23fe03a082 78
mbed_official 573:ad23fe03a082 79 uint32_t AudioFreq; /*!< Specifies the frequency selected for the I2S communication.
mbed_official 573:ad23fe03a082 80 This parameter can be a value of @ref I2S_Audio_Frequency */
mbed_official 573:ad23fe03a082 81
mbed_official 573:ad23fe03a082 82 uint32_t CPOL; /*!< Specifies the idle state of the I2S clock.
mbed_official 573:ad23fe03a082 83 This parameter can be a value of @ref I2S_Clock_Polarity */
mbed_official 573:ad23fe03a082 84
mbed_official 573:ad23fe03a082 85 uint32_t ClockSource; /*!< Specifies the I2S Clock Source.
mbed_official 573:ad23fe03a082 86 This parameter can be a value of @ref I2S_Clock_Source */
mbed_official 573:ad23fe03a082 87 }I2S_InitTypeDef;
mbed_official 573:ad23fe03a082 88
mbed_official 573:ad23fe03a082 89 /**
mbed_official 573:ad23fe03a082 90 * @brief HAL State structures definition
mbed_official 573:ad23fe03a082 91 */
mbed_official 573:ad23fe03a082 92 typedef enum
mbed_official 573:ad23fe03a082 93 {
mbed_official 573:ad23fe03a082 94 HAL_I2S_STATE_RESET = 0x00, /*!< I2S not yet initialized or disabled */
mbed_official 573:ad23fe03a082 95 HAL_I2S_STATE_READY = 0x01, /*!< I2S initialized and ready for use */
mbed_official 573:ad23fe03a082 96 HAL_I2S_STATE_BUSY = 0x02, /*!< I2S internal process is ongoing */
mbed_official 573:ad23fe03a082 97 HAL_I2S_STATE_BUSY_TX = 0x03, /*!< Data Transmission process is ongoing */
mbed_official 573:ad23fe03a082 98 HAL_I2S_STATE_BUSY_RX = 0x04, /*!< Data Reception process is ongoing */
mbed_official 573:ad23fe03a082 99 HAL_I2S_STATE_BUSY_TX_RX = 0x05, /*!< Data Transmission and Reception process is ongoing */
mbed_official 573:ad23fe03a082 100 HAL_I2S_STATE_TIMEOUT = 0x06, /*!< I2S timeout state */
mbed_official 573:ad23fe03a082 101 HAL_I2S_STATE_ERROR = 0x07 /*!< I2S error state */
mbed_official 573:ad23fe03a082 102
mbed_official 573:ad23fe03a082 103 }HAL_I2S_StateTypeDef;
mbed_official 573:ad23fe03a082 104
mbed_official 573:ad23fe03a082 105 /**
mbed_official 573:ad23fe03a082 106 * @brief I2S handle Structure definition
mbed_official 573:ad23fe03a082 107 */
mbed_official 573:ad23fe03a082 108 typedef struct
mbed_official 573:ad23fe03a082 109 {
mbed_official 573:ad23fe03a082 110 SPI_TypeDef *Instance; /* I2S registers base address */
mbed_official 573:ad23fe03a082 111
mbed_official 573:ad23fe03a082 112 I2S_InitTypeDef Init; /* I2S communication parameters */
mbed_official 573:ad23fe03a082 113
mbed_official 573:ad23fe03a082 114 uint16_t *pTxBuffPtr; /* Pointer to I2S Tx transfer buffer */
mbed_official 573:ad23fe03a082 115
mbed_official 573:ad23fe03a082 116 __IO uint16_t TxXferSize; /* I2S Tx transfer size */
mbed_official 573:ad23fe03a082 117
mbed_official 573:ad23fe03a082 118 __IO uint16_t TxXferCount; /* I2S Tx transfer Counter */
mbed_official 573:ad23fe03a082 119
mbed_official 573:ad23fe03a082 120 uint16_t *pRxBuffPtr; /* Pointer to I2S Rx transfer buffer */
mbed_official 573:ad23fe03a082 121
mbed_official 573:ad23fe03a082 122 __IO uint16_t RxXferSize; /* I2S Rx transfer size */
mbed_official 573:ad23fe03a082 123
mbed_official 573:ad23fe03a082 124 __IO uint16_t RxXferCount; /* I2S Rx transfer counter
mbed_official 573:ad23fe03a082 125 (This field is initialized at the
mbed_official 573:ad23fe03a082 126 same value as transfer size at the
mbed_official 573:ad23fe03a082 127 beginning of the transfer and
mbed_official 573:ad23fe03a082 128 decremented when a sample is received.
mbed_official 573:ad23fe03a082 129 NbSamplesReceived = RxBufferSize-RxBufferCount) */
mbed_official 573:ad23fe03a082 130
mbed_official 573:ad23fe03a082 131 DMA_HandleTypeDef *hdmatx; /* I2S Tx DMA handle parameters */
mbed_official 573:ad23fe03a082 132
mbed_official 573:ad23fe03a082 133 DMA_HandleTypeDef *hdmarx; /* I2S Rx DMA handle parameters */
mbed_official 573:ad23fe03a082 134
mbed_official 573:ad23fe03a082 135 __IO HAL_LockTypeDef Lock; /* I2S locking object */
mbed_official 573:ad23fe03a082 136
mbed_official 573:ad23fe03a082 137 __IO HAL_I2S_StateTypeDef State; /* I2S communication state */
mbed_official 573:ad23fe03a082 138
mbed_official 573:ad23fe03a082 139 __IO uint32_t ErrorCode; /* I2S Error code */
mbed_official 573:ad23fe03a082 140
mbed_official 573:ad23fe03a082 141 }I2S_HandleTypeDef;
mbed_official 573:ad23fe03a082 142 /**
mbed_official 573:ad23fe03a082 143 * @}
mbed_official 573:ad23fe03a082 144 */
mbed_official 573:ad23fe03a082 145
mbed_official 573:ad23fe03a082 146 /* Exported constants --------------------------------------------------------*/
mbed_official 573:ad23fe03a082 147 /** @defgroup I2S_Exported_Constants I2S Exported Constants
mbed_official 573:ad23fe03a082 148 * @{
mbed_official 573:ad23fe03a082 149 */
mbed_official 573:ad23fe03a082 150
mbed_official 573:ad23fe03a082 151 /** @defgroup I2S_Error_Defintion I2S_Error_Defintion
mbed_official 573:ad23fe03a082 152 *@brief I2S Error Code
mbed_official 573:ad23fe03a082 153 * @{
mbed_official 573:ad23fe03a082 154 */
mbed_official 573:ad23fe03a082 155 #define HAL_I2S_ERROR_NONE ((uint32_t)0x00000000) /*!< No error */
mbed_official 573:ad23fe03a082 156 #define HAL_I2S_ERROR_TIMEOUT ((uint32_t)0x00000001) /*!< Timeout error */
mbed_official 573:ad23fe03a082 157 #define HAL_I2S_ERROR_OVR ((uint32_t)0x00000002) /*!< OVR error */
mbed_official 573:ad23fe03a082 158 #define HAL_I2S_ERROR_UDR ((uint32_t)0x00000004) /*!< UDR error */
mbed_official 573:ad23fe03a082 159 #define HAL_I2S_ERROR_DMA ((uint32_t)0x00000008) /*!< DMA transfer error */
mbed_official 573:ad23fe03a082 160 #define HAL_I2S_ERROR_UNKNOW ((uint32_t)0x00000010) /*!< Unknow Error error */
mbed_official 573:ad23fe03a082 161
mbed_official 573:ad23fe03a082 162 /**
mbed_official 573:ad23fe03a082 163 * @}
mbed_official 573:ad23fe03a082 164 */
mbed_official 573:ad23fe03a082 165 /** @defgroup I2S_Clock_Source I2S Clock Source
mbed_official 573:ad23fe03a082 166 * @{
mbed_official 573:ad23fe03a082 167 */
mbed_official 573:ad23fe03a082 168 #define I2S_CLOCK_EXTERNAL ((uint32_t)0x00000001)
mbed_official 573:ad23fe03a082 169 #define I2S_CLOCK_SYSCLK ((uint32_t)0x00000002)
mbed_official 573:ad23fe03a082 170 /**
mbed_official 573:ad23fe03a082 171 * @}
mbed_official 573:ad23fe03a082 172 */
mbed_official 573:ad23fe03a082 173
mbed_official 573:ad23fe03a082 174 /** @defgroup I2S_Mode I2S Mode
mbed_official 573:ad23fe03a082 175 * @{
mbed_official 573:ad23fe03a082 176 */
mbed_official 573:ad23fe03a082 177 #define I2S_MODE_SLAVE_TX ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 178 #define I2S_MODE_SLAVE_RX ((uint32_t)0x00000100)
mbed_official 573:ad23fe03a082 179 #define I2S_MODE_MASTER_TX ((uint32_t)0x00000200)
mbed_official 573:ad23fe03a082 180 #define I2S_MODE_MASTER_RX ((uint32_t)0x00000300)
mbed_official 573:ad23fe03a082 181 /**
mbed_official 573:ad23fe03a082 182 * @}
mbed_official 573:ad23fe03a082 183 */
mbed_official 573:ad23fe03a082 184
mbed_official 573:ad23fe03a082 185 /** @defgroup I2S_Standard I2S Standard
mbed_official 573:ad23fe03a082 186 * @{
mbed_official 573:ad23fe03a082 187 */
mbed_official 573:ad23fe03a082 188 #define I2S_STANDARD_PHILIPS ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 189 #define I2S_STANDARD_MSB ((uint32_t)0x00000010)
mbed_official 573:ad23fe03a082 190 #define I2S_STANDARD_LSB ((uint32_t)0x00000020)
mbed_official 573:ad23fe03a082 191 #define I2S_STANDARD_PCM_SHORT ((uint32_t)0x00000030)
mbed_official 573:ad23fe03a082 192 #define I2S_STANDARD_PCM_LONG ((uint32_t)0x000000B0)
mbed_official 573:ad23fe03a082 193 /**
mbed_official 573:ad23fe03a082 194 * @}
mbed_official 573:ad23fe03a082 195 */
mbed_official 573:ad23fe03a082 196
mbed_official 573:ad23fe03a082 197 /** @defgroup I2S_Data_Format I2S Data Format
mbed_official 573:ad23fe03a082 198 * @{
mbed_official 573:ad23fe03a082 199 */
mbed_official 573:ad23fe03a082 200 #define I2S_DATAFORMAT_16B ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 201 #define I2S_DATAFORMAT_16B_EXTENDED ((uint32_t)0x00000001)
mbed_official 573:ad23fe03a082 202 #define I2S_DATAFORMAT_24B ((uint32_t)0x00000003)
mbed_official 573:ad23fe03a082 203 #define I2S_DATAFORMAT_32B ((uint32_t)0x00000005)
mbed_official 573:ad23fe03a082 204 /**
mbed_official 573:ad23fe03a082 205 * @}
mbed_official 573:ad23fe03a082 206 */
mbed_official 573:ad23fe03a082 207
mbed_official 573:ad23fe03a082 208 /** @defgroup I2S_MCLK_Output I2S Mclk Output
mbed_official 573:ad23fe03a082 209 * @{
mbed_official 573:ad23fe03a082 210 */
mbed_official 573:ad23fe03a082 211 #define I2S_MCLKOUTPUT_ENABLE ((uint32_t)SPI_I2SPR_MCKOE)
mbed_official 573:ad23fe03a082 212 #define I2S_MCLKOUTPUT_DISABLE ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 213 /**
mbed_official 573:ad23fe03a082 214 * @}
mbed_official 573:ad23fe03a082 215 */
mbed_official 573:ad23fe03a082 216
mbed_official 573:ad23fe03a082 217 /** @defgroup I2S_Audio_Frequency I2S Audio Frequency
mbed_official 573:ad23fe03a082 218 * @{
mbed_official 573:ad23fe03a082 219 */
mbed_official 573:ad23fe03a082 220 #define I2S_AUDIOFREQ_192K ((uint32_t)192000)
mbed_official 573:ad23fe03a082 221 #define I2S_AUDIOFREQ_96K ((uint32_t)96000)
mbed_official 573:ad23fe03a082 222 #define I2S_AUDIOFREQ_48K ((uint32_t)48000)
mbed_official 573:ad23fe03a082 223 #define I2S_AUDIOFREQ_44K ((uint32_t)44100)
mbed_official 573:ad23fe03a082 224 #define I2S_AUDIOFREQ_32K ((uint32_t)32000)
mbed_official 573:ad23fe03a082 225 #define I2S_AUDIOFREQ_22K ((uint32_t)22050)
mbed_official 573:ad23fe03a082 226 #define I2S_AUDIOFREQ_16K ((uint32_t)16000)
mbed_official 573:ad23fe03a082 227 #define I2S_AUDIOFREQ_11K ((uint32_t)11025)
mbed_official 573:ad23fe03a082 228 #define I2S_AUDIOFREQ_8K ((uint32_t)8000)
mbed_official 573:ad23fe03a082 229 #define I2S_AUDIOFREQ_DEFAULT ((uint32_t)2)
mbed_official 573:ad23fe03a082 230 /**
mbed_official 573:ad23fe03a082 231 * @}
mbed_official 573:ad23fe03a082 232 */
mbed_official 573:ad23fe03a082 233
mbed_official 573:ad23fe03a082 234
mbed_official 573:ad23fe03a082 235 /** @defgroup I2S_Clock_Polarity I2S Clock Polarity
mbed_official 573:ad23fe03a082 236 * @{
mbed_official 573:ad23fe03a082 237 */
mbed_official 573:ad23fe03a082 238 #define I2S_CPOL_LOW ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 239 #define I2S_CPOL_HIGH ((uint32_t)SPI_I2SCFGR_CKPOL)
mbed_official 573:ad23fe03a082 240 /**
mbed_official 573:ad23fe03a082 241 * @}
mbed_official 573:ad23fe03a082 242 */
mbed_official 573:ad23fe03a082 243
mbed_official 573:ad23fe03a082 244 /** @defgroup I2S_Interrupts_Definition I2S Interrupts Definition
mbed_official 573:ad23fe03a082 245 * @{
mbed_official 573:ad23fe03a082 246 */
mbed_official 573:ad23fe03a082 247 #define I2S_IT_TXE SPI_CR2_TXEIE
mbed_official 573:ad23fe03a082 248 #define I2S_IT_RXNE SPI_CR2_RXNEIE
mbed_official 573:ad23fe03a082 249 #define I2S_IT_ERR SPI_CR2_ERRIE
mbed_official 573:ad23fe03a082 250 /**
mbed_official 573:ad23fe03a082 251 * @}
mbed_official 573:ad23fe03a082 252 */
mbed_official 573:ad23fe03a082 253
mbed_official 573:ad23fe03a082 254 /** @defgroup I2S_Flags_Definition I2S Flags Definition
mbed_official 573:ad23fe03a082 255 * @{
mbed_official 573:ad23fe03a082 256 */
mbed_official 573:ad23fe03a082 257 #define I2S_FLAG_TXE SPI_SR_TXE
mbed_official 573:ad23fe03a082 258 #define I2S_FLAG_RXNE SPI_SR_RXNE
mbed_official 573:ad23fe03a082 259
mbed_official 573:ad23fe03a082 260 #define I2S_FLAG_UDR SPI_SR_UDR
mbed_official 573:ad23fe03a082 261 #define I2S_FLAG_OVR SPI_SR_OVR
mbed_official 573:ad23fe03a082 262 #define I2S_FLAG_FRE SPI_SR_FRE
mbed_official 573:ad23fe03a082 263
mbed_official 573:ad23fe03a082 264 #define I2S_FLAG_CHSIDE SPI_SR_CHSIDE
mbed_official 573:ad23fe03a082 265 #define I2S_FLAG_BSY SPI_SR_BSY
mbed_official 573:ad23fe03a082 266 /**
mbed_official 573:ad23fe03a082 267 * @}
mbed_official 573:ad23fe03a082 268 */
mbed_official 573:ad23fe03a082 269
mbed_official 573:ad23fe03a082 270 /**
mbed_official 573:ad23fe03a082 271 * @}
mbed_official 573:ad23fe03a082 272 */
mbed_official 573:ad23fe03a082 273
mbed_official 573:ad23fe03a082 274 /* Exported macros -----------------------------------------------------------*/
mbed_official 573:ad23fe03a082 275 /** @defgroup I2S_Exported_Macros I2S Exported Macros
mbed_official 573:ad23fe03a082 276 * @{
mbed_official 573:ad23fe03a082 277 */
mbed_official 573:ad23fe03a082 278
mbed_official 573:ad23fe03a082 279 /** @brief Reset I2S handle state
mbed_official 573:ad23fe03a082 280 * @param __HANDLE__: specifies the I2S handle.
mbed_official 573:ad23fe03a082 281 * @retval None
mbed_official 573:ad23fe03a082 282 */
mbed_official 573:ad23fe03a082 283 #define __HAL_I2S_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_I2S_STATE_RESET)
mbed_official 573:ad23fe03a082 284
mbed_official 573:ad23fe03a082 285 /** @brief Enable or disable the specified SPI peripheral (in I2S mode).
mbed_official 573:ad23fe03a082 286 * @param __HANDLE__: specifies the I2S Handle.
mbed_official 573:ad23fe03a082 287 * @retval None
mbed_official 573:ad23fe03a082 288 */
mbed_official 573:ad23fe03a082 289 #define __HAL_I2S_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->I2SCFGR |= SPI_I2SCFGR_I2SE)
mbed_official 573:ad23fe03a082 290 #define __HAL_I2S_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->I2SCFGR &= ~SPI_I2SCFGR_I2SE)
mbed_official 573:ad23fe03a082 291
mbed_official 573:ad23fe03a082 292 /** @brief Enable or disable the specified I2S interrupts.
mbed_official 573:ad23fe03a082 293 * @param __HANDLE__: specifies the I2S Handle.
mbed_official 573:ad23fe03a082 294 * @param __INTERRUPT__: specifies the interrupt source to enable or disable.
mbed_official 573:ad23fe03a082 295 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 296 * @arg I2S_IT_TXE: Tx buffer empty interrupt enable
mbed_official 573:ad23fe03a082 297 * @arg I2S_IT_RXNE: RX buffer not empty interrupt enable
mbed_official 573:ad23fe03a082 298 * @arg I2S_IT_ERR: Error interrupt enable
mbed_official 573:ad23fe03a082 299 * @retval None
mbed_official 573:ad23fe03a082 300 */
mbed_official 573:ad23fe03a082 301 #define __HAL_I2S_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR2 |= (__INTERRUPT__))
mbed_official 573:ad23fe03a082 302 #define __HAL_I2S_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR2 &= ~(__INTERRUPT__))
mbed_official 573:ad23fe03a082 303
mbed_official 573:ad23fe03a082 304 /** @brief Checks if the specified I2S interrupt source is enabled or disabled.
mbed_official 573:ad23fe03a082 305 * @param __HANDLE__: specifies the I2S Handle.
mbed_official 573:ad23fe03a082 306 * This parameter can be I2S where x: 1, 2, or 3 to select the I2S peripheral.
mbed_official 573:ad23fe03a082 307 * @param __INTERRUPT__: specifies the I2S interrupt source to check.
mbed_official 573:ad23fe03a082 308 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 309 * @arg I2S_IT_TXE: Tx buffer empty interrupt enable
mbed_official 573:ad23fe03a082 310 * @arg I2S_IT_RXNE: RX buffer not empty interrupt enable
mbed_official 573:ad23fe03a082 311 * @arg I2S_IT_ERR: Error interrupt enable
mbed_official 573:ad23fe03a082 312 * @retval The new state of __IT__ (TRUE or FALSE).
mbed_official 573:ad23fe03a082 313 */
mbed_official 573:ad23fe03a082 314 #define __HAL_I2S_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->CR2 & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
mbed_official 573:ad23fe03a082 315
mbed_official 573:ad23fe03a082 316 /** @brief Checks whether the specified I2S flag is set or not.
mbed_official 573:ad23fe03a082 317 * @param __HANDLE__: specifies the I2S Handle.
mbed_official 573:ad23fe03a082 318 * @param __FLAG__: specifies the flag to check.
mbed_official 573:ad23fe03a082 319 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 320 * @arg I2S_FLAG_RXNE: Receive buffer not empty flag
mbed_official 573:ad23fe03a082 321 * @arg I2S_FLAG_TXE: Transmit buffer empty flag
mbed_official 573:ad23fe03a082 322 * @arg I2S_FLAG_UDR: Underrun flag
mbed_official 573:ad23fe03a082 323 * @arg I2S_FLAG_OVR: Overrun flag
mbed_official 573:ad23fe03a082 324 * @arg I2S_FLAG_FRE: Frame error flag
mbed_official 573:ad23fe03a082 325 * @arg I2S_FLAG_CHSIDE: Channel Side flag
mbed_official 573:ad23fe03a082 326 * @arg I2S_FLAG_BSY: Busy flag
mbed_official 573:ad23fe03a082 327 * @retval The new state of __FLAG__ (TRUE or FALSE).
mbed_official 573:ad23fe03a082 328 */
mbed_official 573:ad23fe03a082 329 #define __HAL_I2S_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
mbed_official 573:ad23fe03a082 330
mbed_official 573:ad23fe03a082 331 /** @brief Clears the I2S OVR pending flag.
mbed_official 573:ad23fe03a082 332 * @param __HANDLE__: specifies the I2S Handle.
mbed_official 573:ad23fe03a082 333 * @retval None
mbed_official 573:ad23fe03a082 334 */
mbed_official 573:ad23fe03a082 335 #define __HAL_I2S_CLEAR_OVRFLAG(__HANDLE__) \
mbed_official 573:ad23fe03a082 336 do{ \
mbed_official 573:ad23fe03a082 337 __IO uint32_t tmpreg; \
mbed_official 573:ad23fe03a082 338 tmpreg = (__HANDLE__)->Instance->DR; \
mbed_official 573:ad23fe03a082 339 tmpreg = (__HANDLE__)->Instance->SR; \
mbed_official 573:ad23fe03a082 340 UNUSED(tmpreg); \
mbed_official 573:ad23fe03a082 341 } while(0)
mbed_official 573:ad23fe03a082 342
mbed_official 573:ad23fe03a082 343 /** @brief Clears the I2S UDR pending flag.
mbed_official 573:ad23fe03a082 344 * @param __HANDLE__: specifies the I2S Handle.
mbed_official 573:ad23fe03a082 345 * @retval None
mbed_official 573:ad23fe03a082 346 */
mbed_official 573:ad23fe03a082 347 #define __HAL_I2S_CLEAR_UDRFLAG(__HANDLE__) \
mbed_official 573:ad23fe03a082 348 do{ \
mbed_official 573:ad23fe03a082 349 __IO uint32_t tmpreg; \
mbed_official 573:ad23fe03a082 350 tmpreg = (__HANDLE__)->Instance->SR; \
mbed_official 573:ad23fe03a082 351 UNUSED(tmpreg); \
mbed_official 573:ad23fe03a082 352 } while(0)
mbed_official 573:ad23fe03a082 353 /**
mbed_official 573:ad23fe03a082 354 * @}
mbed_official 573:ad23fe03a082 355 */
mbed_official 573:ad23fe03a082 356
mbed_official 573:ad23fe03a082 357 /* Exported functions --------------------------------------------------------*/
mbed_official 573:ad23fe03a082 358 /** @addtogroup I2S_Exported_Functions I2S Exported Functions
mbed_official 573:ad23fe03a082 359 * @{
mbed_official 573:ad23fe03a082 360 */
mbed_official 573:ad23fe03a082 361
mbed_official 573:ad23fe03a082 362 /** @addtogroup I2S_Exported_Functions_Group1 Initialization and de-initialization functions
mbed_official 573:ad23fe03a082 363 * @{
mbed_official 573:ad23fe03a082 364 */
mbed_official 573:ad23fe03a082 365
mbed_official 573:ad23fe03a082 366 /* Initialization and de-initialization functions *****************************/
mbed_official 573:ad23fe03a082 367 HAL_StatusTypeDef HAL_I2S_Init(I2S_HandleTypeDef *hi2s);
mbed_official 573:ad23fe03a082 368 HAL_StatusTypeDef HAL_I2S_DeInit (I2S_HandleTypeDef *hi2s);
mbed_official 573:ad23fe03a082 369 void HAL_I2S_MspInit(I2S_HandleTypeDef *hi2s);
mbed_official 573:ad23fe03a082 370 void HAL_I2S_MspDeInit(I2S_HandleTypeDef *hi2s);
mbed_official 573:ad23fe03a082 371 /**
mbed_official 573:ad23fe03a082 372 * @}
mbed_official 573:ad23fe03a082 373 */
mbed_official 573:ad23fe03a082 374
mbed_official 573:ad23fe03a082 375 /** @addtogroup I2S_Exported_Functions_Group2 Input and Output operation functions
mbed_official 573:ad23fe03a082 376 * @{
mbed_official 573:ad23fe03a082 377 */
mbed_official 573:ad23fe03a082 378 /* I/O operation functions ***************************************************/
mbed_official 573:ad23fe03a082 379 /* Blocking mode: Polling */
mbed_official 573:ad23fe03a082 380 HAL_StatusTypeDef HAL_I2S_Transmit(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_t Timeout);
mbed_official 573:ad23fe03a082 381 HAL_StatusTypeDef HAL_I2S_Receive(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_t Timeout);
mbed_official 573:ad23fe03a082 382
mbed_official 573:ad23fe03a082 383 /* Non-Blocking mode: Interrupt */
mbed_official 573:ad23fe03a082 384 HAL_StatusTypeDef HAL_I2S_Transmit_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
mbed_official 573:ad23fe03a082 385 HAL_StatusTypeDef HAL_I2S_Receive_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
mbed_official 573:ad23fe03a082 386 void HAL_I2S_IRQHandler(I2S_HandleTypeDef *hi2s);
mbed_official 573:ad23fe03a082 387
mbed_official 573:ad23fe03a082 388 /* Non-Blocking mode: DMA */
mbed_official 573:ad23fe03a082 389 HAL_StatusTypeDef HAL_I2S_Transmit_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
mbed_official 573:ad23fe03a082 390 HAL_StatusTypeDef HAL_I2S_Receive_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
mbed_official 573:ad23fe03a082 391
mbed_official 573:ad23fe03a082 392 HAL_StatusTypeDef HAL_I2S_DMAPause(I2S_HandleTypeDef *hi2s);
mbed_official 573:ad23fe03a082 393 HAL_StatusTypeDef HAL_I2S_DMAResume(I2S_HandleTypeDef *hi2s);
mbed_official 573:ad23fe03a082 394 HAL_StatusTypeDef HAL_I2S_DMAStop(I2S_HandleTypeDef *hi2s);
mbed_official 573:ad23fe03a082 395
mbed_official 573:ad23fe03a082 396 /* Callbacks used in non blocking modes (Interrupt and DMA) *******************/
mbed_official 573:ad23fe03a082 397 void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s);
mbed_official 573:ad23fe03a082 398 void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s);
mbed_official 573:ad23fe03a082 399 void HAL_I2S_RxHalfCpltCallback(I2S_HandleTypeDef *hi2s);
mbed_official 573:ad23fe03a082 400 void HAL_I2S_RxCpltCallback(I2S_HandleTypeDef *hi2s);
mbed_official 573:ad23fe03a082 401 void HAL_I2S_ErrorCallback(I2S_HandleTypeDef *hi2s);
mbed_official 573:ad23fe03a082 402 /**
mbed_official 573:ad23fe03a082 403 * @}
mbed_official 573:ad23fe03a082 404 */
mbed_official 573:ad23fe03a082 405
mbed_official 573:ad23fe03a082 406 /** @addtogroup I2S_Exported_Functions_Group3 Peripheral State and Errors functions
mbed_official 573:ad23fe03a082 407 * @{
mbed_official 573:ad23fe03a082 408 */
mbed_official 573:ad23fe03a082 409 /* Peripheral Control and State functions ************************************/
mbed_official 573:ad23fe03a082 410 HAL_I2S_StateTypeDef HAL_I2S_GetState(I2S_HandleTypeDef *hi2s);
mbed_official 573:ad23fe03a082 411 uint32_t HAL_I2S_GetError(I2S_HandleTypeDef *hi2s);
mbed_official 573:ad23fe03a082 412 /**
mbed_official 573:ad23fe03a082 413 * @}
mbed_official 573:ad23fe03a082 414 */
mbed_official 573:ad23fe03a082 415
mbed_official 573:ad23fe03a082 416 /**
mbed_official 573:ad23fe03a082 417 * @}
mbed_official 573:ad23fe03a082 418 */
mbed_official 573:ad23fe03a082 419
mbed_official 573:ad23fe03a082 420
mbed_official 573:ad23fe03a082 421 /* Private types -------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 422 /* Private variables ---------------------------------------------------------*/
mbed_official 573:ad23fe03a082 423 /* Private constants ---------------------------------------------------------*/
mbed_official 573:ad23fe03a082 424 /** @defgroup I2S_Private_Constants I2S Private Constants
mbed_official 573:ad23fe03a082 425 * @{
mbed_official 573:ad23fe03a082 426 */
mbed_official 573:ad23fe03a082 427
mbed_official 573:ad23fe03a082 428 /**
mbed_official 573:ad23fe03a082 429 * @}
mbed_official 573:ad23fe03a082 430 */
mbed_official 573:ad23fe03a082 431
mbed_official 573:ad23fe03a082 432 /* Private macros ------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 433 /** @defgroup I2S_Private_Macros I2S Private Macros
mbed_official 573:ad23fe03a082 434 * @{
mbed_official 573:ad23fe03a082 435 */
mbed_official 573:ad23fe03a082 436 #define IS_I2S_CLOCKSOURCE(CLOCK) (((CLOCK) == I2S_CLOCK_EXTERNAL) || \
mbed_official 573:ad23fe03a082 437 ((CLOCK) == I2S_CLOCK_SYSCLK))
mbed_official 573:ad23fe03a082 438
mbed_official 573:ad23fe03a082 439 #define IS_I2S_MODE(MODE) (((MODE) == I2S_MODE_SLAVE_TX) || \
mbed_official 573:ad23fe03a082 440 ((MODE) == I2S_MODE_SLAVE_RX) || \
mbed_official 573:ad23fe03a082 441 ((MODE) == I2S_MODE_MASTER_TX)|| \
mbed_official 573:ad23fe03a082 442 ((MODE) == I2S_MODE_MASTER_RX))
mbed_official 573:ad23fe03a082 443
mbed_official 573:ad23fe03a082 444 #define IS_I2S_STANDARD(STANDARD) (((STANDARD) == I2S_STANDARD_PHILIPS) || \
mbed_official 573:ad23fe03a082 445 ((STANDARD) == I2S_STANDARD_MSB) || \
mbed_official 573:ad23fe03a082 446 ((STANDARD) == I2S_STANDARD_LSB) || \
mbed_official 573:ad23fe03a082 447 ((STANDARD) == I2S_STANDARD_PCM_SHORT) || \
mbed_official 573:ad23fe03a082 448 ((STANDARD) == I2S_STANDARD_PCM_LONG))
mbed_official 573:ad23fe03a082 449
mbed_official 573:ad23fe03a082 450 #define IS_I2S_DATA_FORMAT(FORMAT) (((FORMAT) == I2S_DATAFORMAT_16B) || \
mbed_official 573:ad23fe03a082 451 ((FORMAT) == I2S_DATAFORMAT_16B_EXTENDED) || \
mbed_official 573:ad23fe03a082 452 ((FORMAT) == I2S_DATAFORMAT_24B) || \
mbed_official 573:ad23fe03a082 453 ((FORMAT) == I2S_DATAFORMAT_32B))
mbed_official 573:ad23fe03a082 454
mbed_official 573:ad23fe03a082 455 #define IS_I2S_MCLK_OUTPUT(OUTPUT) (((OUTPUT) == I2S_MCLKOUTPUT_ENABLE) || \
mbed_official 573:ad23fe03a082 456 ((OUTPUT) == I2S_MCLKOUTPUT_DISABLE))
mbed_official 573:ad23fe03a082 457
mbed_official 573:ad23fe03a082 458 #define IS_I2S_AUDIO_FREQ(FREQ) ((((FREQ) >= I2S_AUDIOFREQ_8K) && \
mbed_official 573:ad23fe03a082 459 ((FREQ) <= I2S_AUDIOFREQ_192K)) || \
mbed_official 573:ad23fe03a082 460 ((FREQ) == I2S_AUDIOFREQ_DEFAULT))
mbed_official 573:ad23fe03a082 461
mbed_official 573:ad23fe03a082 462 #define IS_I2S_CPOL(CPOL) (((CPOL) == I2S_CPOL_LOW) || \
mbed_official 573:ad23fe03a082 463 ((CPOL) == I2S_CPOL_HIGH))
mbed_official 573:ad23fe03a082 464 /**
mbed_official 573:ad23fe03a082 465 * @}
mbed_official 573:ad23fe03a082 466 */
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 /**
mbed_official 573:ad23fe03a082 473 * @}
mbed_official 573:ad23fe03a082 474 */
mbed_official 573:ad23fe03a082 475
mbed_official 573:ad23fe03a082 476 #ifdef __cplusplus
mbed_official 573:ad23fe03a082 477 }
mbed_official 573:ad23fe03a082 478 #endif
mbed_official 573:ad23fe03a082 479
mbed_official 573:ad23fe03a082 480
mbed_official 573:ad23fe03a082 481 #endif /* __STM32F7xx_HAL_I2S_H */
mbed_official 573:ad23fe03a082 482
mbed_official 573:ad23fe03a082 483 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/