From 5f61eb0157a685b81064203f3d2ad6c51d6f33f9 Mon Sep 17 00:00:00 2001 From: unicod Date: Fri, 27 Feb 2026 20:46:27 +0100 Subject: [PATCH] I2S2 MCLK out enabled - PCLK doubled to 40.96 MHz - fs: 32 kHz --- Core/Src/main.c | 17 ++++++++--- DigitalAudioH533.ioc | 67 ++++++++++++++++++++++++-------------------- 2 files changed, 49 insertions(+), 35 deletions(-) diff --git a/Core/Src/main.c b/Core/Src/main.c index 12ae8a6..355c7d5 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -328,9 +328,9 @@ void PeriphCommonClock_Config(void) LL_RCC_PLL2_SetVCOInputRange(LL_RCC_PLLINPUTRANGE_8_16); LL_RCC_PLL2_SetVCOOutputRange(LL_RCC_PLLVCORANGE_WIDE); LL_RCC_PLL2_SetM(10); - LL_RCC_PLL2_SetN(192); - LL_RCC_PLL2_SetP(15); - LL_RCC_PLL2_SetQ(12); + LL_RCC_PLL2_SetN(256); + LL_RCC_PLL2_SetP(10); + LL_RCC_PLL2_SetQ(10); LL_RCC_PLL2_SetR(2); LL_RCC_PLL2P_Enable(); LL_RCC_PLL2_Enable(); @@ -508,6 +508,7 @@ static void MX_I2S2_Init(void) PB12 ------> I2S2_WS PB13 ------> I2S2_CK PB15 ------> I2S2_SDO + PC6 ------> I2S2_MCK */ GPIO_InitStruct.Pin = LL_GPIO_PIN_2; GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; @@ -525,6 +526,14 @@ static void MX_I2S2_Init(void) GPIO_InitStruct.Alternate = LL_GPIO_AF_5; LL_GPIO_Init(GPIOB, &GPIO_InitStruct); + GPIO_InitStruct.Pin = LL_GPIO_PIN_6; + GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH; + GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + LL_GPIO_Init(GPIOC, &GPIO_InitStruct); + /* I2S2 DMA Init */ /* GPDMA2_REQUEST_SPI2_TX Init */ @@ -576,7 +585,7 @@ static void MX_I2S2_Init(void) I2S_InitStruct.Mode = LL_I2S_MODE_MASTER_FULL_DUPLEX; I2S_InitStruct.Standard = LL_I2S_STANDARD_PHILIPS; I2S_InitStruct.DataFormat = LL_I2S_DATAFORMAT_32B; - I2S_InitStruct.MCLKOutput = LL_I2S_MCLK_OUTPUT_DISABLE; + I2S_InitStruct.MCLKOutput = LL_I2S_MCLK_OUTPUT_ENABLE; I2S_InitStruct.AudioFreq = 32000; I2S_InitStruct.ClockPolarity = LL_I2S_POLARITY_LOW; LL_I2S_Init(SPI2, &I2S_InitStruct); diff --git a/DigitalAudioH533.ioc b/DigitalAudioH533.ioc index a5f65f5..24554d3 100644 --- a/DigitalAudioH533.ioc +++ b/DigitalAudioH533.ioc @@ -116,37 +116,38 @@ Mcu.Pin11=PB12 Mcu.Pin12=PB13 Mcu.Pin13=PB14 Mcu.Pin14=PB15 -Mcu.Pin15=PA13(JTMS/SWDIO) -Mcu.Pin16=PA14(JTCK/SWCLK) -Mcu.Pin17=PC11 -Mcu.Pin18=PC12 -Mcu.Pin19=PD2 +Mcu.Pin15=PC6 +Mcu.Pin16=PA13(JTMS/SWDIO) +Mcu.Pin17=PA14(JTCK/SWCLK) +Mcu.Pin18=PC11 +Mcu.Pin19=PC12 Mcu.Pin2=PH0-OSC_IN(PH0) -Mcu.Pin20=PB6 -Mcu.Pin21=PB7 -Mcu.Pin22=PB8 -Mcu.Pin23=VP_CORTEX_M33_NS_VS_Hclk -Mcu.Pin24=VP_GPDMA1_VS_GPDMACH0 -Mcu.Pin25=VP_GPDMA1_VS_GPDMACH1 -Mcu.Pin26=VP_GPDMA1_VS_GPDMACH2 -Mcu.Pin27=VP_GPDMA1_VS_GPDMACH3 -Mcu.Pin28=VP_GPDMA2_VS_GPDMACH0 -Mcu.Pin29=VP_ICACHE_VS_ICACHE +Mcu.Pin20=PD2 +Mcu.Pin21=PB6 +Mcu.Pin22=PB7 +Mcu.Pin23=PB8 +Mcu.Pin24=VP_CORTEX_M33_NS_VS_Hclk +Mcu.Pin25=VP_GPDMA1_VS_GPDMACH0 +Mcu.Pin26=VP_GPDMA1_VS_GPDMACH1 +Mcu.Pin27=VP_GPDMA1_VS_GPDMACH2 +Mcu.Pin28=VP_GPDMA1_VS_GPDMACH3 +Mcu.Pin29=VP_GPDMA2_VS_GPDMACH0 Mcu.Pin3=PH1-OSC_OUT(PH1) -Mcu.Pin30=VP_PWR_VS_SECSignals -Mcu.Pin31=VP_PWR_VS_LPOM -Mcu.Pin32=VP_SYS_VS_Systick -Mcu.Pin33=VP_TIM2_VS_ClockSourceINT -Mcu.Pin34=VP_TIM5_VS_ClockSourceINT -Mcu.Pin35=VP_BOOTPATH_VS_BOOTPATH -Mcu.Pin36=VP_MEMORYMAP_VS_MEMORYMAP +Mcu.Pin30=VP_ICACHE_VS_ICACHE +Mcu.Pin31=VP_PWR_VS_SECSignals +Mcu.Pin32=VP_PWR_VS_LPOM +Mcu.Pin33=VP_SYS_VS_Systick +Mcu.Pin34=VP_TIM2_VS_ClockSourceINT +Mcu.Pin35=VP_TIM5_VS_ClockSourceINT +Mcu.Pin36=VP_BOOTPATH_VS_BOOTPATH +Mcu.Pin37=VP_MEMORYMAP_VS_MEMORYMAP Mcu.Pin4=PC2 Mcu.Pin5=PA0 Mcu.Pin6=PA1 Mcu.Pin7=PA2 Mcu.Pin8=PA3 Mcu.Pin9=PB1 -Mcu.PinsNb=37 +Mcu.PinsNb=38 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32H533RETx @@ -259,6 +260,10 @@ PC2.GPIOParameters=GPIO_Speed PC2.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM PC2.Mode=Full_Duplex_Master PC2.Signal=I2S2_SDI +PC6.GPIOParameters=GPIO_Speed +PC6.GPIO_Speed=GPIO_SPEED_FREQ_HIGH +PC6.Mode=Master_Clock_Activated +PC6.Signal=I2S2_MCK PCC.Checker=false PCC.Line=STM32H5x3 PCC.MCU=STM32H533RETx @@ -349,12 +354,12 @@ RCC.OCTOSPIMFreq_Value=80000000 RCC.PLL1P=4 RCC.PLL1Q=10 RCC.PLL2M=10 -RCC.PLL2N=192 -RCC.PLL2P=15 -RCC.PLL2PoutputFreq_Value=20480000 -RCC.PLL2Q=12 -RCC.PLL2QoutputFreq_Value=25600000 -RCC.PLL2RoutputFreq_Value=153600000 +RCC.PLL2N=256 +RCC.PLL2P=10 +RCC.PLL2PoutputFreq_Value=40960000 +RCC.PLL2Q=10 +RCC.PLL2QoutputFreq_Value=40960000 +RCC.PLL2RoutputFreq_Value=204800000 RCC.PLL2Source=RCC_PLL2_SOURCE_HSE RCC.PLL3N=8 RCC.PLL3PoutputFreq_Value=64000000 @@ -372,7 +377,7 @@ RCC.RNGFreq_Value=48000000 RCC.SDMMC1Freq_Value=32000000 RCC.SPI1Freq_Value=32000000 RCC.SPI2CLockSelection=RCC_SPI2CLKSOURCE_PLL2P -RCC.SPI2Freq_Value=20480000 +RCC.SPI2Freq_Value=40960000 RCC.SPI3Freq_Value=32000000 RCC.SPI4Freq_Value=80000000 RCC.SYSCLKFreq_VALUE=80000000 @@ -390,7 +395,7 @@ RCC.VCOInput2Freq_Value=1600000 RCC.VCOInput3Freq_Value=16000000 RCC.VCOInputFreq_Value=16000000 RCC.VCOOutputFreq_Value=320000000 -RCC.VCOPLL2OutputFreq_Value=307200000 +RCC.VCOPLL2OutputFreq_Value=409600000 RCC.VCOPLL3OutputFreq_Value=128000000 TIM2.IPParameters=Prescaler TIM2.Prescaler=39999