Go to the documentation of this file.
38 #ifndef __STM32F769I_DISCOVERY_AUDIO_H
39 #define __STM32F769I_DISCOVERY_AUDIO_H
47 #include "../Components/wm8994/wm8994.h"
77 #define BSP_AUDIO_FREQUENCY_96K SAI_AUDIO_FREQUENCY_96K
78 #define BSP_AUDIO_FREQUENCY_48K SAI_AUDIO_FREQUENCY_48K
79 #define BSP_AUDIO_FREQUENCY_44K SAI_AUDIO_FREQUENCY_44K
80 #define BSP_AUDIO_FREQUENCY_32K SAI_AUDIO_FREQUENCY_32K
81 #define BSP_AUDIO_FREQUENCY_22K SAI_AUDIO_FREQUENCY_22K
82 #define BSP_AUDIO_FREQUENCY_16K SAI_AUDIO_FREQUENCY_16K
83 #define BSP_AUDIO_FREQUENCY_11K SAI_AUDIO_FREQUENCY_11K
84 #define BSP_AUDIO_FREQUENCY_8K SAI_AUDIO_FREQUENCY_8K
99 #define CODEC_AUDIOFRAME_SLOT_0123 SAI_SLOTACTIVE_0 | SAI_SLOTACTIVE_1 | SAI_SLOTACTIVE_2 | SAI_SLOTACTIVE_3
102 #define CODEC_AUDIOFRAME_SLOT_02 SAI_SLOTACTIVE_0 | SAI_SLOTACTIVE_2
104 #define CODEC_AUDIOFRAME_SLOT_13 SAI_SLOTACTIVE_1 | SAI_SLOTACTIVE_3
108 #define AUDIO_OUT_SAIx SAI1_Block_A
109 #define AUDIO_OUT_SAIx_CLK_ENABLE() __HAL_RCC_SAI1_CLK_ENABLE()
110 #define AUDIO_OUT_SAIx_CLK_DISABLE() __HAL_RCC_SAI1_CLK_DISABLE()
111 #define AUDIO_OUT_SAIx_AF GPIO_AF6_SAI1
113 #define AUDIO_OUT_SAIx_MCLK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE()
114 #define AUDIO_OUT_SAIx_MCLK_GPIO_PORT GPIOG
115 #define AUDIO_OUT_SAIx_MCLK_PIN GPIO_PIN_7
116 #define AUDIO_OUT_SAIx_SD_FS_CLK_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE()
117 #define AUDIO_OUT_SAIx_SD_FS_SCK_GPIO_PORT GPIOE
118 #define AUDIO_OUT_SAIx_FS_PIN GPIO_PIN_4
119 #define AUDIO_OUT_SAIx_SCK_PIN GPIO_PIN_5
120 #define AUDIO_OUT_SAIx_SD_PIN GPIO_PIN_6
123 #define AUDIO_OUT_SAIx_DMAx_CLK_ENABLE() __HAL_RCC_DMA2_CLK_ENABLE()
124 #define AUDIO_OUT_SAIx_DMAx_STREAM DMA2_Stream1
125 #define AUDIO_OUT_SAIx_DMAx_CHANNEL DMA_CHANNEL_0
126 #define AUDIO_OUT_SAIx_DMAx_IRQ DMA2_Stream1_IRQn
127 #define AUDIO_OUT_SAIx_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD
128 #define AUDIO_OUT_SAIx_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD
129 #define DMA_MAX_SZE 0xFFFF
131 #define AUDIO_OUT_SAIx_DMAx_IRQHandler DMA2_Stream1_IRQHandler
134 #define AUDIO_OUT_IRQ_PREPRIO ((uint32_t)0x0E)
140 #define AUDIO_IN_SAIx SAI1_Block_B
141 #define AUDIO_IN_SAIx_CLK_ENABLE() __HAL_RCC_SAI1_CLK_ENABLE()
142 #define AUDIO_IN_SAIx_CLK_DISABLE() __HAL_RCC_SAI1_CLK_DISABLE()
143 #define AUDIO_IN_SAIx_AF GPIO_AF6_SAI1
144 #define AUDIO_IN_SAIx_SD_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE()
145 #define AUDIO_IN_SAIx_SD_GPIO_PORT GPIOE
146 #define AUDIO_IN_SAIx_SD_PIN GPIO_PIN_3
149 #define AUDIO_IN_SAIx_DMAx_CLK_ENABLE() __HAL_RCC_DMA2_CLK_ENABLE()
150 #define AUDIO_IN_SAIx_DMAx_STREAM DMA2_Stream4
151 #define AUDIO_IN_SAIx_DMAx_CHANNEL DMA_CHANNEL_1
152 #define AUDIO_IN_SAIx_DMAx_IRQ DMA2_Stream4_IRQn
153 #define AUDIO_IN_SAIx_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD
154 #define AUDIO_IN_SAIx_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD
156 #define AUDIO_IN_INT_GPIO_ENABLE() __HAL_RCC_GPIOJ_CLK_ENABLE()
157 #define AUDIO_IN_INT_GPIO_PORT GPIOJ
158 #define AUDIO_IN_INT_GPIO_PIN GPIO_PIN_12
159 #define AUDIO_IN_INT_IRQ EXTI15_10_IRQn
162 #define AUDIO_DFSDMx_TOP_RIGHT_CHANNEL DFSDM_CHANNEL_0
163 #define AUDIO_DFSDMx_TOP_LEFT_CHANNEL DFSDM_CHANNEL_1
164 #define AUDIO_DFSDMx_BUTTOM_RIGHT_CHANNEL DFSDM_CHANNEL_4
165 #define AUDIO_DFSDMx_BUTTOM_LEFT_CHANNEL DFSDM_CHANNEL_5
167 #define AUDIO_DFSDMx_TOP_LEFT_FILTER DFSDM1_Filter0
168 #define AUDIO_DFSDMx_TOP_RIGHT_FILTER DFSDM1_Filter1
169 #define AUDIO_DFSDMx_BUTTOM_LEFT_FILTER DFSDM1_Filter2
170 #define AUDIO_DFSDMx_BUTTOM_RIGHT_FILTER DFSDM1_Filter3
172 #define AUDIO_DFSDMx_CLK_ENABLE() __HAL_RCC_DFSDM1_CLK_ENABLE()
173 #define AUDIO_DFSDMx_CKOUT_PIN GPIO_PIN_3
174 #define AUDIO_DFSDMx_CKOUT_DMIC_GPIO_PORT GPIOD
175 #define AUDIO_DFSDMx_CKOUT_DMIC_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
176 #define AUDIO_DFSDMx_DMIC_DATIN1_PIN GPIO_PIN_3
177 #define AUDIO_DFSDMx_DMIC_DATIN5_PIN GPIO_PIN_11
178 #define AUDIO_DFSDMx_DMIC_DATIN_GPIO_PORT GPIOC
179 #define AUDIO_DFSDMx_DMIC_DATIN_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
180 #define AUDIO_DFSDMx_DMIC_DATIN_AF GPIO_AF3_DFSDM1
181 #define AUDIO_DFSDMx_CKOUT_AF GPIO_AF3_DFSDM1
184 #define AUDIO_DFSDMx_DMAx_CLK_ENABLE() __HAL_RCC_DMA2_CLK_ENABLE()
185 #define AUDIO_DFSDMx_DMAx_CHANNEL DMA_CHANNEL_8
186 #define AUDIO_DFSDMx_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_WORD
187 #define AUDIO_DFSDMx_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_WORD
189 #define AUDIO_DFSDMx_DMAx_TOP_LEFT_STREAM DMA2_Stream0
190 #define AUDIO_DFSDMx_DMAx_TOP_LEFT_IRQ DMA2_Stream0_IRQn
191 #define AUDIO_DFSDMx_DMAx_TOP_LEFT_IRQHandler DMA2_Stream0_IRQHandler
193 #define AUDIO_DFSDMx_DMAx_TOP_RIGHT_STREAM DMA2_Stream5
194 #define AUDIO_DFSDMx_DMAx_TOP_RIGHT_IRQ DMA2_Stream5_IRQn
195 #define AUDIO_DFSDMx_DMAx_TOP_RIGHT_IRQHandler DMA2_Stream5_IRQHandler
197 #define AUDIO_DFSDMx_DMAx_BUTTOM_LEFT_STREAM DMA2_Stream6
198 #define AUDIO_DFSDMx_DMAx_BUTTOM_LEFT_IRQ DMA2_Stream6_IRQn
199 #define AUDIO_DFSDMx_DMAx_BUTTOM_LEFT_IRQHandler DMA2_Stream6_IRQHandler
201 #define AUDIO_DFSDMx_DMAx_BUTTOM_RIGHT_STREAM DMA2_Stream7
202 #define AUDIO_DFSDMx_DMAx_BUTTOM_RIGHT_IRQ DMA2_Stream7_IRQn
203 #define AUDIO_DFSDMx_DMAx_BUTTOM_RIGHT_IRQHandler DMA2_Stream7_IRQHandler
206 #define AUDIO_IN_IRQ_PREPRIO ((uint32_t)0x0F)
213 #define AUDIODATA_SIZE 2
216 #define AUDIO_OK ((uint8_t)0)
217 #define AUDIO_ERROR ((uint8_t)1)
218 #define AUDIO_TIMEOUT ((uint8_t)2)
221 #define DEFAULT_AUDIO_IN_FREQ BSP_AUDIO_FREQUENCY_16K
222 #define DEFAULT_AUDIO_IN_BIT_RESOLUTION ((uint8_t)16)
223 #define DEFAULT_AUDIO_IN_CHANNEL_NBR ((uint8_t)2)
224 #define DEFAULT_AUDIO_IN_VOLUME ((uint16_t)64)
230 #define OUTPUT_DEVICE_HEADPHONE1 OUTPUT_DEVICE_HEADPHONE
231 #define OUTPUT_DEVICE_HEADPHONE2 OUTPUT_DEVICE_SPEAKER
237 #define INPUT_DEVICE_DIGITAL_MIC ((uint16_t)0)
239 #define INPUT_DEVICE_ANALOG_MIC INPUT_DEVICE_INPUT_LINE_1
248 #define DMA_MAX(x) (((x) <= DMA_MAX_SZE)? (x):DMA_MAX_SZE)
256 uint8_t
BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq);
293 uint8_t
BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr);
294 uint8_t
BSP_AUDIO_IN_InitEx(uint16_t InputDevice, uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr);
uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output)
Switch dynamically (while audio file is played) the output target (speaker or headphone).
void BSP_AUDIO_OUT_HalfTransfer_CallBack(void)
Manages the DMA Half Transfer complete event.
uint8_t BSP_AUDIO_IN_GetChannelNumber(void)
Return audio in channel number.
uint8_t BSP_AUDIO_OUT_Play(uint16_t *pBuffer, uint32_t Size)
Starts playing audio stream from a data buffer for a determined size.
This file contains definitions for STM32F769I-Discovery LEDs, push-buttons hardware resources.
uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq)
Configures the audio peripherals.
void BSP_AUDIO_IN_DeInit(void)
Deinit the audio IN peripherals.
uint8_t BSP_AUDIO_IN_Pause(void)
Pauses the audio file stream.
void BSP_AUDIO_OUT_MspDeInit(SAI_HandleTypeDef *hsai, void *Params)
Deinitializes BSP_AUDIO_OUT MSP.
uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume)
Controls the current audio volume level.
void BSP_AUDIO_OUT_DeInit(void)
Deinit the audio peripherals.
DFSDM filter handle structure definition.
uint8_t BSP_AUDIO_IN_InitEx(uint16_t InputDevice, uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr)
Initialize wave recording.
void BSP_AUDIO_IN_HalfTransfer_CallBack(void)
Manages the DMA Half Transfer complete event.
void BSP_AUDIO_OUT_MspInit(SAI_HandleTypeDef *hsai, void *Params)
Initializes BSP_AUDIO_OUT MSP.
uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd)
Enables or disables the MUTE mode by software.
void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq)
Update the audio frequency.
uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option)
Stops audio playing and Power down the Audio Codec.
void BSP_AUDIO_IN_MspInit(void)
Initialize BSP_AUDIO_IN MSP.
void BSP_AUDIO_IN_TransferComplete_CallBack(void)
User callback when record buffer is filled.
void BSP_AUDIO_IN_ClockConfig(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t AudioFreq, void *Params)
Clock Config.
void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size)
Sends n-Bytes on the I2S interface.
uint8_t BSP_AUDIO_OUT_Pause(void)
Pauses the audio file stream. In case of using DMA, the DMA Pause feature is used....
void BSP_AUDIO_OUT_Error_CallBack(void)
Manages the DMA FIFO error event.
uint8_t BSP_AUDIO_IN_Stop(void)
Stops audio recording.
void BSP_AUDIO_OUT_TransferComplete_CallBack(void)
Manages the DMA full Transfer complete event.
uint8_t BSP_AUDIO_OUT_Resume(void)
Resumes the audio file streaming. WARNING: When calling BSP_AUDIO_OUT_Pause() function for pause,...
uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr)
Initializes wave recording.
void BSP_AUDIO_OUT_ClockConfig(SAI_HandleTypeDef *hsai, uint32_t AudioFreq, void *Params)
Clock Config.
uint8_t BSP_AUDIO_IN_AllocScratch(int32_t *pScratch, uint32_t size)
Allocate channel buffer scratch.
void BSP_AUDIO_IN_MspDeInit(void)
DeInitialize BSP_AUDIO_IN MSP.
void BSP_AUDIO_OUT_SetAudioFrameSlot(uint32_t AudioFrameSlot)
Updates the Audio frame slot configuration.
uint8_t BSP_AUDIO_IN_Record(uint16_t *pData, uint32_t Size)
Starts audio recording.
void BSP_AUDIO_IN_Error_CallBack(void)
Audio IN Error callback function.
uint8_t BSP_AUDIO_IN_Resume(void)
Resumes the audio file stream.