170 #define DFSDM_OVER_SAMPLING(__FREQUENCY__) \ 171 (__FREQUENCY__ == AUDIO_FREQUENCY_8K) ? 256 \ 172 : (__FREQUENCY__ == AUDIO_FREQUENCY_11K) ? 256 \ 173 : (__FREQUENCY__ == AUDIO_FREQUENCY_16K) ? 128 \ 174 : (__FREQUENCY__ == AUDIO_FREQUENCY_22K) ? 128 \ 175 : (__FREQUENCY__ == AUDIO_FREQUENCY_32K) ? 64 \ 176 : (__FREQUENCY__ == AUDIO_FREQUENCY_44K) ? 64 \ 177 : (__FREQUENCY__ == AUDIO_FREQUENCY_48K) ? 40 : 20 \ 179 #define DFSDM_CLOCK_DIVIDER(__FREQUENCY__) \ 180 (__FREQUENCY__ == AUDIO_FREQUENCY_8K) ? 24 \ 181 : (__FREQUENCY__ == AUDIO_FREQUENCY_11K) ? 4 \ 182 : (__FREQUENCY__ == AUDIO_FREQUENCY_16K) ? 24 \ 183 : (__FREQUENCY__ == AUDIO_FREQUENCY_22K) ? 4 \ 184 : (__FREQUENCY__ == AUDIO_FREQUENCY_32K) ? 24 \ 185 : (__FREQUENCY__ == AUDIO_FREQUENCY_44K) ? 4 \ 186 : (__FREQUENCY__ == AUDIO_FREQUENCY_48K) ? 25 : 25 \ 188 #define DFSDM_FILTER_ORDER(__FREQUENCY__) \ 189 (__FREQUENCY__ == AUDIO_FREQUENCY_8K) ? DFSDM_FILTER_SINC3_ORDER \ 190 : (__FREQUENCY__ == AUDIO_FREQUENCY_11K) ? DFSDM_FILTER_SINC3_ORDER \ 191 : (__FREQUENCY__ == AUDIO_FREQUENCY_16K) ? DFSDM_FILTER_SINC3_ORDER \ 192 : (__FREQUENCY__ == AUDIO_FREQUENCY_22K) ? DFSDM_FILTER_SINC3_ORDER \ 193 : (__FREQUENCY__ == AUDIO_FREQUENCY_32K) ? DFSDM_FILTER_SINC4_ORDER \ 194 : (__FREQUENCY__ == AUDIO_FREQUENCY_44K) ? DFSDM_FILTER_SINC3_ORDER \ 195 : (__FREQUENCY__ == AUDIO_FREQUENCY_48K) ? DFSDM_FILTER_SINC3_ORDER : DFSDM_FILTER_SINC5_ORDER \ 197 #define DFSDM_RIGHT_BIT_SHIFT(__FREQUENCY__) \ 198 (__FREQUENCY__ == AUDIO_FREQUENCY_8K) ? 8 \ 199 : (__FREQUENCY__ == AUDIO_FREQUENCY_11K) ? 8 \ 200 : (__FREQUENCY__ == AUDIO_FREQUENCY_16K) ? 3 \ 201 : (__FREQUENCY__ == AUDIO_FREQUENCY_22K) ? 4 \ 202 : (__FREQUENCY__ == AUDIO_FREQUENCY_32K) ? 7 \ 203 : (__FREQUENCY__ == AUDIO_FREQUENCY_44K) ? 0 \ 204 : (__FREQUENCY__ == AUDIO_FREQUENCY_48K) ? 0 : 4 \ 207 #define SaturaLH(N, L, H) (((N)<(L))?(L):(((N)>(H))?(H):(N))) 239 static __IO int32_t ScratchSize;
246 static uint32_t DmaTopLeftRecHalfCplt = 0;
247 static uint32_t DmaTopLeftRecCplt = 0;
248 static uint32_t DmaTopRightRecHalfCplt = 0;
249 static uint32_t DmaTopRightRecCplt = 0;
250 static uint32_t DmaButtomLeftRecHalfCplt = 0;
251 static uint32_t DmaButtomLeftRecCplt = 0;
252 static uint32_t DmaButtomRightRecHalfCplt = 0;
253 static uint32_t DmaButtomRightRecCplt = 0;
256 static __IO uint32_t AppBuffTrigger = 0;
257 static __IO uint32_t AppBuffHalf = 0;
266 static void SAIx_Out_Init(uint32_t AudioFreq);
267 static void SAIx_Out_DeInit(
void);
270 static void SAIx_In_Init(uint32_t AudioFreq);
271 static void SAIx_In_DeInit(
void);
272 static void DFSDMx_ChannelMspInit(
void);
273 static void DFSDMx_FilterMspInit(
void);
274 static void DFSDMx_ChannelMspDeInit(
void);
275 static void DFSDMx_FilterMspDeInit(
void);
276 static uint8_t DFSDMx_Init(uint32_t AudioFreq);
277 static uint8_t DFSDMx_DeInit(
void);
297 uint32_t deviceid = 0x00;
313 SAIx_Out_Init(AudioFreq);
584 if (hsai == &haudio_out_sai)
600 if (hsai == &haudio_out_sai)
668 gpio_init_structure.
Speed = GPIO_SPEED_HIGH;
730 gpio_init_structure.
Speed = GPIO_SPEED_FAST;
740 gpio_init_structure.
Speed = GPIO_SPEED_FAST;
909 static void SAIx_Out_Init(uint32_t AudioFreq)
968 static void SAIx_Out_DeInit(
void)
986 static void SAIx_In_Init(uint32_t AudioFreq)
1099 static void SAIx_In_DeInit(
void)
1142 AudioIn_Device = InputDevice;
1146 AudioIn_ChannelNumber = ChnlNbr;
1154 DFSDMx_Init(AudioFreq);
1172 SAIx_In_Init(AudioFreq);
1207 ScratchSize = (size / AudioIn_ChannelNumber);
1210 for (idx = 0; idx < AudioIn_ChannelNumber; idx++)
1212 pScratchBuff[
idx] = (int32_t *)(pScratch + (idx * ScratchSize));
1225 return AudioIn_ChannelNumber;
1244 if(AudioIn_ChannelNumber > 2)
1294 if(AudioIn_ChannelNumber > 2)
1350 if(AudioIn_ChannelNumber > 2)
1386 if(AudioIn_ChannelNumber > 2)
1447 DmaTopLeftRecCplt = 1;
1451 DmaTopRightRecCplt = 1;
1455 DmaButtomLeftRecCplt = 1;
1459 DmaButtomRightRecCplt = 1;
1462 if(AudioIn_ChannelNumber > 2)
1464 if((DmaTopLeftRecCplt == 1) && (DmaTopRightRecCplt == 1) && (DmaButtomLeftRecCplt == 1) && (DmaButtomRightRecCplt == 1))
1466 for(index = (ScratchSize/2) ; index < ScratchSize; index++)
1468 hAudioIn.
pRecBuf[AppBuffTrigger] = (uint16_t)(
SaturaLH((pScratchBuff[1][index] >> 8), -32760, 32760));
1469 hAudioIn.
pRecBuf[AppBuffTrigger + 1] = (uint16_t)(
SaturaLH((pScratchBuff[0][index] >> 8), -32760, 32760));
1470 hAudioIn.
pRecBuf[AppBuffTrigger + 2] = (uint16_t)(
SaturaLH((pScratchBuff[3][index] >> 8), -32760, 32760));
1471 hAudioIn.
pRecBuf[AppBuffTrigger + 3] = (uint16_t)(
SaturaLH((pScratchBuff[2][index] >> 8), -32760, 32760));
1474 DmaTopLeftRecCplt = 0;
1475 DmaTopRightRecCplt = 0;
1476 DmaButtomLeftRecCplt = 0;
1477 DmaButtomRightRecCplt = 0;
1482 if((DmaTopLeftRecCplt == 1) && (DmaTopRightRecCplt == 1))
1484 for(index = (ScratchSize/2) ; index < ScratchSize; index++)
1486 hAudioIn.
pRecBuf[AppBuffTrigger] = (uint16_t)(
SaturaLH((pScratchBuff[1][index] >> 8), -32760, 32760));
1487 hAudioIn.
pRecBuf[AppBuffTrigger + 1] = (uint16_t)(
SaturaLH((pScratchBuff[0][index] >> 8), -32760, 32760));
1490 DmaTopLeftRecCplt = 0;
1491 DmaTopRightRecCplt = 0;
1496 if((AppBuffTrigger == hAudioIn.
RecSize/2) && (AppBuffHalf == 0))
1502 if(AppBuffTrigger == hAudioIn.
RecSize)
1523 DmaTopLeftRecHalfCplt = 1;
1527 DmaTopRightRecHalfCplt = 1;
1531 DmaButtomLeftRecHalfCplt = 1;
1535 DmaButtomRightRecHalfCplt = 1;
1538 if(AudioIn_ChannelNumber > 2)
1540 if((DmaTopLeftRecHalfCplt == 1) && (DmaTopRightRecHalfCplt == 1) && (DmaButtomLeftRecHalfCplt == 1) && (DmaButtomRightRecHalfCplt == 1))
1542 for(index = 0 ; index < ScratchSize/2; index++)
1544 hAudioIn.
pRecBuf[AppBuffTrigger] = (uint16_t)(
SaturaLH((pScratchBuff[1][index] >> 8), -32760, 32760));
1545 hAudioIn.
pRecBuf[AppBuffTrigger + 1] = (uint16_t)(
SaturaLH((pScratchBuff[0][index] >> 8), -32760, 32760));
1546 hAudioIn.
pRecBuf[AppBuffTrigger + 2] = (uint16_t)(
SaturaLH((pScratchBuff[3][index] >> 8), -32760, 32760));
1547 hAudioIn.
pRecBuf[AppBuffTrigger + 3] = (uint16_t)(
SaturaLH((pScratchBuff[2][index] >> 8), -32760, 32760));
1550 DmaTopLeftRecHalfCplt = 0;
1551 DmaTopRightRecHalfCplt = 0;
1552 DmaButtomLeftRecHalfCplt = 0;
1553 DmaButtomRightRecHalfCplt = 0;
1558 if((DmaTopLeftRecHalfCplt == 1) && (DmaTopRightRecHalfCplt == 1))
1560 for(index = 0 ; index < ScratchSize/2; index++)
1562 hAudioIn.
pRecBuf[AppBuffTrigger] = (uint16_t)(
SaturaLH((pScratchBuff[1][index] >> 8), -32760, 32760));
1563 hAudioIn.
pRecBuf[AppBuffTrigger + 1] = (uint16_t)(
SaturaLH((pScratchBuff[0][index] >> 8), -32760, 32760));
1566 DmaTopLeftRecHalfCplt = 0;
1567 DmaTopRightRecHalfCplt = 0;
1572 if((AppBuffTrigger == hAudioIn.
RecSize/2) && (AppBuffHalf == 0))
1578 if(AppBuffTrigger == hAudioIn.
RecSize)
1657 DFSDMx_ChannelMspInit();
1659 DFSDMx_FilterMspInit();
1663 SAI_AUDIO_IN_MspInit(&haudio_in_sai,
NULL);
1677 DFSDMx_ChannelMspDeInit();
1679 DFSDMx_FilterMspDeInit();
1683 SAI_AUDIO_IN_MspDeInit(&haudio_in_sai,
NULL);
1732 rcc_ex_clk_init_struct.Dfsdm1AudioClockSelection = RCC_DFSDM1AUDIOCLKSOURCE_SAI2;
1748 static uint8_t DFSDMx_Init(uint32_t AudioFreq)
1797 if(AudioIn_ChannelNumber > 2)
1898 if(AudioIn_ChannelNumber > 2)
1958 static uint8_t DFSDMx_DeInit(
void)
1982 if(AudioIn_ChannelNumber > 2)
2015 static void DFSDMx_ChannelMspInit(
void)
2039 if(AudioIn_ChannelNumber > 2)
2053 static void DFSDMx_ChannelMspDeInit(
void)
2063 if(AudioIn_ChannelNumber > 2)
2078 static void DFSDMx_FilterMspInit(
void)
2135 if(AudioIn_ChannelNumber > 2)
2193 static void DFSDMx_FilterMspDeInit(
void)
2198 if(AudioIn_ChannelNumber > 2)
#define AUDIO_DFSDMx_TOP_LEFT_CHANNEL
__weak void BSP_AUDIO_IN_ClockConfig(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t AudioFreq, void *Params)
Clock Config.
#define AUDIO_DFSDMx_TOP_LEFT_FILTER
SAI_SlotInitTypeDef SlotInit
#define SAI_FIFOTHRESHOLD_1QF
uint32_t PeriphClockSelection
#define AUDIO_I2C_ADDRESS
Audio I2C Slave address.
RCC_PLLI2SInitTypeDef PLLI2S
HAL_StatusTypeDef HAL_SAI_Transmit_DMA(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size)
void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size)
Sends n-Bytes on the SAI interface.
#define AUDIO_IN_SAIx_SD_PIN
uint8_t BSP_AUDIO_IN_GetChannelNumber(void)
Return audio in channel number.
__weak void BSP_AUDIO_OUT_MspDeInit(SAI_HandleTypeDef *hsai, void *Params)
Deinitializes SAI MSP.
#define AUDIO_DFSDMx_CKOUT_PIN
void AUDIO_Player_IncHeartbeat(void)
Increment the audio reception counter (heartbeat)
#define SAI_CLOCKSTROBING_FALLINGEDGE
#define AUDIO_IN_SAIx_CLK_DISABLE()
__weak void BSP_AUDIO_IN_MspInit(void)
Initialize BSP_AUDIO_IN MSP.
void HAL_SAI_TxHalfCpltCallback(SAI_HandleTypeDef *hsai)
Tx Half Transfer completed callbacks.
#define AUDIO_DFSDMx_TOP_RIGHT_FILTER
#define AUDIO_DFSDMx_DMAx_TOP_LEFT_IRQ
__weak void BSP_AUDIO_IN_TransferComplete_CallBack(void)
User callback when record buffer is filled.
void HAL_Delay(__IO uint32_t Delay)
This function provides accurate delay (in milliseconds) based on variable incremented.
#define DMA_FIFOMODE_DISABLE
__weak void BSP_AUDIO_IN_Error_CallBack(void)
Audio IN Error callback function.
#define AUDIO_OUT_SAIx_FS_PIN
#define DMA_MBURST_SINGLE
DMA_HandleTypeDef hDmaTopRight
#define __HAL_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__)
uint32_t ActiveFrameLength
uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option)
Stops audio playing and Power down the Audio Codec.
#define AUDIO_OUT_SAIx_DMAx_CLK_ENABLE()
void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)
HAL_StatusTypeDef HAL_SAI_DMAResume(SAI_HandleTypeDef *hsai)
void BSP_AUDIO_OUT_SetAudioFrameSlot(uint32_t AudioFrameSlot)
Updates the Audio frame slot configuration.
HAL_StatusTypeDef HAL_SAI_Receive_DMA(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size)
#define WM8994_ID
WM8994 ID.
#define AUDIO_IN_INT_GPIO_PIN
void SPDIF_TX_HalfTransfer_CallBack(void)
ISR Handler for the SPDIF Tx (first buffer full)
uint32_t(* Stop)(uint16_t, uint32_t)
#define SAI_MASTERDIVIDER_ENABLE
#define AUDIO_DFSDMx_DMIC_DATIN5_PIN
void BSP_AUDIO_OUT_DeInit(void)
De-initializes the audio out peripheral.
DFSDM_Channel_HandleTypeDef hAudioInButtomRightChannel
uint8_t BSP_AUDIO_IN_AllocScratch(int32_t *pScratch, uint32_t size)
Allocate channel buffer scratch.
uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume)
Controls the current audio volume level.
#define SAI_OUTPUT_RELEASED
#define AUDIO_OUT_SAIx_SCK_PIN
#define AUDIO_DFSDMx_CKOUT_DMIC_GPIO_CLK_ENABLE()
DFSDM_Channel_HandleTypeDef hAudioInTopRightChannel
uint8_t BSP_AUDIO_IN_Stop(void)
Stop audio recording.
#define AUDIO_DFSDMx_DMAx_BUTTOM_LEFT_IRQ
DMA_HandleTypeDef hDmaTopLeft
#define AUDIO_DFSDMx_TOP_RIGHT_CHANNEL
#define __HAL_DMA_RESET_HANDLE_STATE(__HANDLE__)
Reset DMA handle state.
SAI_Block_TypeDef * Instance
HAL_StatusTypeDef HAL_SAI_DMAPause(SAI_HandleTypeDef *hsai)
uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq)
Configures the audio peripherals.
#define DEFAULT_AUDIO_IN_CHANNEL_NBR
#define AUDIO_IN_SAIx_SD_GPIO_PORT
#define OUTPUT_DEVICE_HEADPHONE
#define AUDIO_IN_SAIx_DMAx_CLK_ENABLE()
uint32_t(* ReadID)(uint16_t)
void BSP_AUDIO_IN_DeInit(void)
Deinit the audio IN peripherals.
#define AUDIO_DFSDMx_DMAx_CHANNEL
AUDIO_DrvTypeDef * audio_drv
#define AUDIO_OUT_SAIx_DMAx_MEM_DATA_SIZE
uint32_t(* Init)(uint16_t, uint16_t, uint8_t, uint32_t)
#define __HAL_SAI_ENABLE(__HANDLE__)
#define DMA_FIFO_THRESHOLD_FULL
#define AUDIO_OUT_SAIx_CLK_DISABLE()
#define AUDIO_DFSDMx_DMAx_TOP_RIGHT_IRQ
#define SAI_OUTPUTDRIVE_ENABLE
__weak void BSP_AUDIO_OUT_ClockConfig(SAI_HandleTypeDef *hsai, uint32_t AudioFreq, void *Params)
Clock Config.
#define SaturaLH(N, L, H)
uint32_t(* Reset)(uint16_t)
#define AUDIO_DFSDMx_BUTTOM_RIGHT_FILTER
HAL_SAI_StateTypeDef HAL_SAI_GetState(SAI_HandleTypeDef *hsai)
#define AUDIO_FREQUENCY_22K
#define AUDIO_DFSDMx_DMAx_BUTTOM_LEFT_STREAM
void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq)
Updates the audio frequency.
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).
#define GPIO_SPEED_FREQ_VERY_HIGH
#define SAI_OUTPUTDRIVE_DISABLE
#define AUDIO_IN_SAIx_DMAx_PERIPH_DATA_SIZE
DMA_HandleTypeDef * hdmatx
#define AUDIO_DFSDMx_DMAx_MEM_DATA_SIZE
RCC extended clocks structure definition.
uint32_t(* Pause)(uint16_t)
#define SAI_SYNCEXT_DISABLE
#define SAI_FS_ACTIVE_LOW
#define DFSDM_RIGHT_BIT_SHIFT(__FREQUENCY__)
#define CODEC_AUDIOFRAME_SLOT_0123
HAL_StatusTypeDef HAL_SAI_DeInit(SAI_HandleTypeDef *hsai)
#define AUDIO_DFSDMx_DMIC_DATIN_GPIO_PORT
uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output)
Switch dynamically (while audio file is played) the output target (speaker or headphone).
void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
void HAL_SAI_RxCpltCallback(SAI_HandleTypeDef *hsai)
Reception complete callback.
#define AUDIO_OUT_SAIx_AF
#define SAI_OUTPUT_NOTRELEASED
#define AUDIO_OUT_SAIx_CLK_ENABLE()
DMA_HandleTypeDef hDmaButtomLeft
#define AUDIO_FREQUENCY_11K
#define RCC_SAI2CLKSOURCE_PLLI2S
#define SAI_FREE_PROTOCOL
DMA_HandleTypeDef hDmaButtomRight
DMA_Stream_TypeDef * Instance
#define SAI_MASTERDIVIDER_ENABLED
#define AUDIO_IN_INT_GPIO_ENABLE()
#define AUDIO_IN_IRQ_PREPRIO
#define AUDIO_IN_INT_GPIO_PORT
void HAL_SAI_TxCpltCallback(SAI_HandleTypeDef *hsai)
Tx Transfer completed callbacks.
void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)
#define AUDIO_IN_SAIx_DMAx_STREAM
#define AUDIO_DFSDMx_DMAx_BUTTOM_RIGHT_STREAM
uint32_t(* Play)(uint16_t, uint16_t *, uint16_t)
#define AUDIO_OUT_IRQ_PREPRIO
#define AUDIO_IN_SAIx_DMAx_IRQ
SAI_FrameInitTypeDef FrameInit
uint8_t BSP_AUDIO_IN_Resume(void)
Resume the audio file stream.
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
#define DFSDM_OVER_SAMPLING(__FREQUENCY__)
uint32_t Sai1ClockSelection
void HAL_SAI_RxHalfCpltCallback(SAI_HandleTypeDef *hsai)
Half reception complete callback.
#define AUDIO_OUT_SAIx_MCLK_PIN
#define SAI_MODEMASTER_TX
#define AUDIO_DFSDMx_DMAx_TOP_RIGHT_STREAM
#define SAI_CLOCKSTROBING_RISINGEDGE
uint8_t BSP_AUDIO_IN_InitEx(uint16_t InputDevice, uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr)
Initialize wave recording.
#define DFSDM_FILTER_ORDER(__FREQUENCY__)
GPIO Init structure definition.
DFSDM_Filter_HandleTypeDef hAudioInTopLeftFilter
uint32_t PeriphDataAlignment
uint8_t BSP_AUDIO_OUT_Play(uint16_t *pBuffer, uint32_t Size)
Starts playing audio stream from a data buffer for a determined size.
AUDIO_DrvTypeDef wm8994_drv
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...
uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd)
Enables or disables the MUTE mode by software.
#define AUDIO_IN_SAIx_CLK_ENABLE()
__weak void BSP_AUDIO_OUT_Error_CallBack(void)
Manages the DMA FIFO error event.
#define AUDIO_DFSDMx_CKOUT_DMIC_GPIO_PORT
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
#define AUDIO_FREQUENCY_44K
#define AUDIO_OUT_SAIx_SD_FS_SCK_GPIO_PORT
__weak void BSP_AUDIO_IN_MspDeInit(void)
DeInitialize BSP_AUDIO_IN MSP.
#define AUDIO_OUT_SAIx_MCLK_GPIO_PORT
DFSDM_Filter_HandleTypeDef hAudioInTopRightFilter
#define RCC_PERIPHCLK_SAI2
#define DMA_PBURST_SINGLE
#define CODEC_AUDIOFRAME_SLOT_02
#define AUDIO_DFSDMx_DMAx_CLK_ENABLE()
#define AUDIO_OUT_SAIx_SD_FS_CLK_ENABLE()
void SPDIF_TX_TransferComplete_CallBack(void)
ISR Handler for the SPDIF Tx (second buffer full)
DFSDM_Filter_HandleTypeDef hAudioInButtomLeftFilter
#define AUDIO_OUT_SAIx_MCLK_ENABLE()
#define AUDIO_DFSDMx_DMAx_PERIPH_DATA_SIZE
uint8_t BSP_AUDIO_IN_Record(uint16_t *pbuf, uint32_t size)
Start audio recording.
#define AUDIO_DFSDMx_CKOUT_AF
HAL_StatusTypeDef HAL_SAI_DMAStop(SAI_HandleTypeDef *hsai)
#define INPUT_DEVICE_DIGITAL_MIC
void HAL_SAI_ErrorCallback(SAI_HandleTypeDef *hsai)
SAI error callbacks.
#define __HAL_SAI_DISABLE(__HANDLE__)
#define SAI_OUTPUTDRIVE_ENABLED
#define AUDIO_DFSDMx_BUTTOM_LEFT_FILTER
DMA handle Structure definition.
#define AUDIO_DFSDMx_DMIC_DATIN1_PIN
DFSDM_Channel_HandleTypeDef hAudioInButtomLeftChannel
#define SAI_FS_BEFOREFIRSTBIT
#define AUDIO_IN_SAIx_SD_ENABLE()
uint32_t Sai2ClockSelection
#define SAI_FS_CHANNEL_IDENTIFICATION
#define AUDIO_DFSDMx_BUTTOM_RIGHT_CHANNEL
#define AUDIO_OUT_SAIx_DMAx_STREAM
#define AUDIO_IN_SAIx_DMAx_CHANNEL
void HAL_DFSDM_FilterRegConvHalfCpltCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
Half regular conversion complete callback.
uint32_t(* Resume)(uint16_t)
DFSDM_Filter_HandleTypeDef hAudioInButtomRightFilter
#define AUDIO_OUT_SAIx_SD_PIN
HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma)
__weak void BSP_AUDIO_OUT_HalfTransfer_CallBack(void)
Manages the DMA Half Transfer complete event.
#define AUDIO_OUT_SAIx_DMAx_PERIPH_DATA_SIZE
#define AUDIO_DFSDMx_CLK_ENABLE()
#define DMA_FIFOMODE_ENABLE
#define AUDIO_DFSDMx_DMAx_TOP_LEFT_STREAM
uint32_t(* SetVolume)(uint16_t, uint8_t)
uint32_t(* SetOutputMode)(uint16_t, uint8_t)
#define AUDIO_OUT_SAIx_DMAx_CHANNEL
#define DFSDM_CLOCK_DIVIDER(__FREQUENCY__)
#define RCC_PERIPHCLK_SAI1
#define AUDIO_DFSDMx_BUTTOM_LEFT_CHANNEL
This file contains the common defines and functions prototypes for the stm32f769i_discovery_audio.c driver.
#define SAI_SLOTSIZE_DATASIZE
#define AUDIO_IN_SAIx_DMAx_MEM_DATA_SIZE
uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr)
Initialize wave recording.
__weak void BSP_AUDIO_IN_HalfTransfer_CallBack(void)
Manages the DMA Half Transfer complete event.
uint32_t MemDataAlignment
#define RCC_SAI1CLKSOURCE_PLLI2S
HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma)
SAI_HandleTypeDef haudio_out_sai
#define DMA_PERIPH_TO_MEMORY
#define AUDIO_DFSDMx_DMIC_DATIN_AF
void HAL_NVIC_DisableIRQ(IRQn_Type IRQn)
void BSP_AUDIO_OUT_Restart(uint16_t *pBuffer, uint32_t Size)
#define AUDIO_DFSDMx_DMIC_DATIN_GPIO_CLK_ENABLE()
void HAL_DFSDM_FilterRegConvCpltCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
Regular conversion complete callback.
uint8_t BSP_AUDIO_IN_Pause(void)
Pause the audio file stream.
__weak void BSP_AUDIO_OUT_MspInit(SAI_HandleTypeDef *hsai, void *Params)
Initializes BSP_AUDIO_OUT MSP.
#define DMA_PRIORITY_HIGH
uint32_t(* SetMute)(uint16_t, uint32_t)
#define AUDIO_OUT_SAIx_DMAx_IRQ
DFSDM_Channel_HandleTypeDef hAudioInTopLeftChannel
HAL_StatusTypeDef HAL_SAI_Init(SAI_HandleTypeDef *hsai)
SAI_HandleTypeDef haudio_in_sai
#define AUDIO_DFSDMx_DMAx_BUTTOM_RIGHT_IRQ
#define DMA_MEMORY_TO_PERIPH
__weak void BSP_AUDIO_OUT_TransferComplete_CallBack(void)
Manages the DMA full Transfer complete event.