mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

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

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

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

Import librarymbed

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

Committer:
mbed_official
Date:
Wed Jul 01 09:45:11 2015 +0100
Revision:
579:53297373a894
Parent:
394:83f921546702
Synchronized with git revision d5b4d2ab9c47edb4dc5776e7177b0c2263459081

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

Initial version of drivers for SAMR21

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 354:e67efb2aab0e 1 /**
mbed_official 354:e67efb2aab0e 2 ******************************************************************************
mbed_official 354:e67efb2aab0e 3 * @file stm32l1xx_hal_i2s.h
mbed_official 354:e67efb2aab0e 4 * @author MCD Application Team
mbed_official 354:e67efb2aab0e 5 * @version V1.0.0
mbed_official 354:e67efb2aab0e 6 * @date 5-September-2014
mbed_official 354:e67efb2aab0e 7 * @brief Header file of I2S HAL module.
mbed_official 354:e67efb2aab0e 8 ******************************************************************************
mbed_official 354:e67efb2aab0e 9 * @attention
mbed_official 354:e67efb2aab0e 10 *
mbed_official 354:e67efb2aab0e 11 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
mbed_official 354:e67efb2aab0e 12 *
mbed_official 354:e67efb2aab0e 13 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 354:e67efb2aab0e 14 * are permitted provided that the following conditions are met:
mbed_official 354:e67efb2aab0e 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 354:e67efb2aab0e 16 * this list of conditions and the following disclaimer.
mbed_official 354:e67efb2aab0e 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 354:e67efb2aab0e 18 * this list of conditions and the following disclaimer in the documentation
mbed_official 354:e67efb2aab0e 19 * and/or other materials provided with the distribution.
mbed_official 354:e67efb2aab0e 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 354:e67efb2aab0e 21 * may be used to endorse or promote products derived from this software
mbed_official 354:e67efb2aab0e 22 * without specific prior written permission.
mbed_official 354:e67efb2aab0e 23 *
mbed_official 354:e67efb2aab0e 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 354:e67efb2aab0e 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 354:e67efb2aab0e 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 354:e67efb2aab0e 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 354:e67efb2aab0e 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 354:e67efb2aab0e 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 354:e67efb2aab0e 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 354:e67efb2aab0e 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 354:e67efb2aab0e 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 354:e67efb2aab0e 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 354:e67efb2aab0e 34 *
mbed_official 354:e67efb2aab0e 35 ******************************************************************************
mbed_official 354:e67efb2aab0e 36 */
mbed_official 354:e67efb2aab0e 37
mbed_official 354:e67efb2aab0e 38 /* Define to prevent recursive inclusion -------------------------------------*/
mbed_official 354:e67efb2aab0e 39 #ifndef __STM32L1xx_HAL_I2S_H
mbed_official 354:e67efb2aab0e 40 #define __STM32L1xx_HAL_I2S_H
mbed_official 354:e67efb2aab0e 41
mbed_official 354:e67efb2aab0e 42 #ifdef __cplusplus
mbed_official 354:e67efb2aab0e 43 extern "C" {
mbed_official 354:e67efb2aab0e 44 #endif
mbed_official 354:e67efb2aab0e 45
mbed_official 354:e67efb2aab0e 46 #if defined(STM32L100xC) || \
mbed_official 354:e67efb2aab0e 47 defined(STM32L151xC) || defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L151xE) || \
mbed_official 354:e67efb2aab0e 48 defined(STM32L152xC) || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L152xE) || defined(STM32L151xE) || \
mbed_official 354:e67efb2aab0e 49 defined(STM32L162xC) || defined(STM32L162xCA) || defined(STM32L162xD) || defined(STM32L162xE)
mbed_official 354:e67efb2aab0e 50
mbed_official 354:e67efb2aab0e 51 /* Includes ------------------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 52 #include "stm32l1xx_hal_def.h"
mbed_official 354:e67efb2aab0e 53
mbed_official 354:e67efb2aab0e 54 /** @addtogroup STM32L1xx_HAL_Driver
mbed_official 354:e67efb2aab0e 55 * @{
mbed_official 354:e67efb2aab0e 56 */
mbed_official 354:e67efb2aab0e 57
mbed_official 354:e67efb2aab0e 58 /** @addtogroup I2S
mbed_official 354:e67efb2aab0e 59 * @{
mbed_official 354:e67efb2aab0e 60 */
mbed_official 354:e67efb2aab0e 61
mbed_official 354:e67efb2aab0e 62 /* Exported types ------------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 63 /** @defgroup I2S_Exported_Types I2S Exported Types
mbed_official 354:e67efb2aab0e 64 * @{
mbed_official 354:e67efb2aab0e 65 */
mbed_official 354:e67efb2aab0e 66
mbed_official 354:e67efb2aab0e 67 /**
mbed_official 354:e67efb2aab0e 68 * @brief I2S Init structure definition
mbed_official 354:e67efb2aab0e 69 */
mbed_official 354:e67efb2aab0e 70 typedef struct
mbed_official 354:e67efb2aab0e 71 {
mbed_official 354:e67efb2aab0e 72 uint32_t Mode; /*!< Specifies the I2S operating mode.
mbed_official 354:e67efb2aab0e 73 This parameter can be a value of @ref I2S_Mode */
mbed_official 354:e67efb2aab0e 74
mbed_official 354:e67efb2aab0e 75 uint32_t Standard; /*!< Specifies the standard used for the I2S communication.
mbed_official 354:e67efb2aab0e 76 This parameter can be a value of @ref I2S_Standard */
mbed_official 354:e67efb2aab0e 77
mbed_official 354:e67efb2aab0e 78 uint32_t DataFormat; /*!< Specifies the data format for the I2S communication.
mbed_official 354:e67efb2aab0e 79 This parameter can be a value of @ref I2S_Data_Format */
mbed_official 354:e67efb2aab0e 80
mbed_official 354:e67efb2aab0e 81 uint32_t MCLKOutput; /*!< Specifies whether the I2S MCLK output is enabled or not.
mbed_official 354:e67efb2aab0e 82 This parameter can be a value of @ref I2S_MCLK_Output */
mbed_official 354:e67efb2aab0e 83
mbed_official 354:e67efb2aab0e 84 uint32_t AudioFreq; /*!< Specifies the frequency selected for the I2S communication.
mbed_official 354:e67efb2aab0e 85 This parameter can be a value of @ref I2S_Audio_Frequency */
mbed_official 354:e67efb2aab0e 86
mbed_official 354:e67efb2aab0e 87 uint32_t CPOL; /*!< Specifies the idle state of the I2S clock.
mbed_official 354:e67efb2aab0e 88 This parameter can be a value of @ref I2S_Clock_Polarity */
mbed_official 354:e67efb2aab0e 89
mbed_official 354:e67efb2aab0e 90 }I2S_InitTypeDef;
mbed_official 354:e67efb2aab0e 91
mbed_official 354:e67efb2aab0e 92 /**
mbed_official 354:e67efb2aab0e 93 * @brief HAL State structures definition
mbed_official 354:e67efb2aab0e 94 */
mbed_official 354:e67efb2aab0e 95 typedef enum
mbed_official 354:e67efb2aab0e 96 {
mbed_official 354:e67efb2aab0e 97 HAL_I2S_STATE_RESET = 0x00, /*!< I2S not yet initialized or disabled */
mbed_official 354:e67efb2aab0e 98 HAL_I2S_STATE_READY = 0x01, /*!< I2S initialized and ready for use */
mbed_official 354:e67efb2aab0e 99 HAL_I2S_STATE_BUSY = 0x02, /*!< I2S internal process is ongoing */
mbed_official 354:e67efb2aab0e 100 HAL_I2S_STATE_BUSY_TX = 0x12, /*!< Data Transmission process is ongoing */
mbed_official 354:e67efb2aab0e 101 HAL_I2S_STATE_BUSY_RX = 0x22, /*!< Data Reception process is ongoing */
mbed_official 354:e67efb2aab0e 102 HAL_I2S_STATE_TIMEOUT = 0x03, /*!< I2S pause state: used in case of DMA */
mbed_official 354:e67efb2aab0e 103 HAL_I2S_STATE_ERROR = 0x04 /*!< I2S error state */
mbed_official 354:e67efb2aab0e 104 }HAL_I2S_StateTypeDef;
mbed_official 354:e67efb2aab0e 105
mbed_official 354:e67efb2aab0e 106 /**
mbed_official 354:e67efb2aab0e 107 * @brief HAL I2S Error Code structure definition
mbed_official 354:e67efb2aab0e 108 */
mbed_official 354:e67efb2aab0e 109 typedef enum
mbed_official 354:e67efb2aab0e 110 {
mbed_official 354:e67efb2aab0e 111 HAL_I2S_ERROR_NONE = 0x00, /*!< No error */
mbed_official 354:e67efb2aab0e 112 HAL_I2S_ERROR_UDR = 0x01, /*!< I2S Underrun error */
mbed_official 354:e67efb2aab0e 113 HAL_I2S_ERROR_OVR = 0x02, /*!< I2S Overrun error */
mbed_official 354:e67efb2aab0e 114 HAL_I2S_ERROR_FRE = 0x04, /*!< I2S Frame format error */
mbed_official 354:e67efb2aab0e 115 HAL_I2S_ERROR_DMA = 0x08 /*!< DMA transfer error */
mbed_official 354:e67efb2aab0e 116 }HAL_I2S_ErrorTypeDef;
mbed_official 354:e67efb2aab0e 117
mbed_official 354:e67efb2aab0e 118 /**
mbed_official 354:e67efb2aab0e 119 * @brief I2S handle Structure definition
mbed_official 354:e67efb2aab0e 120 */
mbed_official 354:e67efb2aab0e 121 typedef struct
mbed_official 354:e67efb2aab0e 122 {
mbed_official 354:e67efb2aab0e 123 SPI_TypeDef *Instance; /* I2S registers base address */
mbed_official 354:e67efb2aab0e 124
mbed_official 354:e67efb2aab0e 125 I2S_InitTypeDef Init; /* I2S communication parameters */
mbed_official 354:e67efb2aab0e 126
mbed_official 354:e67efb2aab0e 127 uint16_t *pTxBuffPtr; /* Pointer to I2S Tx transfer buffer */
mbed_official 354:e67efb2aab0e 128
mbed_official 354:e67efb2aab0e 129 __IO uint16_t TxXferSize; /* I2S Tx transfer size */
mbed_official 354:e67efb2aab0e 130
mbed_official 354:e67efb2aab0e 131 __IO uint16_t TxXferCount; /* I2S Tx transfer Counter */
mbed_official 354:e67efb2aab0e 132
mbed_official 354:e67efb2aab0e 133 uint16_t *pRxBuffPtr; /* Pointer to I2S Rx transfer buffer */
mbed_official 354:e67efb2aab0e 134
mbed_official 354:e67efb2aab0e 135 __IO uint16_t RxXferSize; /* I2S Rx transfer size */
mbed_official 354:e67efb2aab0e 136
mbed_official 354:e67efb2aab0e 137 __IO uint16_t RxXferCount; /* I2S Rx transfer counter
mbed_official 354:e67efb2aab0e 138 (This field is initialized at the
mbed_official 354:e67efb2aab0e 139 same value as transfer size at the
mbed_official 354:e67efb2aab0e 140 beginning of the transfer and
mbed_official 354:e67efb2aab0e 141 decremented when a sample is received.
mbed_official 354:e67efb2aab0e 142 NbSamplesReceived = RxBufferSize-RxBufferCount) */
mbed_official 354:e67efb2aab0e 143
mbed_official 354:e67efb2aab0e 144 DMA_HandleTypeDef *hdmatx; /* I2S Tx DMA handle parameters */
mbed_official 354:e67efb2aab0e 145
mbed_official 354:e67efb2aab0e 146 DMA_HandleTypeDef *hdmarx; /* I2S Rx DMA handle parameters */
mbed_official 354:e67efb2aab0e 147
mbed_official 354:e67efb2aab0e 148 __IO HAL_LockTypeDef Lock; /* I2S locking object */
mbed_official 354:e67efb2aab0e 149
mbed_official 354:e67efb2aab0e 150 __IO HAL_I2S_StateTypeDef State; /* I2S communication state */
mbed_official 354:e67efb2aab0e 151
mbed_official 354:e67efb2aab0e 152 __IO HAL_I2S_ErrorTypeDef ErrorCode; /* I2S Error code */
mbed_official 354:e67efb2aab0e 153
mbed_official 354:e67efb2aab0e 154 }I2S_HandleTypeDef;
mbed_official 354:e67efb2aab0e 155 /**
mbed_official 354:e67efb2aab0e 156 * @}
mbed_official 354:e67efb2aab0e 157 */
mbed_official 354:e67efb2aab0e 158
mbed_official 354:e67efb2aab0e 159 /* Exported constants --------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 160 /** @defgroup I2S_Exported_Constants I2S Exported Constants
mbed_official 354:e67efb2aab0e 161 * @{
mbed_official 354:e67efb2aab0e 162 */
mbed_official 354:e67efb2aab0e 163
mbed_official 354:e67efb2aab0e 164 /** @defgroup I2S_Mode I2S Mode
mbed_official 354:e67efb2aab0e 165 * @{
mbed_official 354:e67efb2aab0e 166 */
mbed_official 354:e67efb2aab0e 167 #define I2S_MODE_SLAVE_TX ((uint32_t)0x00000000)
mbed_official 354:e67efb2aab0e 168 #define I2S_MODE_SLAVE_RX ((uint32_t)0x00000100)
mbed_official 354:e67efb2aab0e 169 #define I2S_MODE_MASTER_TX ((uint32_t)0x00000200)
mbed_official 354:e67efb2aab0e 170 #define I2S_MODE_MASTER_RX ((uint32_t)0x00000300)
mbed_official 354:e67efb2aab0e 171
mbed_official 354:e67efb2aab0e 172 #define IS_I2S_MODE(MODE) (((MODE) == I2S_MODE_SLAVE_TX) || \
mbed_official 354:e67efb2aab0e 173 ((MODE) == I2S_MODE_SLAVE_RX) || \
mbed_official 354:e67efb2aab0e 174 ((MODE) == I2S_MODE_MASTER_TX) || \
mbed_official 354:e67efb2aab0e 175 ((MODE) == I2S_MODE_MASTER_RX))
mbed_official 354:e67efb2aab0e 176 /**
mbed_official 354:e67efb2aab0e 177 * @}
mbed_official 354:e67efb2aab0e 178 */
mbed_official 354:e67efb2aab0e 179
mbed_official 354:e67efb2aab0e 180 /** @defgroup I2S_Standard I2S Standard
mbed_official 354:e67efb2aab0e 181 * @{
mbed_official 354:e67efb2aab0e 182 */
mbed_official 354:e67efb2aab0e 183 #define I2S_STANDARD_PHILIPS ((uint32_t)0x00000000)
mbed_official 354:e67efb2aab0e 184 #define I2S_STANDARD_MSB ((uint32_t) SPI_I2SCFGR_I2SSTD_0)
mbed_official 354:e67efb2aab0e 185 #define I2S_STANDARD_LSB ((uint32_t) SPI_I2SCFGR_I2SSTD_1)
mbed_official 354:e67efb2aab0e 186 #define I2S_STANDARD_PCM_SHORT ((uint32_t)(SPI_I2SCFGR_I2SSTD_0 |\
mbed_official 354:e67efb2aab0e 187 SPI_I2SCFGR_I2SSTD_1))
mbed_official 354:e67efb2aab0e 188 #define I2S_STANDARD_PCM_LONG ((uint32_t)(SPI_I2SCFGR_I2SSTD_0 |\
mbed_official 354:e67efb2aab0e 189 SPI_I2SCFGR_I2SSTD_1 |\
mbed_official 354:e67efb2aab0e 190 SPI_I2SCFGR_PCMSYNC))
mbed_official 354:e67efb2aab0e 191
mbed_official 354:e67efb2aab0e 192 #define IS_I2S_STANDARD(STANDARD) (((STANDARD) == I2S_STANDARD_PHILIPS) || \
mbed_official 354:e67efb2aab0e 193 ((STANDARD) == I2S_STANDARD_MSB) || \
mbed_official 354:e67efb2aab0e 194 ((STANDARD) == I2S_STANDARD_LSB) || \
mbed_official 354:e67efb2aab0e 195 ((STANDARD) == I2S_STANDARD_PCM_SHORT) || \
mbed_official 354:e67efb2aab0e 196 ((STANDARD) == I2S_STANDARD_PCM_LONG))
mbed_official 354:e67efb2aab0e 197 /** @defgroup I2S_Legacy I2S Legacy
mbed_official 354:e67efb2aab0e 198 * @{
mbed_official 354:e67efb2aab0e 199 */
mbed_official 354:e67efb2aab0e 200 #define I2S_STANDARD_PHILLIPS I2S_STANDARD_PHILIPS
mbed_official 354:e67efb2aab0e 201 /**
mbed_official 354:e67efb2aab0e 202 * @}
mbed_official 354:e67efb2aab0e 203 */
mbed_official 354:e67efb2aab0e 204
mbed_official 354:e67efb2aab0e 205 /**
mbed_official 354:e67efb2aab0e 206 * @}
mbed_official 354:e67efb2aab0e 207 */
mbed_official 354:e67efb2aab0e 208
mbed_official 354:e67efb2aab0e 209 /** @defgroup I2S_Data_Format I2S Data Format
mbed_official 354:e67efb2aab0e 210 * @{
mbed_official 354:e67efb2aab0e 211 */
mbed_official 354:e67efb2aab0e 212 #define I2S_DATAFORMAT_16B ((uint32_t)0x00000000)
mbed_official 354:e67efb2aab0e 213 #define I2S_DATAFORMAT_16B_EXTENDED ((uint32_t) SPI_I2SCFGR_CHLEN)
mbed_official 354:e67efb2aab0e 214 #define I2S_DATAFORMAT_24B ((uint32_t)(SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_0))
mbed_official 354:e67efb2aab0e 215 #define I2S_DATAFORMAT_32B ((uint32_t)(SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_1))
mbed_official 354:e67efb2aab0e 216
mbed_official 354:e67efb2aab0e 217 #define IS_I2S_DATA_FORMAT(FORMAT) (((FORMAT) == I2S_DATAFORMAT_16B) || \
mbed_official 354:e67efb2aab0e 218 ((FORMAT) == I2S_DATAFORMAT_16B_EXTENDED) || \
mbed_official 354:e67efb2aab0e 219 ((FORMAT) == I2S_DATAFORMAT_24B) || \
mbed_official 354:e67efb2aab0e 220 ((FORMAT) == I2S_DATAFORMAT_32B))
mbed_official 354:e67efb2aab0e 221 /**
mbed_official 354:e67efb2aab0e 222 * @}
mbed_official 354:e67efb2aab0e 223 */
mbed_official 354:e67efb2aab0e 224
mbed_official 354:e67efb2aab0e 225 /** @defgroup I2S_MCLK_Output I2S MCLK Output
mbed_official 354:e67efb2aab0e 226 * @{
mbed_official 354:e67efb2aab0e 227 */
mbed_official 354:e67efb2aab0e 228 #define I2S_MCLKOUTPUT_ENABLE ((uint32_t)SPI_I2SPR_MCKOE)
mbed_official 354:e67efb2aab0e 229 #define I2S_MCLKOUTPUT_DISABLE ((uint32_t)0x00000000)
mbed_official 354:e67efb2aab0e 230
mbed_official 354:e67efb2aab0e 231 #define IS_I2S_MCLK_OUTPUT(OUTPUT) (((OUTPUT) == I2S_MCLKOUTPUT_ENABLE) || \
mbed_official 354:e67efb2aab0e 232 ((OUTPUT) == I2S_MCLKOUTPUT_DISABLE))
mbed_official 354:e67efb2aab0e 233 /**
mbed_official 354:e67efb2aab0e 234 * @}
mbed_official 354:e67efb2aab0e 235 */
mbed_official 354:e67efb2aab0e 236
mbed_official 354:e67efb2aab0e 237 /** @defgroup I2S_Audio_Frequency I2S Audio Frequency
mbed_official 354:e67efb2aab0e 238 * @{
mbed_official 354:e67efb2aab0e 239 */
mbed_official 354:e67efb2aab0e 240 #define I2S_AUDIOFREQ_192K ((uint32_t)192000)
mbed_official 354:e67efb2aab0e 241 #define I2S_AUDIOFREQ_96K ((uint32_t)96000)
mbed_official 354:e67efb2aab0e 242 #define I2S_AUDIOFREQ_48K ((uint32_t)48000)
mbed_official 354:e67efb2aab0e 243 #define I2S_AUDIOFREQ_44K ((uint32_t)44100)
mbed_official 354:e67efb2aab0e 244 #define I2S_AUDIOFREQ_32K ((uint32_t)32000)
mbed_official 354:e67efb2aab0e 245 #define I2S_AUDIOFREQ_22K ((uint32_t)22050)
mbed_official 354:e67efb2aab0e 246 #define I2S_AUDIOFREQ_16K ((uint32_t)16000)
mbed_official 354:e67efb2aab0e 247 #define I2S_AUDIOFREQ_11K ((uint32_t)11025)
mbed_official 354:e67efb2aab0e 248 #define I2S_AUDIOFREQ_8K ((uint32_t)8000)
mbed_official 354:e67efb2aab0e 249 #define I2S_AUDIOFREQ_DEFAULT ((uint32_t)2)
mbed_official 354:e67efb2aab0e 250
mbed_official 354:e67efb2aab0e 251 #define IS_I2S_AUDIO_FREQ(FREQ) ((((FREQ) >= I2S_AUDIOFREQ_8K) && \
mbed_official 354:e67efb2aab0e 252 ((FREQ) <= I2S_AUDIOFREQ_192K)) || \
mbed_official 354:e67efb2aab0e 253 ((FREQ) == I2S_AUDIOFREQ_DEFAULT))
mbed_official 354:e67efb2aab0e 254 /**
mbed_official 354:e67efb2aab0e 255 * @}
mbed_official 354:e67efb2aab0e 256 */
mbed_official 354:e67efb2aab0e 257
mbed_official 354:e67efb2aab0e 258 /** @defgroup I2S_Clock_Polarity I2S Clock Polarity
mbed_official 354:e67efb2aab0e 259 * @{
mbed_official 354:e67efb2aab0e 260 */
mbed_official 354:e67efb2aab0e 261 #define I2S_CPOL_LOW ((uint32_t)0x00000000)
mbed_official 354:e67efb2aab0e 262 #define I2S_CPOL_HIGH ((uint32_t)SPI_I2SCFGR_CKPOL)
mbed_official 354:e67efb2aab0e 263
mbed_official 354:e67efb2aab0e 264 #define IS_I2S_CPOL(CPOL) (((CPOL) == I2S_CPOL_LOW) || \
mbed_official 354:e67efb2aab0e 265 ((CPOL) == I2S_CPOL_HIGH))
mbed_official 354:e67efb2aab0e 266 /**
mbed_official 354:e67efb2aab0e 267 * @}
mbed_official 354:e67efb2aab0e 268 */
mbed_official 354:e67efb2aab0e 269
mbed_official 354:e67efb2aab0e 270 /** @defgroup I2S_Interrupt_configuration_definition I2S Interrupt configuration definition
mbed_official 354:e67efb2aab0e 271 * @{
mbed_official 354:e67efb2aab0e 272 */
mbed_official 354:e67efb2aab0e 273 #define I2S_IT_TXE SPI_CR2_TXEIE
mbed_official 354:e67efb2aab0e 274 #define I2S_IT_RXNE SPI_CR2_RXNEIE
mbed_official 354:e67efb2aab0e 275 #define I2S_IT_ERR SPI_CR2_ERRIE
mbed_official 354:e67efb2aab0e 276 /**
mbed_official 354:e67efb2aab0e 277 * @}
mbed_official 354:e67efb2aab0e 278 */
mbed_official 354:e67efb2aab0e 279
mbed_official 354:e67efb2aab0e 280 /** @defgroup I2S_Flag_definition I2S Flag definition
mbed_official 354:e67efb2aab0e 281 * @{
mbed_official 354:e67efb2aab0e 282 */
mbed_official 354:e67efb2aab0e 283 #define I2S_FLAG_TXE SPI_SR_TXE
mbed_official 354:e67efb2aab0e 284 #define I2S_FLAG_RXNE SPI_SR_RXNE
mbed_official 354:e67efb2aab0e 285
mbed_official 354:e67efb2aab0e 286 #define I2S_FLAG_UDR SPI_SR_UDR
mbed_official 354:e67efb2aab0e 287 #define I2S_FLAG_OVR SPI_SR_OVR
mbed_official 354:e67efb2aab0e 288 #define I2S_FLAG_FRE SPI_SR_FRE
mbed_official 354:e67efb2aab0e 289
mbed_official 354:e67efb2aab0e 290 #define I2S_FLAG_CHSIDE SPI_SR_CHSIDE
mbed_official 354:e67efb2aab0e 291 #define I2S_FLAG_BSY SPI_SR_BSY
mbed_official 354:e67efb2aab0e 292 /**
mbed_official 354:e67efb2aab0e 293 * @}
mbed_official 354:e67efb2aab0e 294 */
mbed_official 354:e67efb2aab0e 295
mbed_official 354:e67efb2aab0e 296 /**
mbed_official 354:e67efb2aab0e 297 * @}
mbed_official 354:e67efb2aab0e 298 */
mbed_official 354:e67efb2aab0e 299
mbed_official 354:e67efb2aab0e 300 /* Exported macro ------------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 301 /** @defgroup I2S_Exported_macros I2S Exported Macros
mbed_official 354:e67efb2aab0e 302 * @{
mbed_official 354:e67efb2aab0e 303 */
mbed_official 354:e67efb2aab0e 304
mbed_official 354:e67efb2aab0e 305 /** @brief Reset I2S handle state
mbed_official 354:e67efb2aab0e 306 * @param __HANDLE__: specifies the I2S Handle.
mbed_official 354:e67efb2aab0e 307 * @retval None
mbed_official 354:e67efb2aab0e 308 */
mbed_official 354:e67efb2aab0e 309 #define __HAL_I2S_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_I2S_STATE_RESET)
mbed_official 354:e67efb2aab0e 310
mbed_official 354:e67efb2aab0e 311 /** @brief Enable or disable the specified SPI peripheral (in I2S mode).
mbed_official 354:e67efb2aab0e 312 * @param __HANDLE__: specifies the I2S Handle.
mbed_official 354:e67efb2aab0e 313 * @retval None
mbed_official 354:e67efb2aab0e 314 */
mbed_official 354:e67efb2aab0e 315 #define __HAL_I2S_ENABLE(__HANDLE__) (SET_BIT((__HANDLE__)->Instance->I2SCFGR, SPI_I2SCFGR_I2SE))
mbed_official 354:e67efb2aab0e 316 #define __HAL_I2S_DISABLE(__HANDLE__) (CLEAR_BIT((__HANDLE__)->Instance->I2SCFGR, SPI_I2SCFGR_I2SE))
mbed_official 354:e67efb2aab0e 317
mbed_official 354:e67efb2aab0e 318 /** @brief Enable or disable the specified I2S interrupts.
mbed_official 354:e67efb2aab0e 319 * @param __HANDLE__: specifies the I2S Handle.
mbed_official 354:e67efb2aab0e 320 * @param __INTERRUPT__: specifies the interrupt source to enable or disable.
mbed_official 354:e67efb2aab0e 321 * This parameter can be one of the following values:
mbed_official 354:e67efb2aab0e 322 * @arg I2S_IT_TXE: Tx buffer empty interrupt enable
mbed_official 354:e67efb2aab0e 323 * @arg I2S_IT_RXNE: RX buffer not empty interrupt enable
mbed_official 354:e67efb2aab0e 324 * @arg I2S_IT_ERR: Error interrupt enable
mbed_official 354:e67efb2aab0e 325 * @retval None
mbed_official 354:e67efb2aab0e 326 */
mbed_official 354:e67efb2aab0e 327 #define __HAL_I2S_ENABLE_IT(__HANDLE__, __INTERRUPT__) (SET_BIT((__HANDLE__)->Instance->CR2,(__INTERRUPT__)))
mbed_official 354:e67efb2aab0e 328 #define __HAL_I2S_DISABLE_IT(__HANDLE__, __INTERRUPT__) (CLEAR_BIT((__HANDLE__)->Instance->CR2,(__INTERRUPT__)))
mbed_official 354:e67efb2aab0e 329
mbed_official 354:e67efb2aab0e 330 /** @brief Checks if the specified I2S interrupt source is enabled or disabled.
mbed_official 354:e67efb2aab0e 331 * @param __HANDLE__: specifies the I2S Handle.
mbed_official 354:e67efb2aab0e 332 * This parameter can be I2S where x: 1, 2, or 3 to select the I2S peripheral.
mbed_official 354:e67efb2aab0e 333 * @param __INTERRUPT__: specifies the I2S interrupt source to check.
mbed_official 354:e67efb2aab0e 334 * This parameter can be one of the following values:
mbed_official 354:e67efb2aab0e 335 * @arg I2S_IT_TXE: Tx buffer empty interrupt enable
mbed_official 354:e67efb2aab0e 336 * @arg I2S_IT_RXNE: RX buffer not empty interrupt enable
mbed_official 354:e67efb2aab0e 337 * @arg I2S_IT_ERR: Error interrupt enable
mbed_official 354:e67efb2aab0e 338 * @retval The new state of __IT__ (TRUE or FALSE).
mbed_official 354:e67efb2aab0e 339 */
mbed_official 354:e67efb2aab0e 340 #define __HAL_I2S_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->CR2 & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
mbed_official 354:e67efb2aab0e 341
mbed_official 354:e67efb2aab0e 342 /** @brief Checks whether the specified I2S flag is set or not.
mbed_official 354:e67efb2aab0e 343 * @param __HANDLE__: specifies the I2S Handle.
mbed_official 354:e67efb2aab0e 344 * @param __FLAG__: specifies the flag to check.
mbed_official 354:e67efb2aab0e 345 * This parameter can be one of the following values:
mbed_official 354:e67efb2aab0e 346 * @arg I2S_FLAG_RXNE: Receive buffer not empty flag
mbed_official 354:e67efb2aab0e 347 * @arg I2S_FLAG_TXE: Transmit buffer empty flag
mbed_official 354:e67efb2aab0e 348 * @arg I2S_FLAG_UDR: Underrun flag
mbed_official 354:e67efb2aab0e 349 * @arg I2S_FLAG_OVR: Overrun flag
mbed_official 354:e67efb2aab0e 350 * @arg I2S_FLAG_FRE: Frame error flag
mbed_official 354:e67efb2aab0e 351 * @arg I2S_FLAG_CHSIDE: Channel Side flag
mbed_official 354:e67efb2aab0e 352 * @arg I2S_FLAG_BSY: Busy flag
mbed_official 354:e67efb2aab0e 353 * @retval The new state of __FLAG__ (TRUE or FALSE).
mbed_official 354:e67efb2aab0e 354 */
mbed_official 354:e67efb2aab0e 355 #define __HAL_I2S_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
mbed_official 354:e67efb2aab0e 356
mbed_official 354:e67efb2aab0e 357 /** @brief Clears the I2S OVR pending flag.
mbed_official 354:e67efb2aab0e 358 * @param __HANDLE__: specifies the I2S Handle.
mbed_official 354:e67efb2aab0e 359 * @retval None
mbed_official 354:e67efb2aab0e 360 */
mbed_official 354:e67efb2aab0e 361 #define __HAL_I2S_CLEAR_OVRFLAG(__HANDLE__) do{__IO uint32_t tmpreg = (__HANDLE__)->Instance->DR;\
mbed_official 354:e67efb2aab0e 362 tmpreg = (__HANDLE__)->Instance->SR;\
mbed_official 354:e67efb2aab0e 363 }while(0)
mbed_official 354:e67efb2aab0e 364 /** @brief Clears the I2S UDR pending flag.
mbed_official 354:e67efb2aab0e 365 * @param __HANDLE__: specifies the I2S Handle.
mbed_official 354:e67efb2aab0e 366 * @retval None
mbed_official 354:e67efb2aab0e 367 */
mbed_official 354:e67efb2aab0e 368 #define __HAL_I2S_CLEAR_UDRFLAG(__HANDLE__)((__HANDLE__)->Instance->SR)
mbed_official 354:e67efb2aab0e 369 /**
mbed_official 354:e67efb2aab0e 370 * @}
mbed_official 354:e67efb2aab0e 371 */
mbed_official 354:e67efb2aab0e 372
mbed_official 354:e67efb2aab0e 373 /* Exported functions --------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 374 /** @addtogroup I2S_Exported_Functions
mbed_official 354:e67efb2aab0e 375 * @{
mbed_official 354:e67efb2aab0e 376 */
mbed_official 354:e67efb2aab0e 377
mbed_official 354:e67efb2aab0e 378 /** @addtogroup I2S_Exported_Functions_Group1
mbed_official 354:e67efb2aab0e 379 * @{
mbed_official 354:e67efb2aab0e 380 */
mbed_official 354:e67efb2aab0e 381 /* Initialization/de-initialization functions ********************************/
mbed_official 354:e67efb2aab0e 382 HAL_StatusTypeDef HAL_I2S_Init(I2S_HandleTypeDef *hi2s);
mbed_official 354:e67efb2aab0e 383 HAL_StatusTypeDef HAL_I2S_DeInit (I2S_HandleTypeDef *hi2s);
mbed_official 354:e67efb2aab0e 384 void HAL_I2S_MspInit(I2S_HandleTypeDef *hi2s);
mbed_official 354:e67efb2aab0e 385 void HAL_I2S_MspDeInit(I2S_HandleTypeDef *hi2s);
mbed_official 354:e67efb2aab0e 386 /**
mbed_official 354:e67efb2aab0e 387 * @}
mbed_official 354:e67efb2aab0e 388 */
mbed_official 354:e67efb2aab0e 389
mbed_official 354:e67efb2aab0e 390 /** @addtogroup I2S_Exported_Functions_Group2
mbed_official 354:e67efb2aab0e 391 * @{
mbed_official 354:e67efb2aab0e 392 */
mbed_official 354:e67efb2aab0e 393 /* I/O operation functions ***************************************************/
mbed_official 354:e67efb2aab0e 394 /* Blocking mode: Polling */
mbed_official 354:e67efb2aab0e 395 HAL_StatusTypeDef HAL_I2S_Transmit(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_t Timeout);
mbed_official 354:e67efb2aab0e 396 HAL_StatusTypeDef HAL_I2S_Receive(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_t Timeout);
mbed_official 354:e67efb2aab0e 397
mbed_official 354:e67efb2aab0e 398 /* Non-Blocking mode: Interrupt */
mbed_official 354:e67efb2aab0e 399 HAL_StatusTypeDef HAL_I2S_Transmit_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
mbed_official 354:e67efb2aab0e 400 HAL_StatusTypeDef HAL_I2S_Receive_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
mbed_official 354:e67efb2aab0e 401 void HAL_I2S_IRQHandler(I2S_HandleTypeDef *hi2s);
mbed_official 354:e67efb2aab0e 402
mbed_official 354:e67efb2aab0e 403 /* Non-Blocking mode: DMA */
mbed_official 354:e67efb2aab0e 404 HAL_StatusTypeDef HAL_I2S_Transmit_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
mbed_official 354:e67efb2aab0e 405 HAL_StatusTypeDef HAL_I2S_Receive_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size);
mbed_official 354:e67efb2aab0e 406
mbed_official 354:e67efb2aab0e 407 HAL_StatusTypeDef HAL_I2S_DMAPause(I2S_HandleTypeDef *hi2s);
mbed_official 354:e67efb2aab0e 408 HAL_StatusTypeDef HAL_I2S_DMAResume(I2S_HandleTypeDef *hi2s);
mbed_official 354:e67efb2aab0e 409 HAL_StatusTypeDef HAL_I2S_DMAStop(I2S_HandleTypeDef *hi2s);
mbed_official 354:e67efb2aab0e 410
mbed_official 354:e67efb2aab0e 411 /* Callbacks used in non blocking modes (Interrupt and DMA) *******************/
mbed_official 354:e67efb2aab0e 412 void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s);
mbed_official 354:e67efb2aab0e 413 void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s);
mbed_official 354:e67efb2aab0e 414 void HAL_I2S_RxHalfCpltCallback(I2S_HandleTypeDef *hi2s);
mbed_official 354:e67efb2aab0e 415 void HAL_I2S_RxCpltCallback(I2S_HandleTypeDef *hi2s);
mbed_official 354:e67efb2aab0e 416 void HAL_I2S_ErrorCallback(I2S_HandleTypeDef *hi2s);
mbed_official 354:e67efb2aab0e 417 /**
mbed_official 354:e67efb2aab0e 418 * @}
mbed_official 354:e67efb2aab0e 419 */
mbed_official 354:e67efb2aab0e 420
mbed_official 354:e67efb2aab0e 421 /** @addtogroup I2S_Exported_Functions_Group3
mbed_official 354:e67efb2aab0e 422 * @{
mbed_official 354:e67efb2aab0e 423 */
mbed_official 354:e67efb2aab0e 424 /* Peripheral Control and State functions ************************************/
mbed_official 354:e67efb2aab0e 425 HAL_I2S_StateTypeDef HAL_I2S_GetState(I2S_HandleTypeDef *hi2s);
mbed_official 354:e67efb2aab0e 426 HAL_I2S_ErrorTypeDef HAL_I2S_GetError(I2S_HandleTypeDef *hi2s);
mbed_official 354:e67efb2aab0e 427 /**
mbed_official 354:e67efb2aab0e 428 * @}
mbed_official 354:e67efb2aab0e 429 */
mbed_official 354:e67efb2aab0e 430
mbed_official 354:e67efb2aab0e 431 /**
mbed_official 354:e67efb2aab0e 432 * @}
mbed_official 354:e67efb2aab0e 433 */
mbed_official 354:e67efb2aab0e 434
mbed_official 354:e67efb2aab0e 435
mbed_official 354:e67efb2aab0e 436 /**
mbed_official 354:e67efb2aab0e 437 * @}
mbed_official 354:e67efb2aab0e 438 */
mbed_official 354:e67efb2aab0e 439
mbed_official 354:e67efb2aab0e 440 /**
mbed_official 354:e67efb2aab0e 441 * @}
mbed_official 354:e67efb2aab0e 442 */
mbed_official 354:e67efb2aab0e 443 #endif /* STM32L100xC ||
mbed_official 354:e67efb2aab0e 444 STM32L151xC || STM32L151xCA || STM32L151xD || STM32L151xE ||\\
mbed_official 354:e67efb2aab0e 445 STM32L152xC || STM32L152xCA || STM32L152xD || STM32L152xE || STM32L151xE ||\\
mbed_official 354:e67efb2aab0e 446 STM32L162xC || STM32L162xCA || STM32L162xD || STM32L162xE */
mbed_official 354:e67efb2aab0e 447
mbed_official 354:e67efb2aab0e 448 #ifdef __cplusplus
mbed_official 354:e67efb2aab0e 449 }
mbed_official 354:e67efb2aab0e 450 #endif
mbed_official 354:e67efb2aab0e 451
mbed_official 354:e67efb2aab0e 452 #endif /* __STM32L1xx_HAL_I2S_H */
mbed_official 354:e67efb2aab0e 453
mbed_official 354:e67efb2aab0e 454 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/