40 #ifndef __STM32F769I_DISCOVERY_AUDIO_H 41 #define __STM32F769I_DISCOVERY_AUDIO_H 49 #include "../Components/wm8994/wm8994.h" 79 #define BSP_AUDIO_FREQUENCY_96K SAI_AUDIO_FREQUENCY_96K 80 #define BSP_AUDIO_FREQUENCY_48K SAI_AUDIO_FREQUENCY_48K 81 #define BSP_AUDIO_FREQUENCY_44K SAI_AUDIO_FREQUENCY_44K 82 #define BSP_AUDIO_FREQUENCY_32K SAI_AUDIO_FREQUENCY_32K 83 #define BSP_AUDIO_FREQUENCY_22K SAI_AUDIO_FREQUENCY_22K 84 #define BSP_AUDIO_FREQUENCY_16K SAI_AUDIO_FREQUENCY_16K 85 #define BSP_AUDIO_FREQUENCY_11K SAI_AUDIO_FREQUENCY_11K 86 #define BSP_AUDIO_FREQUENCY_8K SAI_AUDIO_FREQUENCY_8K 101 #define CODEC_AUDIOFRAME_SLOT_0123 SAI_SLOTACTIVE_0 | SAI_SLOTACTIVE_1 | SAI_SLOTACTIVE_2 | SAI_SLOTACTIVE_3 103 #define CODEC_AUDIOFRAME_SLOT_02 SAI_SLOTACTIVE_0 | SAI_SLOTACTIVE_2 105 #define CODEC_AUDIOFRAME_SLOT_13 SAI_SLOTACTIVE_1 | SAI_SLOTACTIVE_3 109 #define AUDIO_OUT_SAIx SAI1_Block_A 110 #define AUDIO_OUT_SAIx_CLK_ENABLE() __HAL_RCC_SAI1_CLK_ENABLE() 111 #define AUDIO_OUT_SAIx_CLK_DISABLE() __HAL_RCC_SAI1_CLK_DISABLE() 112 #define AUDIO_OUT_SAIx_AF GPIO_AF6_SAI1 114 #define AUDIO_OUT_SAIx_MCLK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE() 115 #define AUDIO_OUT_SAIx_MCLK_GPIO_PORT GPIOG 116 #define AUDIO_OUT_SAIx_MCLK_PIN GPIO_PIN_7 117 #define AUDIO_OUT_SAIx_SD_FS_CLK_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE() 118 #define AUDIO_OUT_SAIx_SD_FS_SCK_GPIO_PORT GPIOE 119 #define AUDIO_OUT_SAIx_FS_PIN GPIO_PIN_4 120 #define AUDIO_OUT_SAIx_SCK_PIN GPIO_PIN_5 121 #define AUDIO_OUT_SAIx_SD_PIN GPIO_PIN_6 124 #define AUDIO_OUT_SAIx_DMAx_CLK_ENABLE() __HAL_RCC_DMA2_CLK_ENABLE() 125 #define AUDIO_OUT_SAIx_DMAx_STREAM DMA2_Stream1 126 #define AUDIO_OUT_SAIx_DMAx_CHANNEL DMA_CHANNEL_0 127 #define AUDIO_OUT_SAIx_DMAx_IRQ DMA2_Stream1_IRQn 128 #define AUDIO_OUT_SAIx_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD 129 #define AUDIO_OUT_SAIx_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD 130 #define DMA_MAX_SZE 0xFFFF 132 #define AUDIO_OUT_SAIx_DMAx_IRQHandler DMA2_Stream1_IRQHandler 135 #define AUDIO_OUT_IRQ_PREPRIO ((uint32_t)0x0E) 141 #define AUDIO_IN_SAIx SAI1_Block_B 142 #define AUDIO_IN_SAIx_CLK_ENABLE() __HAL_RCC_SAI1_CLK_ENABLE() 143 #define AUDIO_IN_SAIx_CLK_DISABLE() __HAL_RCC_SAI1_CLK_DISABLE() 144 #define AUDIO_IN_SAIx_AF GPIO_AF6_SAI1 145 #define AUDIO_IN_SAIx_SD_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE() 146 #define AUDIO_IN_SAIx_SD_GPIO_PORT GPIOE 147 #define AUDIO_IN_SAIx_SD_PIN GPIO_PIN_3 150 #define AUDIO_IN_SAIx_DMAx_CLK_ENABLE() __HAL_RCC_DMA2_CLK_ENABLE() 151 #define AUDIO_IN_SAIx_DMAx_STREAM DMA2_Stream4 152 #define AUDIO_IN_SAIx_DMAx_CHANNEL DMA_CHANNEL_1 153 #define AUDIO_IN_SAIx_DMAx_IRQ DMA2_Stream4_IRQn 154 #define AUDIO_IN_SAIx_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD 155 #define AUDIO_IN_SAIx_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD 157 #define AUDIO_IN_INT_GPIO_ENABLE() __HAL_RCC_GPIOJ_CLK_ENABLE() 158 #define AUDIO_IN_INT_GPIO_PORT GPIOJ 159 #define AUDIO_IN_INT_GPIO_PIN GPIO_PIN_12 160 #define AUDIO_IN_INT_IRQ EXTI15_10_IRQn 163 #define AUDIO_DFSDMx_TOP_RIGHT_CHANNEL DFSDM_CHANNEL_0 164 #define AUDIO_DFSDMx_TOP_LEFT_CHANNEL DFSDM_CHANNEL_1 165 #define AUDIO_DFSDMx_BUTTOM_RIGHT_CHANNEL DFSDM_CHANNEL_4 166 #define AUDIO_DFSDMx_BUTTOM_LEFT_CHANNEL DFSDM_CHANNEL_5 168 #define AUDIO_DFSDMx_TOP_LEFT_FILTER DFSDM1_Filter0 169 #define AUDIO_DFSDMx_TOP_RIGHT_FILTER DFSDM1_Filter1 170 #define AUDIO_DFSDMx_BUTTOM_LEFT_FILTER DFSDM1_Filter2 171 #define AUDIO_DFSDMx_BUTTOM_RIGHT_FILTER DFSDM1_Filter3 173 #define AUDIO_DFSDMx_CLK_ENABLE() __HAL_RCC_DFSDM_CLK_ENABLE() 174 #define AUDIO_DFSDMx_CKOUT_PIN GPIO_PIN_3 175 #define AUDIO_DFSDMx_CKOUT_DMIC_GPIO_PORT GPIOD 176 #define AUDIO_DFSDMx_CKOUT_DMIC_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE() 177 #define AUDIO_DFSDMx_DMIC_DATIN1_PIN GPIO_PIN_3 178 #define AUDIO_DFSDMx_DMIC_DATIN5_PIN GPIO_PIN_11 179 #define AUDIO_DFSDMx_DMIC_DATIN_GPIO_PORT GPIOC 180 #define AUDIO_DFSDMx_DMIC_DATIN_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() 181 #define AUDIO_DFSDMx_DMIC_DATIN_AF GPIO_AF3_DFSDM1 182 #define AUDIO_DFSDMx_CKOUT_AF GPIO_AF3_DFSDM1 185 #define AUDIO_DFSDMx_DMAx_CLK_ENABLE() __HAL_RCC_DMA2_CLK_ENABLE() 186 #define AUDIO_DFSDMx_DMAx_CHANNEL DMA_CHANNEL_8 187 #define AUDIO_DFSDMx_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_WORD 188 #define AUDIO_DFSDMx_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_WORD 190 #define AUDIO_DFSDMx_DMAx_TOP_LEFT_STREAM DMA2_Stream0 191 #define AUDIO_DFSDMx_DMAx_TOP_LEFT_IRQ DMA2_Stream0_IRQn 192 #define AUDIO_DFSDMx_DMAx_TOP_LEFT_IRQHandler DMA2_Stream0_IRQHandler 194 #define AUDIO_DFSDMx_DMAx_TOP_RIGHT_STREAM DMA2_Stream5 195 #define AUDIO_DFSDMx_DMAx_TOP_RIGHT_IRQ DMA2_Stream5_IRQn 196 #define AUDIO_DFSDMx_DMAx_TOP_RIGHT_IRQHandler DMA2_Stream5_IRQHandler 198 #define AUDIO_DFSDMx_DMAx_BUTTOM_LEFT_STREAM DMA2_Stream6 199 #define AUDIO_DFSDMx_DMAx_BUTTOM_LEFT_IRQ DMA2_Stream6_IRQn 200 #define AUDIO_DFSDMx_DMAx_BUTTOM_LEFT_IRQHandler DMA2_Stream6_IRQHandler 202 #define AUDIO_DFSDMx_DMAx_BUTTOM_RIGHT_STREAM DMA2_Stream7 203 #define AUDIO_DFSDMx_DMAx_BUTTOM_RIGHT_IRQ DMA2_Stream7_IRQn 204 #define AUDIO_DFSDMx_DMAx_BUTTOM_RIGHT_IRQHandler DMA2_Stream7_IRQHandler 207 #define AUDIO_IN_IRQ_PREPRIO ((uint32_t)0x0F) 214 #define AUDIODATA_SIZE 2 217 #define AUDIO_OK ((uint8_t)0) 218 #define AUDIO_ERROR ((uint8_t)1) 219 #define AUDIO_TIMEOUT ((uint8_t)2) 222 #define DEFAULT_AUDIO_IN_FREQ BSP_AUDIO_FREQUENCY_16K 223 #define DEFAULT_AUDIO_IN_BIT_RESOLUTION ((uint8_t)16) 224 #define DEFAULT_AUDIO_IN_CHANNEL_NBR ((uint8_t)2) 225 #define DEFAULT_AUDIO_IN_VOLUME ((uint16_t)64) 232 #define OUTPUT_DEVICE_HEADPHONE1 OUTPUT_DEVICE_HEADPHONE 233 #define OUTPUT_DEVICE_HEADPHONE2 OUTPUT_DEVICE_SPEAKER 239 #define INPUT_DEVICE_DIGITAL_MIC ((uint16_t)0) 241 #define INPUT_DEVICE_ANALOG_MIC INPUT_DEVICE_INPUT_LINE_1 250 #define DMA_MAX(x) (((x) <= DMA_MAX_SZE)? (x):DMA_MAX_SZE) 258 uint8_t
BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq);
296 uint8_t
BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr);
297 uint8_t
BSP_AUDIO_IN_InitEx(uint16_t InputDevice, uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr);
void BSP_AUDIO_OUT_MspDeInit(SAI_HandleTypeDef *hsai, void *Params)
Deinitializes SAI MSP.
void BSP_AUDIO_OUT_HalfTransfer_CallBack(void)
Manages the DMA Half Transfer complete interrupt.
void BSP_AUDIO_OUT_TransferComplete_CallBack(void)
Calculates the remaining file size and new position of the pointer.
void BSP_AUDIO_IN_ClockConfig(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t AudioFreq, void *Params)
Clock Config.
uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr)
Initialize wave recording.
void BSP_AUDIO_IN_DeInit(void)
Deinit the audio IN peripherals.
uint8_t BSP_AUDIO_IN_Resume(void)
Resume the audio file stream.
This file contains definitions for STM32F769I-Discovery LEDs, push-buttons hardware resources...
void BSP_AUDIO_OUT_DeInit(void)
De-initializes the audio out peripheral.
void BSP_AUDIO_OUT_ClockConfig(SAI_HandleTypeDef *hsai, uint32_t AudioFreq, void *Params)
Clock Config.
uint8_t BSP_AUDIO_OUT_Pause(void)
This function 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.
void BSP_AUDIO_IN_HalfTransfer_CallBack(void)
Manages the DMA Half Transfer complete event.
void BSP_AUDIO_IN_TransferComplete_CallBack(void)
User callback when record buffer is filled.
uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output)
Switch dynamically (while audio file is played) the output target (speaker or headphone).
uint8_t BSP_AUDIO_IN_Pause(void)
Pause the audio file stream.
uint8_t BSP_AUDIO_OUT_Resume(void)
Resumes the audio file stream. When calling BSP_AUDIO_OUT_Pause() function for pause, only BSP_AUDIO_OUT_Resume() function should be called for resume (use of BSP_AUDIO_OUT_Play() function for resume could lead to unexpected behaviour).
uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq)
Configures the audio peripherals.
void BSP_AUDIO_IN_Error_CallBack(void)
Audio IN Error callback function.
void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq)
Updates the audio frequency.
uint8_t BSP_AUDIO_IN_Stop(void)
Stop audio recording.
void BSP_AUDIO_OUT_Restart(uint16_t *pBuffer, uint32_t Size)
void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size)
Sends n-Bytes on the SAI interface.
uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd)
Enables or disables the MUTE mode by software.
uint8_t BSP_AUDIO_OUT_Play(uint16_t *pBuffer, uint32_t Size)
Starts playing audio stream from a data buffer for a determined size.
uint8_t BSP_AUDIO_IN_InitEx(uint16_t InputDevice, uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr)
Initialize wave recording.
uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option)
Stops audio playing and Power down the Audio Codec.
uint8_t BSP_AUDIO_IN_GetChannelNumber(void)
Return audio in channel number.
void BSP_AUDIO_IN_MspDeInit(void)
DeInitialize BSP_AUDIO_IN MSP.
void BSP_AUDIO_IN_MspInit(void)
Initialize BSP_AUDIO_IN MSP.
uint8_t BSP_AUDIO_IN_AllocScratch(int32_t *pScratch, uint32_t size)
Allocate channel buffer scratch.
void BSP_AUDIO_OUT_SetAudioFrameSlot(uint32_t AudioFrameSlot)
Updates the Audio frame slot configuration.
void BSP_AUDIO_OUT_MspInit(SAI_HandleTypeDef *hsai, void *Params)
Initializes BSP_AUDIO_OUT MSP.
uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume)
Controls the current audio volume level.
uint8_t BSP_AUDIO_IN_Record(uint16_t *pData, uint32_t Size)
Start audio recording.