1225f4ba4SMatthias Ringwald /** 2225f4ba4SMatthias Ringwald ****************************************************************************** 3225f4ba4SMatthias Ringwald * @file stm32f4_discovery_audio.h 4225f4ba4SMatthias Ringwald * @author MCD Application Team 5225f4ba4SMatthias Ringwald * @version V2.1.2 6225f4ba4SMatthias Ringwald * @date 27-January-2017 7225f4ba4SMatthias Ringwald * @brief This file contains the common defines and functions prototypes for 8225f4ba4SMatthias Ringwald * stm32f4_discovery_audio.c driver. 9225f4ba4SMatthias Ringwald ****************************************************************************** 10225f4ba4SMatthias Ringwald * @attention 11225f4ba4SMatthias Ringwald * 12225f4ba4SMatthias Ringwald * <h2><center>© COPYRIGHT(c) 2017 STMicroelectronics</center></h2> 13225f4ba4SMatthias Ringwald * 14225f4ba4SMatthias Ringwald * Redistribution and use in source and binary forms, with or without modification, 15225f4ba4SMatthias Ringwald * are permitted provided that the following conditions are met: 16225f4ba4SMatthias Ringwald * 1. Redistributions of source code must retain the above copyright notice, 17225f4ba4SMatthias Ringwald * this list of conditions and the following disclaimer. 18225f4ba4SMatthias Ringwald * 2. Redistributions in binary form must reproduce the above copyright notice, 19225f4ba4SMatthias Ringwald * this list of conditions and the following disclaimer in the documentation 20225f4ba4SMatthias Ringwald * and/or other materials provided with the distribution. 21225f4ba4SMatthias Ringwald * 3. Neither the name of STMicroelectronics nor the names of its contributors 22225f4ba4SMatthias Ringwald * may be used to endorse or promote products derived from this software 23225f4ba4SMatthias Ringwald * without specific prior written permission. 24225f4ba4SMatthias Ringwald * 25225f4ba4SMatthias Ringwald * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 26225f4ba4SMatthias Ringwald * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 27225f4ba4SMatthias Ringwald * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 28225f4ba4SMatthias Ringwald * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 29225f4ba4SMatthias Ringwald * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 30225f4ba4SMatthias Ringwald * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 31225f4ba4SMatthias Ringwald * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 32225f4ba4SMatthias Ringwald * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 33225f4ba4SMatthias Ringwald * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 34225f4ba4SMatthias Ringwald * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 35225f4ba4SMatthias Ringwald * 36225f4ba4SMatthias Ringwald ****************************************************************************** 37225f4ba4SMatthias Ringwald */ 38225f4ba4SMatthias Ringwald 39225f4ba4SMatthias Ringwald /* Define to prevent recursive inclusion -------------------------------------*/ 40225f4ba4SMatthias Ringwald #ifndef __STM32F4_DISCOVERY_AUDIO_H 41225f4ba4SMatthias Ringwald #define __STM32F4_DISCOVERY_AUDIO_H 42225f4ba4SMatthias Ringwald 43225f4ba4SMatthias Ringwald #ifdef __cplusplus 44225f4ba4SMatthias Ringwald extern "C" { 45225f4ba4SMatthias Ringwald #endif 46225f4ba4SMatthias Ringwald 47225f4ba4SMatthias Ringwald /* Includes ------------------------------------------------------------------*/ 48225f4ba4SMatthias Ringwald /* Include audio component Driver */ 49225f4ba4SMatthias Ringwald #include "cs43l22.h" 50225f4ba4SMatthias Ringwald 51225f4ba4SMatthias Ringwald #include "stm32f4_discovery.h" 52225f4ba4SMatthias Ringwald //#include "../../../Middlewares/ST/STM32_Audio/Addons/PDM/pdm_filter.h" 53225f4ba4SMatthias Ringwald 54225f4ba4SMatthias Ringwald /** @addtogroup BSP 55225f4ba4SMatthias Ringwald * @{ 56225f4ba4SMatthias Ringwald */ 57225f4ba4SMatthias Ringwald 58225f4ba4SMatthias Ringwald /** @addtogroup STM32F4_DISCOVERY 59225f4ba4SMatthias Ringwald * @{ 60225f4ba4SMatthias Ringwald */ 61225f4ba4SMatthias Ringwald 62225f4ba4SMatthias Ringwald /** @addtogroup STM32F4_DISCOVERY_AUDIO 63225f4ba4SMatthias Ringwald * @{ 64225f4ba4SMatthias Ringwald */ 65225f4ba4SMatthias Ringwald 66225f4ba4SMatthias Ringwald 67225f4ba4SMatthias Ringwald /** @defgroup STM32F4_DISCOVERY_AUDIO_Exported_Types STM32F4 DISCOVERY AUDIO Exported Types 68225f4ba4SMatthias Ringwald * @{ 69225f4ba4SMatthias Ringwald */ 70225f4ba4SMatthias Ringwald /** 71225f4ba4SMatthias Ringwald * @} 72225f4ba4SMatthias Ringwald */ 73225f4ba4SMatthias Ringwald 74225f4ba4SMatthias Ringwald /** @defgroup STM32F4_DISCOVERY_AUDIO_OUT_Exported_Constants STM32F4 DISCOVERY AUDIO OUT Exported Constants 75225f4ba4SMatthias Ringwald * @{ 76225f4ba4SMatthias Ringwald */ 77225f4ba4SMatthias Ringwald 78225f4ba4SMatthias Ringwald /*------------------------------------------------------------------------------ 79225f4ba4SMatthias Ringwald AUDIO OUT CONFIGURATION 80225f4ba4SMatthias Ringwald ------------------------------------------------------------------------------*/ 81225f4ba4SMatthias Ringwald 82225f4ba4SMatthias Ringwald /* I2S peripheral configuration defines */ 83225f4ba4SMatthias Ringwald #define I2S3 SPI3 84225f4ba4SMatthias Ringwald #define I2S3_CLK_ENABLE() __HAL_RCC_SPI3_CLK_ENABLE() 85225f4ba4SMatthias Ringwald #define I2S3_CLK_DISABLE() __HAL_RCC_SPI3_CLK_DISABLE() 86225f4ba4SMatthias Ringwald #define I2S3_SCK_SD_WS_AF GPIO_AF6_SPI3 87225f4ba4SMatthias Ringwald #define I2S3_SCK_SD_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() 88225f4ba4SMatthias Ringwald #define I2S3_MCK_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() 89225f4ba4SMatthias Ringwald #define I2S3_WS_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() 90225f4ba4SMatthias Ringwald #define I2S3_WS_PIN GPIO_PIN_4 91225f4ba4SMatthias Ringwald #define I2S3_SCK_PIN GPIO_PIN_10 92225f4ba4SMatthias Ringwald #define I2S3_SD_PIN GPIO_PIN_12 93225f4ba4SMatthias Ringwald #define I2S3_MCK_PIN GPIO_PIN_7 94225f4ba4SMatthias Ringwald #define I2S3_SCK_SD_GPIO_PORT GPIOC 95225f4ba4SMatthias Ringwald #define I2S3_WS_GPIO_PORT GPIOA 96225f4ba4SMatthias Ringwald #define I2S3_MCK_GPIO_PORT GPIOC 97225f4ba4SMatthias Ringwald 98225f4ba4SMatthias Ringwald /* I2S DMA Stream definitions */ 99225f4ba4SMatthias Ringwald #define I2S3_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE() 100225f4ba4SMatthias Ringwald #define I2S3_DMAx_CLK_DISABLE() __HAL_RCC_DMA1_CLK_DISABLE() 101225f4ba4SMatthias Ringwald #define I2S3_DMAx_STREAM DMA1_Stream7 102225f4ba4SMatthias Ringwald #define I2S3_DMAx_CHANNEL DMA_CHANNEL_0 103225f4ba4SMatthias Ringwald #define I2S3_DMAx_IRQ DMA1_Stream7_IRQn 104225f4ba4SMatthias Ringwald #define I2S3_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD 105225f4ba4SMatthias Ringwald #define I2S3_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD 106225f4ba4SMatthias Ringwald #define DMA_MAX_SZE 0xFFFF 107225f4ba4SMatthias Ringwald 108225f4ba4SMatthias Ringwald #define I2S3_IRQHandler DMA1_Stream7_IRQHandler 109225f4ba4SMatthias Ringwald 110225f4ba4SMatthias Ringwald /* Select the interrupt preemption priority and subpriority for the DMA interrupt */ 111225f4ba4SMatthias Ringwald #define AUDIO_OUT_IRQ_PREPRIO 0x0E /* Select the preemption priority level(0 is the highest) */ 112225f4ba4SMatthias Ringwald 113225f4ba4SMatthias Ringwald /*------------------------------------------------------------------------------ 114225f4ba4SMatthias Ringwald AUDIO IN CONFIGURATION 115225f4ba4SMatthias Ringwald ------------------------------------------------------------------------------*/ 116225f4ba4SMatthias Ringwald /* SPI Configuration defines */ 117225f4ba4SMatthias Ringwald #define I2S2 SPI2 118225f4ba4SMatthias Ringwald #define I2S2_CLK_ENABLE() __HAL_RCC_SPI2_CLK_ENABLE() 119225f4ba4SMatthias Ringwald #define I2S2_CLK_DISABLE() __HAL_RCC_SPI2_CLK_DISABLE() 120225f4ba4SMatthias Ringwald #define I2S2_SCK_PIN GPIO_PIN_10 121225f4ba4SMatthias Ringwald #define I2S2_SCK_GPIO_PORT GPIOB 122225f4ba4SMatthias Ringwald #define I2S2_SCK_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() 123225f4ba4SMatthias Ringwald #define I2S2_SCK_AF GPIO_AF5_SPI2 124225f4ba4SMatthias Ringwald 125225f4ba4SMatthias Ringwald #define I2S2_MOSI_PIN GPIO_PIN_3 126225f4ba4SMatthias Ringwald #define I2S2_MOSI_GPIO_PORT GPIOC 127225f4ba4SMatthias Ringwald #define I2S2_MOSI_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() 128225f4ba4SMatthias Ringwald #define I2S2_MOSI_AF GPIO_AF5_SPI2 129225f4ba4SMatthias Ringwald 130225f4ba4SMatthias Ringwald /* I2S DMA Stream Rx definitions */ 131225f4ba4SMatthias Ringwald #define I2S2_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE() 132225f4ba4SMatthias Ringwald #define I2S2_DMAx_CLK_DISABLE() __HAL_RCC_DMA1_CLK_DISABLE() 133225f4ba4SMatthias Ringwald #define I2S2_DMAx_STREAM DMA1_Stream3 134225f4ba4SMatthias Ringwald #define I2S2_DMAx_CHANNEL DMA_CHANNEL_0 135225f4ba4SMatthias Ringwald #define I2S2_DMAx_IRQ DMA1_Stream3_IRQn 136225f4ba4SMatthias Ringwald #define I2S2_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD 137225f4ba4SMatthias Ringwald #define I2S2_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD 138225f4ba4SMatthias Ringwald 139225f4ba4SMatthias Ringwald #define I2S2_IRQHandler DMA1_Stream3_IRQHandler 140225f4ba4SMatthias Ringwald 141225f4ba4SMatthias Ringwald /* Select the interrupt preemption priority and subpriority for the IT/DMA interrupt */ 142225f4ba4SMatthias Ringwald #define AUDIO_IN_IRQ_PREPRIO 0x0F /* Select the preemption priority level(0 is the highest) */ 143225f4ba4SMatthias Ringwald 144225f4ba4SMatthias Ringwald /*------------------------------------------------------------------------------ 145225f4ba4SMatthias Ringwald CONFIGURATION: Audio Driver Configuration parameters 146225f4ba4SMatthias Ringwald ------------------------------------------------------------------------------*/ 147225f4ba4SMatthias Ringwald 148225f4ba4SMatthias Ringwald #define AUDIODATA_SIZE 2 /* 16-bits audio data size */ 149225f4ba4SMatthias Ringwald 150225f4ba4SMatthias Ringwald /* Audio status definition */ 151225f4ba4SMatthias Ringwald #define AUDIO_OK 0 152225f4ba4SMatthias Ringwald #define AUDIO_ERROR 1 153225f4ba4SMatthias Ringwald #define AUDIO_TIMEOUT 2 154225f4ba4SMatthias Ringwald 155225f4ba4SMatthias Ringwald /* AudioFreq * DataSize (2 bytes) * NumChannels (Stereo: 2) */ 156225f4ba4SMatthias Ringwald #define DEFAULT_AUDIO_IN_FREQ I2S_AUDIOFREQ_16K 157225f4ba4SMatthias Ringwald #define DEFAULT_AUDIO_IN_BIT_RESOLUTION 16 158225f4ba4SMatthias Ringwald #define DEFAULT_AUDIO_IN_CHANNEL_NBR 1 /* Mono = 1, Stereo = 2 */ 159225f4ba4SMatthias Ringwald #define DEFAULT_AUDIO_IN_VOLUME 64 160225f4ba4SMatthias Ringwald 161225f4ba4SMatthias Ringwald /* PDM buffer input size */ 162225f4ba4SMatthias Ringwald #define INTERNAL_BUFF_SIZE 128*DEFAULT_AUDIO_IN_FREQ/16000*DEFAULT_AUDIO_IN_CHANNEL_NBR 163225f4ba4SMatthias Ringwald /* PCM buffer output size */ 164225f4ba4SMatthias Ringwald #define PCM_OUT_SIZE DEFAULT_AUDIO_IN_FREQ/1000 165225f4ba4SMatthias Ringwald #define CHANNEL_DEMUX_MASK 0x55 166225f4ba4SMatthias Ringwald 167225f4ba4SMatthias Ringwald /*------------------------------------------------------------------------------ 168225f4ba4SMatthias Ringwald OPTIONAL Configuration defines parameters 169225f4ba4SMatthias Ringwald ------------------------------------------------------------------------------*/ 170225f4ba4SMatthias Ringwald 171225f4ba4SMatthias Ringwald /** 172225f4ba4SMatthias Ringwald * @} 173225f4ba4SMatthias Ringwald */ 174225f4ba4SMatthias Ringwald 175225f4ba4SMatthias Ringwald /** @defgroup STM32F4_DISCOVERY_AUDIO_Exported_Variables STM32F4 DISCOVERY AUDIO Exported Variables 176225f4ba4SMatthias Ringwald * @{ 177225f4ba4SMatthias Ringwald */ 178225f4ba4SMatthias Ringwald extern __IO uint16_t AudioInVolume; 179225f4ba4SMatthias Ringwald /** 180225f4ba4SMatthias Ringwald * @} 181225f4ba4SMatthias Ringwald */ 182225f4ba4SMatthias Ringwald 183225f4ba4SMatthias Ringwald /** @defgroup STM32F4_DISCOVERY_AUDIO_Exported_Macros STM32F4 DISCOVERY AUDIO Exported Macros 184225f4ba4SMatthias Ringwald * @{ 185225f4ba4SMatthias Ringwald */ 186225f4ba4SMatthias Ringwald #define DMA_MAX(_X_) (((_X_) <= DMA_MAX_SZE)? (_X_):DMA_MAX_SZE) 187225f4ba4SMatthias Ringwald /** 188225f4ba4SMatthias Ringwald * @} 189225f4ba4SMatthias Ringwald */ 190225f4ba4SMatthias Ringwald 191225f4ba4SMatthias Ringwald /** @defgroup STM32F4_DISCOVERY_AUDIO_OUT_Exported_Functions STM32F4 DISCOVERY AUDIO OUT Exported Functions 192225f4ba4SMatthias Ringwald * @{ 193225f4ba4SMatthias Ringwald */ 194225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq); 195225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_OUT_Play(uint16_t* pBuffer, uint32_t Size); 196225f4ba4SMatthias Ringwald void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size); 197225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_OUT_Pause(void); 198225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_OUT_Resume(void); 199225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option); 200225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume); 201225f4ba4SMatthias Ringwald void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq); 202*e0a94143SDirk Helbig uint32_t BSP_AUDIO_OUT_GetFrequency(); 203225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd); 204225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output); 205225f4ba4SMatthias Ringwald 206225f4ba4SMatthias Ringwald /* User Callbacks: user has to implement these functions in his code if they are needed. */ 207225f4ba4SMatthias Ringwald /* This function is called when the requested data has been completely transferred. */ 208225f4ba4SMatthias Ringwald void BSP_AUDIO_OUT_TransferComplete_CallBack(void); 209225f4ba4SMatthias Ringwald 210225f4ba4SMatthias Ringwald /* This function is called when half of the requested buffer has been transferred. */ 211225f4ba4SMatthias Ringwald void BSP_AUDIO_OUT_HalfTransfer_CallBack(void); 212225f4ba4SMatthias Ringwald 213225f4ba4SMatthias Ringwald /* This function is called when an Interrupt due to transfer error on or peripheral 214225f4ba4SMatthias Ringwald error occurs. */ 215225f4ba4SMatthias Ringwald void BSP_AUDIO_OUT_Error_CallBack(void); 216225f4ba4SMatthias Ringwald 217225f4ba4SMatthias Ringwald /* These function can be modified in case the current settings (e.g. DMA stream) 218225f4ba4SMatthias Ringwald need to be changed for specific application needs */ 219225f4ba4SMatthias Ringwald void BSP_AUDIO_OUT_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params); 220225f4ba4SMatthias Ringwald void BSP_AUDIO_OUT_MspInit(I2S_HandleTypeDef *hi2s, void *Params); 221225f4ba4SMatthias Ringwald void BSP_AUDIO_OUT_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params); 222225f4ba4SMatthias Ringwald 223225f4ba4SMatthias Ringwald /** 224225f4ba4SMatthias Ringwald * @} 225225f4ba4SMatthias Ringwald */ 226225f4ba4SMatthias Ringwald 227225f4ba4SMatthias Ringwald /** @defgroup STM32F4_DISCOVERY_AUDIO_IN_Exported_Functions STM32F4 DISCOVERY AUDIO IN Exported Functions 228225f4ba4SMatthias Ringwald * @{ 229225f4ba4SMatthias Ringwald */ 230225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr); 231225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_IN_Record(uint16_t *pData, uint32_t Size); 232225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_IN_Stop(void); 233225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_IN_Pause(void); 234225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_IN_Resume(void); 235225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_IN_SetVolume(uint8_t Volume); 236225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_IN_PDMToPCM(uint16_t *PDMBuf, uint16_t *PCMBuf); 237225f4ba4SMatthias Ringwald /* User Callbacks: user has to implement these functions in his code if they are needed. */ 238225f4ba4SMatthias Ringwald /* This function should be implemented by the user application. 239225f4ba4SMatthias Ringwald It is called into this driver when the current buffer is filled to prepare the next 240225f4ba4SMatthias Ringwald buffer pointer and its size. */ 241225f4ba4SMatthias Ringwald void BSP_AUDIO_IN_TransferComplete_CallBack(void); 242225f4ba4SMatthias Ringwald void BSP_AUDIO_IN_HalfTransfer_CallBack(void); 243225f4ba4SMatthias Ringwald 244225f4ba4SMatthias Ringwald /* This function is called when an Interrupt due to transfer error on or peripheral 245225f4ba4SMatthias Ringwald error occurs. */ 246225f4ba4SMatthias Ringwald void BSP_AUDIO_IN_Error_Callback(void); 247225f4ba4SMatthias Ringwald 248225f4ba4SMatthias Ringwald /* These function can be modified in case the current settings (e.g. DMA stream) 249225f4ba4SMatthias Ringwald need to be changed for specific application needs */ 250225f4ba4SMatthias Ringwald void BSP_AUDIO_IN_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params); 251225f4ba4SMatthias Ringwald void BSP_AUDIO_IN_MspInit(I2S_HandleTypeDef *hi2s, void *Params); 252225f4ba4SMatthias Ringwald void BSP_AUDIO_IN_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params); 253225f4ba4SMatthias Ringwald 254225f4ba4SMatthias Ringwald /** 255225f4ba4SMatthias Ringwald * @} 256225f4ba4SMatthias Ringwald */ 257225f4ba4SMatthias Ringwald 258225f4ba4SMatthias Ringwald /** 259225f4ba4SMatthias Ringwald * @} 260225f4ba4SMatthias Ringwald */ 261225f4ba4SMatthias Ringwald 262225f4ba4SMatthias Ringwald /** 263225f4ba4SMatthias Ringwald * @} 264225f4ba4SMatthias Ringwald */ 265225f4ba4SMatthias Ringwald 266225f4ba4SMatthias Ringwald /** 267225f4ba4SMatthias Ringwald * @} 268225f4ba4SMatthias Ringwald */ 269225f4ba4SMatthias Ringwald 270225f4ba4SMatthias Ringwald #ifdef __cplusplus 271225f4ba4SMatthias Ringwald } 272225f4ba4SMatthias Ringwald #endif 273225f4ba4SMatthias Ringwald 274225f4ba4SMatthias Ringwald #endif /* __STM32F4_DISCOVERY_AUDIO_H */ 275225f4ba4SMatthias Ringwald 276225f4ba4SMatthias Ringwald /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 277