/** * @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; }
void MX_I2S3_Init(void) { hi2s3.Instance = SPI3; hi2s3.Init.Mode = I2S_MODE_MASTER_TX; hi2s3.Init.Standard = I2S_STANDARD_PHILIPS; hi2s3.Init.DataFormat = I2S_DATAFORMAT_16B; hi2s3.Init.MCLKOutput = I2S_MCLKOUTPUT_ENABLE; hi2s3.Init.AudioFreq = I2S_AUDIOFREQ_48K; hi2s3.Init.CPOL = I2S_CPOL_LOW; hi2s3.Init.ClockSource = I2S_CLOCK_PLL; //hi2s2.Init.FullDuplexMode = I2S_FULLDUPLEXMODE_DISABLE; HAL_I2S_Init(&hi2s3); }
/** * @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); }
void i2s_init() { MEMS_MICRO_CLK_ENABLE(); /* Initialize the hAudioInI2s Instance parameter */ hMemsMicro.Instance = MEMS_MICRO_I2S; /* Disable I2S block */ __HAL_I2S_DISABLE(&hMemsMicro); /* I2S2 peripheral configuration */ hMemsMicro.Init.AudioFreq = I2S_AUDIOFREQ_48K; hMemsMicro.Init.ClockSource = I2S_CLOCK_PLL; hMemsMicro.Init.CPOL = I2S_CPOL_HIGH; hMemsMicro.Init.DataFormat = I2S_DATAFORMAT_16B; hMemsMicro.Init.MCLKOutput = I2S_MCLKOUTPUT_DISABLE; hMemsMicro.Init.Mode = I2S_MODE_MASTER_RX; hMemsMicro.Init.Standard = I2S_STANDARD_LSB; mems_micro_gpio_init(); mems_micro_dma_init(); assert(HAL_I2S_Init(&hMemsMicro) == HAL_OK); }