Go to the documentation of this file.
38 #ifndef __STM32F411E_DISCOVERY_AUDIO_H
39 #define __STM32F411E_DISCOVERY_AUDIO_H
47 #include "../Components/cs43l22/cs43l22.h"
49 #include "../../../Middlewares/ST/STM32_Audio/Addons/PDM/Inc/pdm2pcm_glo.h"
80 #define I2S3_CLK_ENABLE() __HAL_RCC_SPI3_CLK_ENABLE()
81 #define I2S3_CLK_DISABLE() __HAL_RCC_SPI3_CLK_DISABLE()
82 #define I2S3_SCK_SD_WS_AF GPIO_AF6_SPI3
83 #define I2S3_SCK_SD_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
84 #define I2S3_MCK_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
85 #define I2S3_WS_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
86 #define I2S3_WS_PIN GPIO_PIN_4
87 #define I2S3_SCK_PIN GPIO_PIN_10
88 #define I2S3_SD_PIN GPIO_PIN_12
89 #define I2S3_MCK_PIN GPIO_PIN_7
90 #define I2S3_SCK_SD_GPIO_PORT GPIOC
91 #define I2S3_WS_GPIO_PORT GPIOA
92 #define I2S3_MCK_GPIO_PORT GPIOC
95 #define I2S3_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
96 #define I2S3_DMAx_CLK_DISABLE() __HAL_RCC_DMA1_CLK_DISABLE()
97 #define I2S3_DMAx_STREAM DMA1_Stream7
98 #define I2S3_DMAx_CHANNEL DMA_CHANNEL_0
99 #define I2S3_DMAx_IRQ DMA1_Stream7_IRQn
100 #define I2S3_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD
101 #define I2S3_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD
102 #define DMA_MAX_SZE 0xFFFF
104 #define I2S3_IRQHandler DMA1_Stream7_IRQHandler
107 #define AUDIO_OUT_IRQ_PREPRIO 0x0E
114 #define I2S2_CLK_ENABLE() __HAL_RCC_SPI2_CLK_ENABLE()
115 #define I2S2_CLK_DISABLE() __HAL_RCC_SPI2_CLK_DISABLE()
116 #define I2S2_SCK_PIN GPIO_PIN_10
117 #define I2S2_SCK_GPIO_PORT GPIOB
118 #define I2S2_SCK_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
119 #define I2S2_SCK_AF GPIO_AF5_SPI2
121 #define I2S2_MOSI_PIN GPIO_PIN_3
122 #define I2S2_MOSI_GPIO_PORT GPIOC
123 #define I2S2_MOSI_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
124 #define I2S2_MOSI_AF GPIO_AF5_SPI2
127 #define I2S2_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
128 #define I2S2_DMAx_CLK_DISABLE() __HAL_RCC_DMA1_CLK_DISABLE()
129 #define I2S2_DMAx_STREAM DMA1_Stream3
130 #define I2S2_DMAx_CHANNEL DMA_CHANNEL_0
131 #define I2S2_DMAx_IRQ DMA1_Stream3_IRQn
132 #define I2S2_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD
133 #define I2S2_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD
135 #define I2S2_IRQHandler DMA1_Stream3_IRQHandler
138 #define AUDIO_IN_IRQ_PREPRIO 0x0F
144 #define AUDIODATA_SIZE 2
148 #define AUDIO_ERROR 1
149 #define AUDIO_TIMEOUT 2
152 #define DEFAULT_AUDIO_IN_FREQ I2S_AUDIOFREQ_16K
153 #define DEFAULT_AUDIO_IN_BIT_RESOLUTION 16
154 #define DEFAULT_AUDIO_IN_CHANNEL_NBR 1
155 #define DEFAULT_AUDIO_IN_VOLUME 64
158 #define INTERNAL_BUFF_SIZE 128*DEFAULT_AUDIO_IN_FREQ/16000*DEFAULT_AUDIO_IN_CHANNEL_NBR
160 #define PCM_OUT_SIZE DEFAULT_AUDIO_IN_FREQ/1000
161 #define CHANNEL_DEMUX_MASK 0x55
182 #define DMA_MAX(_X_) (((_X_) <= DMA_MAX_SZE)? (_X_):DMA_MAX_SZE)
183 #define HTONS(A) ((((uint16_t)(A) & 0xff00) >> 8) | (((uint16_t)(A) & 0x00ff) << 8))
191 uint8_t
BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq);
226 uint8_t
BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr);
void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size)
Sends n-Bytes on the I2S interface.
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_OUT_Pause(void)
Pauses the audio file stream. In case of using DMA, the DMA Pause feature is used....
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_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq)
Configures the audio peripherals.
void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq)
Update the audio frequency.
uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd)
Enables or disables the MUTE mode by software.
void BSP_AUDIO_IN_Error_Callback(void)
Audio IN Error callback function.
I2S handle Structure definition.
uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume)
Controls the current audio volume level.
void BSP_AUDIO_IN_TransferComplete_CallBack(void)
User callback when record buffer is filled.
void BSP_AUDIO_IN_MspInit(I2S_HandleTypeDef *hi2s, void *Params)
BSP AUDIO IN MSP Init.
void BSP_AUDIO_OUT_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params)
Clock Config.
__IO uint16_t AudioInVolume
uint8_t BSP_AUDIO_IN_Pause(void)
Pauses the audio file stream.
void BSP_AUDIO_IN_HalfTransfer_CallBack(void)
Manages the DMA Half 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_Resume(void)
Resumes the audio file stream.
void BSP_AUDIO_OUT_TransferComplete_CallBack(void)
Manages the DMA full Transfer complete event.
void BSP_AUDIO_IN_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params)
DeInitializes BSP_AUDIO_IN MSP.
void BSP_AUDIO_OUT_Error_CallBack(void)
Manages the DMA FIFO error event.
uint8_t BSP_AUDIO_IN_Stop(void)
Stops audio recording.
uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr)
Initializes wave recording.
void BSP_AUDIO_OUT_MspInit(I2S_HandleTypeDef *hi2s, void *Params)
AUDIO OUT I2S MSP Init.
uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option)
Stops audio playing and Power down the Audio Codec.
uint8_t BSP_AUDIO_IN_Record(uint16_t *pData, uint32_t Size)
Starts audio recording.
This file contains definitions for STM32F401-Discovery Kit's Leds and push-button hardware resources.
void BSP_AUDIO_OUT_HalfTransfer_CallBack(void)
Manages the DMA Half Transfer complete event.
uint8_t BSP_AUDIO_IN_PDMToPCM(uint16_t *PDMBuf, uint16_t *PCMBuf)
Converts audio format from PDM to PCM.
void BSP_AUDIO_OUT_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params)
De-Initializes BSP_AUDIO_OUT MSP.
uint8_t BSP_AUDIO_IN_SetVolume(uint8_t Volume)
Controls the audio in volume level.
void BSP_AUDIO_IN_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params)
Audio In Clock Config.