/** * @brief Initializes the Audio Codec audio interface (I2S) * @param AudioFreq: Audio frequency to be configured for the I2S peripheral. */ static void I2SOUT_Init(uint32_t AudioFreq) { /* Initialize the hAudioOutI2s Instance parameter */ hAudioOutI2s.Instance = I2SOUT; /* Disable I2S block */ __HAL_I2S_DISABLE(&hAudioOutI2s); /* Perform MSP initialization at first function call */ if(HAL_I2S_GetState(&hAudioOutI2s) == HAL_I2S_STATE_RESET) { I2SOUT_MspInit(); } /* I2SOUT peripheral configuration */ hAudioOutI2s.Init.AudioFreq = AudioFreq; 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; /* Initialize the I2S peripheral with the structure above */ HAL_I2S_Init(&hAudioOutI2s); }
/** * @brief Initializes the Audio Codec audio interface (I2S) * @note This function assumes that the I2S input clock (through PLL_R in * Devices RevA/Z and through dedicated PLLI2S_R in Devices RevB/Y) * is already configured and ready to be used. * @param AudioFreq: Audio frequency to be configured for the I2S peripheral. * @retval None */ static void I2S2_Init(uint32_t AudioFreq) { /* Initialize the hAudioInI2s Instance parameter */ hAudioInI2s.Instance = I2S2; /* Disable I2S block */ __HAL_I2S_DISABLE(&hAudioInI2s); /* I2S2 peripheral configuration */ hAudioInI2s.Init.AudioFreq = 2 * AudioFreq; hAudioInI2s.Init.ClockSource = I2S_CLOCK_PLL; hAudioInI2s.Init.CPOL = I2S_CPOL_HIGH; hAudioInI2s.Init.DataFormat = I2S_DATAFORMAT_16B; hAudioInI2s.Init.MCLKOutput = I2S_MCLKOUTPUT_DISABLE; hAudioInI2s.Init.Mode = I2S_MODE_MASTER_RX; hAudioInI2s.Init.Standard = I2S_STANDARD_LSB; /* Initialize the I2S peripheral with the structure above */ if(HAL_I2S_GetState(&hAudioInI2s) == HAL_I2S_STATE_RESET) { I2S2_MspInit(); } HAL_I2S_Init(&hAudioInI2s); }
/** * @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); }