Go to the documentation of this file.
38 #ifndef __STM32F4_DISCOVERY_AUDIO_H
39 #define __STM32F4_DISCOVERY_AUDIO_H
47 #include "../Components/cs43l22/cs43l22.h"
50 #include "../../../Middlewares/ST/STM32_Audio/Addons/PDM/Inc/pdm2pcm_glo.h"
82 #define I2S3_CLK_ENABLE() __HAL_RCC_SPI3_CLK_ENABLE()
83 #define I2S3_CLK_DISABLE() __HAL_RCC_SPI3_CLK_DISABLE()
84 #define I2S3_SCK_SD_WS_AF GPIO_AF6_SPI3
85 #define I2S3_SCK_SD_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
86 #define I2S3_MCK_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
87 #define I2S3_WS_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
88 #define I2S3_WS_PIN GPIO_PIN_4
89 #define I2S3_SCK_PIN GPIO_PIN_10
90 #define I2S3_SD_PIN GPIO_PIN_12
91 #define I2S3_MCK_PIN GPIO_PIN_7
92 #define I2S3_SCK_SD_GPIO_PORT GPIOC
93 #define I2S3_WS_GPIO_PORT GPIOA
94 #define I2S3_MCK_GPIO_PORT GPIOC
97 #define I2S3_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
98 #define I2S3_DMAx_CLK_DISABLE() __HAL_RCC_DMA1_CLK_DISABLE()
99 #define I2S3_DMAx_STREAM DMA1_Stream7
100 #define I2S3_DMAx_CHANNEL DMA_CHANNEL_0
101 #define I2S3_DMAx_IRQ DMA1_Stream7_IRQn
102 #define I2S3_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD
103 #define I2S3_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD
104 #define DMA_MAX_SZE 0xFFFF
106 #define I2S3_IRQHandler DMA1_Stream7_IRQHandler
109 #define AUDIO_OUT_IRQ_PREPRIO 0x0E
116 #define I2S2_CLK_ENABLE() __HAL_RCC_SPI2_CLK_ENABLE()
117 #define I2S2_CLK_DISABLE() __HAL_RCC_SPI2_CLK_DISABLE()
118 #define I2S2_SCK_PIN GPIO_PIN_10
119 #define I2S2_SCK_GPIO_PORT GPIOB
120 #define I2S2_SCK_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
121 #define I2S2_SCK_AF GPIO_AF5_SPI2
123 #define I2S2_MOSI_PIN GPIO_PIN_3
124 #define I2S2_MOSI_GPIO_PORT GPIOC
125 #define I2S2_MOSI_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
126 #define I2S2_MOSI_AF GPIO_AF5_SPI2
129 #define I2S2_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
130 #define I2S2_DMAx_CLK_DISABLE() __HAL_RCC_DMA1_CLK_DISABLE()
131 #define I2S2_DMAx_STREAM DMA1_Stream3
132 #define I2S2_DMAx_CHANNEL DMA_CHANNEL_0
133 #define I2S2_DMAx_IRQ DMA1_Stream3_IRQn
134 #define I2S2_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD
135 #define I2S2_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD
137 #define I2S2_IRQHandler DMA1_Stream3_IRQHandler
140 #define AUDIO_IN_IRQ_PREPRIO 0x0F
146 #define AUDIODATA_SIZE 2
150 #define AUDIO_ERROR 1
151 #define AUDIO_TIMEOUT 2
154 #define DEFAULT_AUDIO_IN_FREQ I2S_AUDIOFREQ_16K
155 #define DEFAULT_AUDIO_IN_BIT_RESOLUTION 16
156 #define DEFAULT_AUDIO_IN_CHANNEL_NBR 1
157 #define DEFAULT_AUDIO_IN_VOLUME 64
160 #define INTERNAL_BUFF_SIZE 128*DEFAULT_AUDIO_IN_FREQ/16000*DEFAULT_AUDIO_IN_CHANNEL_NBR
162 #define PCM_OUT_SIZE DEFAULT_AUDIO_IN_FREQ/1000
163 #define CHANNEL_DEMUX_MASK 0x55
184 #define DMA_MAX(_X_) (((_X_) <= DMA_MAX_SZE)? (_X_):DMA_MAX_SZE)
185 #define HTONS(A) ((((uint16_t)(A) & 0xff00) >> 8) | (((uint16_t)(A) & 0x00ff) << 8))
193 uint8_t
BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq);
228 uint8_t
BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr);
uint8_t BSP_AUDIO_OUT_Play(uint16_t *pBuffer, uint32_t Size)
Starts playing audio stream from a data buffer for a determined size.
void BSP_AUDIO_IN_TransferComplete_CallBack(void)
User callback when record buffer is filled.
__IO uint16_t AudioInVolume
This file contains definitions for STM32F4-Discovery Kit's Leds and push-button hardware resources.
uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd)
Enables or disables the MUTE mode by software.
I2S handle Structure definition.
uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume)
Controls the current audio volume level.
uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr)
Initializes wave recording.
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_Error_CallBack(void)
Manages the DMA FIFO error event.
uint8_t BSP_AUDIO_IN_PDMToPCM(uint16_t *PDMBuf, uint16_t *PCMBuf)
Converts audio format from PDM to PCM.
uint8_t BSP_AUDIO_IN_SetVolume(uint8_t Volume)
Controls the audio in volume level.
void BSP_AUDIO_IN_Error_Callback(void)
Audio IN Error callback function.
uint8_t BSP_AUDIO_IN_Record(uint16_t *pData, uint32_t Size)
Starts audio recording.
void BSP_AUDIO_OUT_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params)
De-Initializes BSP_AUDIO_OUT MSP.
uint8_t BSP_AUDIO_OUT_Resume(void)
Resumes the audio file streaming. WARNING: When calling BSP_AUDIO_OUT_Pause() function for pause,...
void BSP_AUDIO_IN_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params)
DeInitializes BSP_AUDIO_IN MSP.
void BSP_AUDIO_OUT_MspInit(I2S_HandleTypeDef *hi2s, void *Params)
AUDIO OUT I2S MSP Init.
uint8_t BSP_AUDIO_IN_Stop(void)
Stops audio recording.
uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option)
Stops audio playing and Power down the Audio Codec.
void BSP_AUDIO_OUT_TransferComplete_CallBack(void)
Manages the DMA full Transfer complete event.
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.
void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size)
Sends n-Bytes on the I2S interface.
uint8_t BSP_AUDIO_IN_Pause(void)
Pauses the audio file stream.
void BSP_AUDIO_IN_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params)
Audio In Clock Config.
uint8_t BSP_AUDIO_IN_Resume(void)
Resumes the audio file stream.
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_IN_HalfTransfer_CallBack(void)
Manages the DMA Half Transfer complete event.
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.
void BSP_AUDIO_OUT_HalfTransfer_CallBack(void)
Manages the DMA Half Transfer complete event.