STM32L476G-Discovery board drivers V1.0.0
Dependents: DiscoLogger DISCO_L476VG_GlassLCD DISCO_L476VG_MicrophoneRecorder DISCO_L476VG_UART ... more
stm32l476g_discovery_audio.h
00001 /** 00002 ****************************************************************************** 00003 * @file stm32l476g_discovery_audio.h 00004 * @author MCD Application Team 00005 * @brief This file contains the common defines and functions prototypes for 00006 * the stm32l476g_discovery_audio.c driver. 00007 ****************************************************************************** 00008 * @attention 00009 * 00010 * <h2><center>© Copyright (c) 2016 STMicroelectronics. 00011 * All rights reserved.</center></h2> 00012 * 00013 * This software component is licensed by ST under BSD 3-Clause license, 00014 * the "License"; You may not use this file except in compliance with the 00015 * License. You may obtain a copy of the License at: 00016 * opensource.org/licenses/BSD-3-Clause 00017 * 00018 ****************************************************************************** 00019 */ 00020 00021 /* Define to prevent recursive inclusion -------------------------------------*/ 00022 #ifndef __STM32L476G_DISCOVERY_AUDIO_H 00023 #define __STM32L476G_DISCOVERY_AUDIO_H 00024 00025 #ifdef __cplusplus 00026 extern "C" { 00027 #endif 00028 00029 /* Includes ------------------------------------------------------------------*/ 00030 #if defined(BSP_AUDIO_USE_RTOS) 00031 #include "k_mem.h" 00032 #else 00033 #include <stdlib.h> 00034 #endif 00035 /* Include audio component Driver */ 00036 #include "../Components/cs43l22/cs43l22.h" 00037 #include "stm32l476g_discovery.h" 00038 00039 /** @addtogroup BSP 00040 * @{ 00041 */ 00042 00043 /** @addtogroup STM32L476G_DISCOVERY 00044 * @{ 00045 */ 00046 00047 /** @addtogroup STM32L476G_DISCOVERY_AUDIO 00048 * @{ 00049 */ 00050 00051 /** @defgroup STM32L476G_DISCOVERY_AUDIO_Exported_Types Exported Types 00052 * @{ 00053 */ 00054 typedef void (*Audio_CallbackTypeDef)(void); 00055 00056 /** 00057 * @} 00058 */ 00059 00060 /** @defgroup STM32L476G_DISCOVERY_AUDIO_Exported_Constants Exported Constants 00061 * @{ 00062 */ 00063 /** @defgroup BSP_Audio_Out_Option BSP Audio Out Option 00064 * @{ 00065 */ 00066 #define BSP_AUDIO_OUT_CIRCULARMODE ((uint32_t)0x00000001) /* BUFFER CIRCULAR MODE */ 00067 #define BSP_AUDIO_OUT_NORMALMODE ((uint32_t)0x00000002) /* BUFFER NORMAL MODE */ 00068 #define BSP_AUDIO_OUT_STEREOMODE ((uint32_t)0x00000004) /* STEREO MODE */ 00069 #define BSP_AUDIO_OUT_MONOMODE ((uint32_t)0x00000008) /* MONO MODE */ 00070 /** 00071 * @} 00072 */ 00073 00074 /** @defgroup BSP_Audio_Sample_Rate BSP Audio Sample Rate 00075 * @{ 00076 */ 00077 #define BSP_AUDIO_FREQUENCY_96K SAI_AUDIO_FREQUENCY_96K 00078 #define BSP_AUDIO_FREQUENCY_48K SAI_AUDIO_FREQUENCY_48K 00079 #define BSP_AUDIO_FREQUENCY_44K SAI_AUDIO_FREQUENCY_44K 00080 #define BSP_AUDIO_FREQUENCY_32K SAI_AUDIO_FREQUENCY_32K 00081 #define BSP_AUDIO_FREQUENCY_22K SAI_AUDIO_FREQUENCY_22K 00082 #define BSP_AUDIO_FREQUENCY_16K SAI_AUDIO_FREQUENCY_16K 00083 #define BSP_AUDIO_FREQUENCY_11K SAI_AUDIO_FREQUENCY_11K 00084 #define BSP_AUDIO_FREQUENCY_8K SAI_AUDIO_FREQUENCY_8K 00085 /** 00086 * @} 00087 */ 00088 /*------------------------------------------------------------------------------ 00089 USER SAI defines parameters 00090 -----------------------------------------------------------------------------*/ 00091 /* SAI peripheral configuration defines */ 00092 #define AUDIO_SAIx SAI1_Block_A 00093 #define AUDIO_SAIx_CLK_ENABLE() __HAL_RCC_SAI1_CLK_ENABLE() 00094 #define AUDIO_SAIx_CLK_DISABLE() __HAL_RCC_SAI1_CLK_DISABLE() 00095 #define AUDIO_SAIx_MCK_SCK_SD_FS_AF GPIO_AF13_SAI1 00096 00097 #define AUDIO_SAIx_MCK_SCK_SD_FS_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE() 00098 #define AUDIO_SAIx_MCK_SCK_SD_FS_DISABLE() __HAL_RCC_GPIOE_CLK_DISABLE() 00099 #define AUDIO_SAIx_FS_PIN GPIO_PIN_4 00100 #define AUDIO_SAIx_SCK_PIN GPIO_PIN_5 00101 #define AUDIO_SAIx_SD_PIN GPIO_PIN_6 00102 #define AUDIO_SAIx_MCK_PIN GPIO_PIN_2 00103 #define AUDIO_SAIx_MCK_SCK_SD_FS_GPIO_PORT GPIOE 00104 00105 /* SAI DMA Channel definitions */ 00106 #define AUDIO_SAIx_DMAx_CLK_ENABLE() __HAL_RCC_DMA2_CLK_ENABLE() 00107 #define AUDIO_SAIx_DMAx_CLK_DISABLE() __HAL_RCC_DMA2_CLK_DISABLE() 00108 #define AUDIO_SAIx_DMAx_CHANNEL DMA2_Channel1 00109 #define AUDIO_SAIx_DMAx_IRQ DMA2_Channel1_IRQn 00110 #define AUDIO_SAIx_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD 00111 #define AUDIO_SAIx_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD 00112 #define DMA_MAX_SZE (uint32_t)0xFFFF 00113 00114 #define AUDIO_SAIx_DMAx_IRQHandler DMA2_Channel1_IRQHandler 00115 00116 /* Select the interrupt preemption priority for the DMA interrupt */ 00117 #define AUDIO_OUT_IRQ_PREPRIO 5 /* Select the preemption priority level(0 is the highest) */ 00118 00119 /* Disable SAIx PLL */ 00120 #define AUDIO_SAIx_PLL_DISABLE() HAL_RCCEx_DisablePLLSAI1() 00121 00122 /*------------------------------------------------------------------------------ 00123 AUDIO IN CONFIGURATION 00124 ------------------------------------------------------------------------------*/ 00125 /* DFSDM Configuration defines */ 00126 #define AUDIO_DFSDMx_LEFT_CHANNEL DFSDM1_Channel2 00127 #define AUDIO_DFSDMx_LEFT_FILTER DFSDM1_Filter0 00128 #define AUDIO_DFSDMx_CLK_ENABLE() __HAL_RCC_DFSDM1_CLK_ENABLE() 00129 #define AUDIO_DFSDMx_CLK_DISABLE() __HAL_RCC_DFSDM1_CLK_DISABLE() 00130 #define AUDIO_DFSDMx_CKOUT_PIN GPIO_PIN_9 00131 #define AUDIO_DFSDMx_DMIC_DATIN_PIN GPIO_PIN_7 00132 #define AUDIO_DFSDMx_CKOUT_DMIC_DATIN_GPIO_PORT GPIOE 00133 #define AUDIO_DFSDMx_CKOUT_DMIC_DATIN_GPIO_CLK_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE() 00134 #define AUDIO_DFSDMx_CKOUT_DMIC_DATIN_GPIO_CLK_DISABLE() __HAL_RCC_GPIOE_CLK_DISABLE() 00135 #define AUDIO_DFSDMx_CKOUT_DMIC_DATIN_AF GPIO_AF6_DFSDM1 00136 00137 /* DFSDM DMA Right and Left channels definitions */ 00138 #define AUDIO_DFSDMx_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE() 00139 #define AUDIO_DFSDMx_DMAx_CLK_DISABLE() __HAL_RCC_DMA1_CLK_DISABLE() 00140 #define AUDIO_DFSDMx_DMAx_LEFT_CHANNEL DMA1_Channel4 00141 #define AUDIO_DFSDMx_DMAx_LEFT_IRQ DMA1_Channel4_IRQn 00142 #define AUDIO_DFSDMx_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_WORD 00143 #define AUDIO_DFSDMx_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_WORD 00144 00145 #define AUDIO_DFSDM_DMAx_LEFT_IRQHandler DMA1_Channel4_IRQHandler 00146 00147 /* Select the interrupt preemption priority and subpriority for the IT/DMA interrupt */ 00148 #define AUDIO_IN_IRQ_PREPRIO 6 /* Select the preemption priority level(0 is the highest) */ 00149 00150 /*------------------------------------------------------------------------------ 00151 CONFIGURATION: Audio Driver Configuration parameters 00152 ------------------------------------------------------------------------------*/ 00153 00154 #define AUDIODATA_SIZE 2 /* 16-bits audio data size */ 00155 00156 /* Audio status definition */ 00157 #define AUDIO_OK 0 00158 #define AUDIO_ERROR 1 00159 #define AUDIO_TIMEOUT 2 00160 00161 /* AudioFreq * DataSize (2 bytes) * NumChannels (Stereo: 2) */ 00162 #define DEFAULT_AUDIO_IN_FREQ BSP_AUDIO_FREQUENCY_16K 00163 #define DEFAULT_AUDIO_IN_BIT_RESOLUTION 16 00164 #define DEFAULT_AUDIO_IN_CHANNEL_NBR 1 /* Mono = 1, Stereo = 2 */ 00165 #define DEFAULT_AUDIO_IN_VOLUME 64 00166 00167 /*------------------------------------------------------------------------------ 00168 OPTIONAL Configuration defines parameters 00169 ------------------------------------------------------------------------------*/ 00170 00171 /* Delay for the Codec to be correctly reset */ 00172 #define CODEC_RESET_DELAY 5 00173 00174 /** 00175 * @} 00176 */ 00177 00178 /** @defgroup STM32L476G_DISCOVERY_AUDIO_Exported_Variables Exported Variables 00179 * @{ 00180 */ 00181 extern SAI_HandleTypeDef BSP_AUDIO_hSai; 00182 extern DFSDM_Filter_HandleTypeDef BSP_AUDIO_hDfsdmLeftFilter; 00183 00184 /** 00185 * @} 00186 */ 00187 00188 /** @defgroup STM32L476G_DISCOVERY_AUDIO_Exported_Macros Exported Macros 00189 * @{ 00190 */ 00191 #define DMA_MAX(_X_) (((_X_) <= DMA_MAX_SZE)? (_X_):DMA_MAX_SZE) 00192 00193 /** 00194 * @} 00195 */ 00196 00197 /* Exported functions --------------------------------------------------------*/ 00198 /** @defgroup STM32L476G_DISCOVERY_AUDIO_Exported_Functions Exported Functions 00199 * @{ 00200 */ 00201 uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq); 00202 uint8_t BSP_AUDIO_OUT_DeInit(void); 00203 uint8_t BSP_AUDIO_OUT_Play(uint16_t *pData, uint32_t Size); 00204 uint8_t BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size); 00205 uint8_t BSP_AUDIO_OUT_Pause(void); 00206 uint8_t BSP_AUDIO_OUT_Resume(void); 00207 uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option); 00208 uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume); 00209 uint8_t BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq); 00210 void BSP_AUDIO_OUT_ChangeAudioConfig(uint32_t AudioOutOption); 00211 uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd); 00212 uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output); 00213 void BSP_AUDIO_OUT_RegisterCallbacks(Audio_CallbackTypeDef ErrorCallback, 00214 Audio_CallbackTypeDef HalfTransferCallback, 00215 Audio_CallbackTypeDef TransferCompleteCallback); 00216 00217 uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr); 00218 uint8_t BSP_AUDIO_IN_DeInit(void); 00219 uint8_t BSP_AUDIO_IN_Record(uint16_t *pData, uint32_t Size); 00220 uint8_t BSP_AUDIO_IN_SetFrequency(uint32_t AudioFreq); 00221 uint8_t BSP_AUDIO_IN_Stop(void); 00222 uint8_t BSP_AUDIO_IN_Pause(void); 00223 uint8_t BSP_AUDIO_IN_Resume(void); 00224 void BSP_AUDIO_IN_RegisterCallbacks(Audio_CallbackTypeDef ErrorCallback, 00225 Audio_CallbackTypeDef HalfTransferCallback, 00226 Audio_CallbackTypeDef TransferCompleteCallback); 00227 /** 00228 * @} 00229 */ 00230 00231 /** 00232 * @} 00233 */ 00234 00235 /** 00236 * @} 00237 */ 00238 00239 /** 00240 * @} 00241 */ 00242 00243 #ifdef __cplusplus 00244 } 00245 #endif 00246 00247 #endif /* __STM32L476G_DISCOVERY_AUDIO_H */ 00248 00249 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Generated on Tue Jul 12 2022 18:37:21 by 1.7.2