stm32f4_discovery_audio.h
Go to the documentation of this file.
1 
37 /* Define to prevent recursive inclusion -------------------------------------*/
38 #ifndef __STM32F4_DISCOVERY_AUDIO_H
39 #define __STM32F4_DISCOVERY_AUDIO_H
40 
41 #ifdef __cplusplus
42  extern "C" {
43 #endif
44 
45 /* Includes ------------------------------------------------------------------*/
46 /* Include audio component Driver */
47 #include "../Components/cs43l22/cs43l22.h"
48 
49 #include "stm32f4_discovery.h"
50 #include "../../../Middlewares/ST/STM32_Audio/Addons/PDM/Inc/pdm2pcm_glo.h"
51 
76 /*------------------------------------------------------------------------------
77  AUDIO OUT CONFIGURATION
78 ------------------------------------------------------------------------------*/
79 
80 /* I2S peripheral configuration defines */
81 #define I2S3 SPI3
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
95 
96 /* I2S DMA Stream definitions */
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
105 
106 #define I2S3_IRQHandler DMA1_Stream7_IRQHandler
107 
108 /* Select the interrupt preemption priority and subpriority for the DMA interrupt */
109 #define AUDIO_OUT_IRQ_PREPRIO 0x0E /* Select the preemption priority level(0 is the highest) */
110 
111 /*------------------------------------------------------------------------------
112  AUDIO IN CONFIGURATION
113 ------------------------------------------------------------------------------*/
114 /* SPI Configuration defines */
115 #define I2S2 SPI2
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
122 
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
127 
128 /* I2S DMA Stream Rx definitions */
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
136 
137 #define I2S2_IRQHandler DMA1_Stream3_IRQHandler
138 
139 /* Select the interrupt preemption priority and subpriority for the IT/DMA interrupt */
140 #define AUDIO_IN_IRQ_PREPRIO 0x0F /* Select the preemption priority level(0 is the highest) */
141 
142 /*------------------------------------------------------------------------------
143  CONFIGURATION: Audio Driver Configuration parameters
144 ------------------------------------------------------------------------------*/
145 
146 #define AUDIODATA_SIZE 2 /* 16-bits audio data size */
147 
148 /* Audio status definition */
149 #define AUDIO_OK 0
150 #define AUDIO_ERROR 1
151 #define AUDIO_TIMEOUT 2
152 
153 /* AudioFreq * DataSize (2 bytes) * NumChannels (Stereo: 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 /* Mono = 1, Stereo = 2 */
157 #define DEFAULT_AUDIO_IN_VOLUME 64
158 
159 /* PDM buffer input size */
160 #define INTERNAL_BUFF_SIZE 128*DEFAULT_AUDIO_IN_FREQ/16000*DEFAULT_AUDIO_IN_CHANNEL_NBR
161 /* PCM buffer output size */
162 #define PCM_OUT_SIZE DEFAULT_AUDIO_IN_FREQ/1000
163 #define CHANNEL_DEMUX_MASK 0x55
164 
165 /*------------------------------------------------------------------------------
166  OPTIONAL Configuration defines parameters
167 ------------------------------------------------------------------------------*/
168 
176 extern __IO uint16_t AudioInVolume;
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))
186 
193 uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq);
194 uint8_t BSP_AUDIO_OUT_Play(uint16_t* pBuffer, uint32_t Size);
195 void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size);
196 uint8_t BSP_AUDIO_OUT_Pause(void);
197 uint8_t BSP_AUDIO_OUT_Resume(void);
198 uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option);
199 uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume);
200 void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq);
201 uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd);
202 uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output);
203 
204 /* User Callbacks: user has to implement these functions in his code if they are needed. */
205 /* This function is called when the requested data has been completely transferred. */
207 
208 /* This function is called when half of the requested buffer has been transferred. */
210 
211 /* This function is called when an Interrupt due to transfer error on or peripheral
212  error occurs. */
214 
215 /* These function can be modified in case the current settings (e.g. DMA stream)
216  need to be changed for specific application needs */
217 void BSP_AUDIO_OUT_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params);
218 void BSP_AUDIO_OUT_MspInit(I2S_HandleTypeDef *hi2s, void *Params);
219 void BSP_AUDIO_OUT_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params);
220 
228 uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr);
229 uint8_t BSP_AUDIO_IN_Record(uint16_t *pData, uint32_t Size);
230 uint8_t BSP_AUDIO_IN_Stop(void);
231 uint8_t BSP_AUDIO_IN_Pause(void);
232 uint8_t BSP_AUDIO_IN_Resume(void);
233 uint8_t BSP_AUDIO_IN_SetVolume(uint8_t Volume);
234 uint8_t BSP_AUDIO_IN_PDMToPCM(uint16_t *PDMBuf, uint16_t *PCMBuf);
235 /* User Callbacks: user has to implement these functions in his code if they are needed. */
236 /* This function should be implemented by the user application.
237  It is called into this driver when the current buffer is filled to prepare the next
238  buffer pointer and its size. */
241 
242 /* This function is called when an Interrupt due to transfer error on or peripheral
243  error occurs. */
244 void BSP_AUDIO_IN_Error_Callback(void);
245 
246 /* These function can be modified in case the current settings (e.g. DMA stream)
247  need to be changed for specific application needs */
248 void BSP_AUDIO_IN_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params);
249 void BSP_AUDIO_IN_MspInit(I2S_HandleTypeDef *hi2s, void *Params);
250 void BSP_AUDIO_IN_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params);
251 
268 #ifdef __cplusplus
269 }
270 #endif
271 
272 #endif /* __STM32F4_DISCOVERY_AUDIO_H */
273 
274 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
BSP_AUDIO_OUT_Play
uint8_t BSP_AUDIO_OUT_Play(uint16_t *pBuffer, uint32_t Size)
Starts playing audio stream from a data buffer for a determined size.
Definition: stm32f4_discovery_audio.c:266
__IO
#define __IO
Definition: imxrt1050/imxrt1050-evkb/CMSIS/core_cm7.h:237
BSP_AUDIO_IN_TransferComplete_CallBack
void BSP_AUDIO_IN_TransferComplete_CallBack(void)
User callback when record buffer is filled.
Definition: stm32f4_discovery_audio.c:1001
AudioInVolume
__IO uint16_t AudioInVolume
Definition: stm32f4_discovery_audio.c:187
stm32f4_discovery.h
This file contains definitions for STM32F4-Discovery Kit's Leds and push-button hardware resources.
BSP_AUDIO_OUT_SetMute
uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd)
Enables or disables the MUTE mode by software.
Definition: stm32f4_discovery_audio.c:401
I2S_HandleTypeDef
I2S handle Structure definition.
Definition: stm32f7xx_hal_i2s.h:91
BSP_AUDIO_OUT_SetVolume
uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume)
Controls the current audio volume level.
Definition: stm32f4_discovery_audio.c:381
BSP_AUDIO_IN_Init
uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr)
Initializes wave recording.
Definition: stm32f4_discovery_audio.c:705
BSP_AUDIO_OUT_SetOutputMode
uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output)
Switch dynamically (while audio file is played) the output target (speaker or headphone).
Definition: stm32f4_discovery_audio.c:423
BSP_AUDIO_OUT_Error_CallBack
void BSP_AUDIO_OUT_Error_CallBack(void)
Manages the DMA FIFO error event.
Definition: stm32f4_discovery_audio.c:651
BSP_AUDIO_IN_PDMToPCM
uint8_t BSP_AUDIO_IN_PDMToPCM(uint16_t *PDMBuf, uint16_t *PCMBuf)
Converts audio format from PDM to PCM.
Definition: stm32f4_discovery_audio.c:814
BSP_AUDIO_IN_SetVolume
uint8_t BSP_AUDIO_IN_SetVolume(uint8_t Volume)
Controls the audio in volume level.
Definition: stm32f4_discovery_audio.c:799
BSP_AUDIO_IN_Error_Callback
void BSP_AUDIO_IN_Error_Callback(void)
Audio IN Error callback function.
Definition: stm32f4_discovery_audio.c:1021
BSP_AUDIO_IN_Record
uint8_t BSP_AUDIO_IN_Record(uint16_t *pData, uint32_t Size)
Starts audio recording.
Definition: stm32f4_discovery_audio.c:737
BSP_AUDIO_OUT_MspDeInit
void BSP_AUDIO_OUT_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params)
De-Initializes BSP_AUDIO_OUT MSP.
Definition: stm32f4_discovery_audio.c:599
BSP_AUDIO_OUT_Resume
uint8_t BSP_AUDIO_OUT_Resume(void)
Resumes the audio file streaming. WARNING: When calling BSP_AUDIO_OUT_Pause() function for pause,...
Definition: stm32f4_discovery_audio.c:325
BSP_AUDIO_IN_MspDeInit
void BSP_AUDIO_IN_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params)
DeInitializes BSP_AUDIO_IN MSP.
Definition: stm32f4_discovery_audio.c:969
BSP_AUDIO_OUT_MspInit
void BSP_AUDIO_OUT_MspInit(I2S_HandleTypeDef *hi2s, void *Params)
AUDIO OUT I2S MSP Init.
Definition: stm32f4_discovery_audio.c:529
BSP_AUDIO_IN_Stop
uint8_t BSP_AUDIO_IN_Stop(void)
Stops audio recording.
Definition: stm32f4_discovery_audio.c:754
BSP_AUDIO_OUT_Stop
uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option)
Stops audio playing and Power down the Audio Codec.
Definition: stm32f4_discovery_audio.c:349
BSP_AUDIO_OUT_TransferComplete_CallBack
void BSP_AUDIO_OUT_TransferComplete_CallBack(void)
Manages the DMA full Transfer complete event.
Definition: stm32f4_discovery_audio.c:637
BSP_AUDIO_IN_MspInit
void BSP_AUDIO_IN_MspInit(I2S_HandleTypeDef *hi2s, void *Params)
BSP AUDIO IN MSP Init.
Definition: stm32f4_discovery_audio.c:903
BSP_AUDIO_OUT_ClockConfig
void BSP_AUDIO_OUT_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params)
Clock Config.
Definition: stm32f4_discovery_audio.c:487
BSP_AUDIO_OUT_ChangeBuffer
void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size)
Sends n-Bytes on the I2S interface.
Definition: stm32f4_discovery_audio.c:288
BSP_AUDIO_IN_Pause
uint8_t BSP_AUDIO_IN_Pause(void)
Pauses the audio file stream.
Definition: stm32f4_discovery_audio.c:771
BSP_AUDIO_IN_ClockConfig
void BSP_AUDIO_IN_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params)
Audio In Clock Config.
Definition: stm32f4_discovery_audio.c:869
BSP_AUDIO_IN_Resume
uint8_t BSP_AUDIO_IN_Resume(void)
Resumes the audio file stream.
Definition: stm32f4_discovery_audio.c:784
BSP_AUDIO_OUT_Pause
uint8_t BSP_AUDIO_OUT_Pause(void)
Pauses the audio file stream. In case of using DMA, the DMA Pause feature is used....
Definition: stm32f4_discovery_audio.c:301
BSP_AUDIO_IN_HalfTransfer_CallBack
void BSP_AUDIO_IN_HalfTransfer_CallBack(void)
Manages the DMA Half Transfer complete event.
Definition: stm32f4_discovery_audio.c:1011
BSP_AUDIO_OUT_Init
uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq)
Configures the audio peripherals.
Definition: stm32f4_discovery_audio.c:214
BSP_AUDIO_OUT_SetFrequency
void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq)
Update the audio frequency.
Definition: stm32f4_discovery_audio.c:443
BSP_AUDIO_OUT_HalfTransfer_CallBack
void BSP_AUDIO_OUT_HalfTransfer_CallBack(void)
Manages the DMA Half Transfer complete event.
Definition: stm32f4_discovery_audio.c:644


picovoice_driver
Author(s):
autogenerated on Fri Apr 1 2022 02:14:51