stm32f411e_discovery_audio.h
Go to the documentation of this file.
1 
37 /* Define to prevent recursive inclusion -------------------------------------*/
38 #ifndef __STM32F411E_DISCOVERY_AUDIO_H
39 #define __STM32F411E_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 #include "stm32f411e_discovery.h"
49 #include "../../../Middlewares/ST/STM32_Audio/Addons/PDM/Inc/pdm2pcm_glo.h"
50 
74 /*------------------------------------------------------------------------------
75  AUDIO OUT CONFIGURATION
76 ------------------------------------------------------------------------------*/
77 
78 /* I2S peripheral configuration defines */
79 #define I2S3 SPI3
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
93 
94 /* I2S DMA Stream definitions */
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
103 
104 #define I2S3_IRQHandler DMA1_Stream7_IRQHandler
105 
106 /* Select the interrupt preemption priority and subpriority for the DMA interrupt */
107 #define AUDIO_OUT_IRQ_PREPRIO 0x0E /* Select the preemption priority level(0 is the highest) */
108 
109 /*------------------------------------------------------------------------------
110  AUDIO IN CONFIGURATION
111 ------------------------------------------------------------------------------*/
112 /* SPI Configuration defines */
113 #define I2S2 SPI2
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
120 
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
125 
126 /* I2S DMA Stream Rx definitions */
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
134 
135 #define I2S2_IRQHandler DMA1_Stream3_IRQHandler
136 
137 /* Select the interrupt preemption priority and subpriority for the IT/DMA interrupt */
138 #define AUDIO_IN_IRQ_PREPRIO 0x0F /* Select the preemption priority level(0 is the highest) */
139 
140 /*------------------------------------------------------------------------------
141  CONFIGURATION: Audio Driver Configuration parameters
142 ------------------------------------------------------------------------------*/
143 
144 #define AUDIODATA_SIZE 2 /* 16-bits audio data size */
145 
146 /* Audio status definition */
147 #define AUDIO_OK 0
148 #define AUDIO_ERROR 1
149 #define AUDIO_TIMEOUT 2
150 
151 /* AudioFreq * DataSize (2 bytes) * NumChannels (Stereo: 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 /* Mono = 1, Stereo = 2 */
155 #define DEFAULT_AUDIO_IN_VOLUME 64
156 
157 /* PDM buffer input size */
158 #define INTERNAL_BUFF_SIZE 128*DEFAULT_AUDIO_IN_FREQ/16000*DEFAULT_AUDIO_IN_CHANNEL_NBR
159 /* PCM buffer output size */
160 #define PCM_OUT_SIZE DEFAULT_AUDIO_IN_FREQ/1000
161 #define CHANNEL_DEMUX_MASK 0x55
162 
163 /*------------------------------------------------------------------------------
164  OPTIONAL Configuration defines parameters
165 ------------------------------------------------------------------------------*/
166 
174 extern __IO uint16_t AudioInVolume;
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))
184 
191 uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq);
192 uint8_t BSP_AUDIO_OUT_Play(uint16_t *pBuffer, uint32_t Size);
193 void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size);
194 uint8_t BSP_AUDIO_OUT_Pause(void);
195 uint8_t BSP_AUDIO_OUT_Resume(void);
196 uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option);
197 uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume);
198 void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq);
199 uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd);
200 uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output);
201 
202 /* User Callbacks: user has to implement these functions in his code if they are needed. */
203 /* This function is called when the requested data has been completely transferred. */
205 
206 /* This function is called when half of the requested buffer has been transferred. */
208 
209 /* This function is called when an Interrupt due to transfer error on or peripheral
210  error occurs. */
212 
213 /* These function can be modified in case the current settings (e.g. DMA stream)
214  need to be changed for specific application needs */
215 void BSP_AUDIO_OUT_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params);
216 void BSP_AUDIO_OUT_MspInit(I2S_HandleTypeDef *hi2s, void *Params);
217 void BSP_AUDIO_OUT_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params);
218 
226 uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr);
227 uint8_t BSP_AUDIO_IN_Record(uint16_t *pData, uint32_t Size);
228 uint8_t BSP_AUDIO_IN_Stop(void);
229 uint8_t BSP_AUDIO_IN_Pause(void);
230 uint8_t BSP_AUDIO_IN_Resume(void);
231 uint8_t BSP_AUDIO_IN_SetVolume(uint8_t Volume);
232 uint8_t BSP_AUDIO_IN_PDMToPCM(uint16_t *PDMBuf, uint16_t *PCMBuf);
233 /* User Callbacks: user has to implement these functions in his code if they are needed. */
234 /* This function should be implemented by the user application.
235  It is called into this driver when the current buffer is filled to prepare the next
236  buffer pointer and its size. */
239 
240 /* This function is called when an Interrupt due to transfer error on or peripheral
241  error occurs. */
242 void BSP_AUDIO_IN_Error_Callback(void);
243 
244 /* These function can be modified in case the current settings (e.g. DMA stream)
245  need to be changed for specific application needs */
246 void BSP_AUDIO_IN_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params);
247 void BSP_AUDIO_IN_MspInit(I2S_HandleTypeDef *hi2s, void *Params);
248 void BSP_AUDIO_IN_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params);
249 
266 #ifdef __cplusplus
267 }
268 #endif
269 
270 #endif /* __STM32F411E_DISCOVERY_AUDIO_H */
271 
272 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
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
__IO
#define __IO
Definition: imxrt1050/imxrt1050-evkb/CMSIS/core_cm7.h:237
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_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_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
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_SetMute
uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd)
Enables or disables the MUTE mode by software.
Definition: stm32f4_discovery_audio.c:401
BSP_AUDIO_IN_Error_Callback
void BSP_AUDIO_IN_Error_Callback(void)
Audio IN Error callback function.
Definition: stm32f4_discovery_audio.c:1021
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_TransferComplete_CallBack
void BSP_AUDIO_IN_TransferComplete_CallBack(void)
User callback when record buffer is filled.
Definition: stm32f4_discovery_audio.c:1001
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
AudioInVolume
__IO uint16_t AudioInVolume
Definition: stm32f4_discovery_audio.c:187
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_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_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_Resume
uint8_t BSP_AUDIO_IN_Resume(void)
Resumes the audio file stream.
Definition: stm32f4_discovery_audio.c:784
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_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_Error_CallBack
void BSP_AUDIO_OUT_Error_CallBack(void)
Manages the DMA FIFO error event.
Definition: stm32f4_discovery_audio.c:651
BSP_AUDIO_IN_Stop
uint8_t BSP_AUDIO_IN_Stop(void)
Stops audio recording.
Definition: stm32f4_discovery_audio.c:754
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_MspInit
void BSP_AUDIO_OUT_MspInit(I2S_HandleTypeDef *hi2s, void *Params)
AUDIO OUT I2S MSP Init.
Definition: stm32f4_discovery_audio.c:529
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_IN_Record
uint8_t BSP_AUDIO_IN_Record(uint16_t *pData, uint32_t Size)
Starts audio recording.
Definition: stm32f4_discovery_audio.c:737
stm32f411e_discovery.h
This file contains definitions for STM32F401-Discovery Kit's Leds and push-button hardware resources.
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
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_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_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_ClockConfig
void BSP_AUDIO_IN_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params)
Audio In Clock Config.
Definition: stm32f4_discovery_audio.c:869


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