/** ****************************************************************************** * @file stm3210e_eval_audio.h * @author MCD Application Team * @version V7.0.0 * @date 14-April-2017 * @brief This file contains the common defines and functions prototypes for * stm3210e_eval_audio.c driver. ****************************************************************************** * @attention * * Copyright (c) 2016 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __STM3210E_EVAL_AUDIO_H #define __STM3210E_EVAL_AUDIO_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ /* Include audio component Driver */ #include "../Components/ak4343/ak4343.h" #include "stm3210e_eval.h" /** @addtogroup BSP * @{ */ /** @addtogroup STM3210E_EVAL * @{ */ /** @addtogroup STM3210E_EVAL_AUDIO * @{ */ /** @defgroup STM3210E_EVAL_AUDIO_OUT_Exported_Constants STM3210E EVAL AUDIO OUT Exported Constants * @{ */ /*------------------------------------------------------------------------------ AUDIO OUT CONFIGURATION ------------------------------------------------------------------------------*/ /* I2S peripheral configuration defines */ #define I2SOUT SPI2 #define I2SOUT_CLK_ENABLE() __HAL_RCC_SPI2_CLK_ENABLE() #define I2SOUT_CLK_DISABLE() __HAL_RCC_SPI2_CLK_DISABLE() #define I2SOUT_SCK_SD_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define I2SOUT_MCK_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() #define I2SOUT_WS_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define I2SOUT_WS_PIN GPIO_PIN_12 /* PB.12*/ #define I2SOUT_SCK_PIN GPIO_PIN_13 /* PB.13*/ #define I2SOUT_SD_PIN GPIO_PIN_15 /* PB.15*/ #define I2SOUT_MCK_PIN GPIO_PIN_6 /* PC.06*/ #define I2SOUT_SCK_SD_GPIO_PORT GPIOB #define I2SOUT_WS_GPIO_PORT GPIOB #define I2SOUT_MCK_GPIO_PORT GPIOC /* I2S DMA Channel definitions */ #define I2SOUT_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE() #define I2SOUT_DMAx_CHANNEL DMA1_Channel5 #define I2SOUT_DMAx_IRQ DMA1_Channel5_IRQn #define I2SOUT_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD #define I2SOUT_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD #define DMA_MAX_SZE 0xFFFF #define I2SOUT_IRQHandler DMA1_Channel5_IRQHandler /* Select the interrupt preemption priority and subpriority for the DMA interrupt */ #define AUDIO_OUT_IRQ_PREPRIO 0xE /* Select the preemption priority level(0 is the highest) */ /*------------------------------------------------------------------------------ CONFIGURATION: Audio Driver Configuration parameters ------------------------------------------------------------------------------*/ /* Audio status definition */ #define AUDIO_OK 0 #define AUDIO_ERROR 1 #define AUDIO_TIMEOUT 2 /*------------------------------------------------------------------------------ OPTIONAL Configuration defines parameters ------------------------------------------------------------------------------*/ /** * @} */ /** @defgroup STM3210E_EVAL_AUDIO_Exported_Macros STM3210E EVAL AUDIO Exported Macros * @{ */ #define DMA_MAX(_X_) (((_X_) <= DMA_MAX_SZE)? (_X_):DMA_MAX_SZE) /** * @} */ /** @addtogroup STM3210E_EVAL_AUDIO_OUT_Exported_Functions * @{ */ uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq); void BSP_AUDIO_OUT_DeInit(void); uint8_t BSP_AUDIO_OUT_Play(uint16_t* pBuffer, uint32_t Size); void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size); uint8_t BSP_AUDIO_OUT_Pause(void); uint8_t BSP_AUDIO_OUT_Resume(void); uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option); uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume); void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq); uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Command); uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output); /* User Callbacks: user has to implement these functions in his code if they are needed. */ /* This function is called when the requested data has been completely transferred.*/ void BSP_AUDIO_OUT_TransferComplete_CallBack(void); /* This function is called when half of the requested buffer has been transferred. */ void BSP_AUDIO_OUT_HalfTransfer_CallBack(void); /* This function is called when an Interrupt due to transfer error on or peripheral error occurs. */ void BSP_AUDIO_OUT_Error_CallBack(void); /* These function can be modified in case the current settings need to be changed for specific application needs */ void BSP_AUDIO_OUT_MspInit(I2S_HandleTypeDef *hi2s, void *Params); void BSP_AUDIO_OUT_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params); /** * @} */ /** * @} */ /** * @} */ /** * @} */ #ifdef __cplusplus } #endif #endif /* __STM3210E_EVAL_AUDIO_H */