/** * @brief Initializes the Audio Codec audio interface (I2S) * @param AudioFreq: Audio frequency to be configured for the I2S peripheral. * @retval AUDIO_StatusTypeDef AUDIO Status */ static AUDIO_StatusTypeDef I2Sx_Init(uint32_t AudioFreq) { /* I2S peripheral configuration */ hAudioOutI2s.Init.AudioFreq = AudioFreq; hAudioOutI2s.Init.ClockSource = I2S_CLOCK_SYSCLK; hAudioOutI2s.Init.CPOL = I2S_CPOL_LOW; hAudioOutI2s.Init.DataFormat = I2S_DATAFORMAT_16B; hAudioOutI2s.Init.MCLKOutput = I2S_MCLKOUTPUT_ENABLE; hAudioOutI2s.Init.Mode = I2S_MODE_MASTER_TX; hAudioOutI2s.Init.Standard = I2S_STANDARD; hAudioOutI2s.Instance = I2Sx; /* Disable I2S block */ __HAL_I2S_DISABLE(&hAudioOutI2s); /* Initialize the I2S peripheral with the structure above */ if(HAL_I2S_GetState(&hAudioOutI2s) == HAL_I2S_STATE_RESET) { I2Sx_MspInit(); } if (HAL_I2S_Init(&hAudioOutI2s) != HAL_OK) { return AUDIO_ERROR; } return AUDIO_OK; }
/** * @brief Initializes the Audio Codec audio interface (I2S). * @param AudioFreq: Audio frequency to be configured for the I2S peripheral. * @retval None */ static void I2Sx_Init(uint32_t AudioFreq) { /* Initialize the haudio_i2s Instance parameter */ haudio_i2s.Instance = AUDIO_I2Sx; /* Disable I2S block */ __HAL_I2S_DISABLE(&haudio_i2s); haudio_i2s.Init.Mode = I2S_MODE_MASTER_TX; haudio_i2s.Init.Standard = I2S_STANDARD; haudio_i2s.Init.DataFormat = I2S_DATAFORMAT_16B; haudio_i2s.Init.AudioFreq = AudioFreq; haudio_i2s.Init.CPOL = I2S_CPOL_LOW; haudio_i2s.Init.MCLKOutput = I2S_MCLKOUTPUT_ENABLE; if(HAL_I2S_GetState(&haudio_i2s) == HAL_I2S_STATE_RESET) { I2Sx_MspInit(); } /* Init the I2S */ HAL_I2S_Init(&haudio_i2s); }