From 01996cf0abe48ce3707b74d3c58fccb8a5a59f9a Mon Sep 17 00:00:00 2001 From: unicod Date: Tue, 24 Feb 2026 20:29:38 +0100 Subject: [PATCH] GPIO init for codec reset pin, reset pulse on system start --- Core/Inc/main.h | 5 ++- Core/Src/main.c | 17 +++++++++++ DigitalAudioH533.ioc | 72 ++++++++++++++++++++++++-------------------- 3 files changed, 61 insertions(+), 33 deletions(-) diff --git a/Core/Inc/main.h b/Core/Inc/main.h index 3f241d6..f573eb0 100644 --- a/Core/Inc/main.h +++ b/Core/Inc/main.h @@ -80,6 +80,8 @@ void Error_Handler(void); #define SHR_CLK_GPIO_Port GPIOC #define SHR_STR_Pin LL_GPIO_PIN_15 #define SHR_STR_GPIO_Port GPIOC +#define CODEC_RST_Pin LL_GPIO_PIN_0 +#define CODEC_RST_GPIO_Port GPIOA #define LD2_Pin LL_GPIO_PIN_11 #define LD2_GPIO_Port GPIOC #define SHR_DOUT_DISP_Pin LL_GPIO_PIN_8 @@ -129,7 +131,8 @@ static inline void SHRSTR_HI() { LL_GPIO_SetOutputPin( SHR_STR_GPIO_Port, static inline void SHRSTR_LO() { LL_GPIO_ResetOutputPin( SHR_STR_GPIO_Port, SHR_STR_Pin); } static inline void SHRDIN_HI() { LL_GPIO_SetOutputPin( SHR_DOUT_DISP_GPIO_Port, SHR_DOUT_DISP_Pin); } static inline void SHRDIN_LO() { LL_GPIO_ResetOutputPin( SHR_DOUT_DISP_GPIO_Port, SHR_DOUT_DISP_Pin); } - +static inline void CODEC_RST_HI() { LL_GPIO_SetOutputPin( CODEC_RST_GPIO_Port, CODEC_RST_Pin); } +static inline void CODEC_RST_LO() { LL_GPIO_ResetOutputPin( CODEC_RST_GPIO_Port, CODEC_RST_Pin); } /* USER CODE END Private defines */ diff --git a/Core/Src/main.c b/Core/Src/main.c index 00528b8..a9b614a 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -185,6 +185,12 @@ int main(void) MX_I2S2_Init(); MX_I2C1_Init(); /* USER CODE BEGIN 2 */ + + CODEC_RST_LO(); // Reset the audio codec via HW reset pin + __NOP(); + __NOP(); + CODEC_RST_HI(); + init_printf(NULL, &uart_putc); LL_TIM_GenerateEvent_UPDATE(TIM2); @@ -1062,6 +1068,9 @@ static void MX_GPIO_Init(void) /**/ LL_GPIO_ResetOutputPin(SHR_DOUT_DISP_GPIO_Port, SHR_DOUT_DISP_Pin); + /**/ + LL_GPIO_SetOutputPin(CODEC_RST_GPIO_Port, CODEC_RST_Pin); + /**/ LL_GPIO_SetOutputPin(LD2_GPIO_Port, LD2_Pin); @@ -1073,6 +1082,14 @@ static void MX_GPIO_Init(void) GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; LL_GPIO_Init(GPIOC, &GPIO_InitStruct); + /**/ + GPIO_InitStruct.Pin = CODEC_RST_Pin; + GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT; + GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_OPENDRAIN; + GPIO_InitStruct.Pull = LL_GPIO_PULL_UP; + LL_GPIO_Init(CODEC_RST_GPIO_Port, &GPIO_InitStruct); + /**/ GPIO_InitStruct.Pin = SHR_DOUT_DISP_Pin; GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT; diff --git a/DigitalAudioH533.ioc b/DigitalAudioH533.ioc index 207e42f..a5f65f5 100644 --- a/DigitalAudioH533.ioc +++ b/DigitalAudioH533.ioc @@ -111,41 +111,42 @@ Mcu.Name=STM32H533RETx Mcu.Package=LQFP64 Mcu.Pin0=PC14-OSC32_IN(OSC32_IN) Mcu.Pin1=PC15-OSC32_OUT(OSC32_OUT) -Mcu.Pin10=PB12 -Mcu.Pin11=PB13 -Mcu.Pin12=PB14 -Mcu.Pin13=PB15 -Mcu.Pin14=PA13(JTMS/SWDIO) -Mcu.Pin15=PA14(JTCK/SWCLK) -Mcu.Pin16=PC11 -Mcu.Pin17=PC12 -Mcu.Pin18=PD2 -Mcu.Pin19=PB6 +Mcu.Pin10=PB10 +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.Pin2=PH0-OSC_IN(PH0) -Mcu.Pin20=PB7 -Mcu.Pin21=PB8 -Mcu.Pin22=VP_CORTEX_M33_NS_VS_Hclk -Mcu.Pin23=VP_GPDMA1_VS_GPDMACH0 -Mcu.Pin24=VP_GPDMA1_VS_GPDMACH1 -Mcu.Pin25=VP_GPDMA1_VS_GPDMACH2 -Mcu.Pin26=VP_GPDMA1_VS_GPDMACH3 -Mcu.Pin27=VP_GPDMA2_VS_GPDMACH0 -Mcu.Pin28=VP_ICACHE_VS_ICACHE -Mcu.Pin29=VP_PWR_VS_SECSignals +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.Pin3=PH1-OSC_OUT(PH1) -Mcu.Pin30=VP_PWR_VS_LPOM -Mcu.Pin31=VP_SYS_VS_Systick -Mcu.Pin32=VP_TIM2_VS_ClockSourceINT -Mcu.Pin33=VP_TIM5_VS_ClockSourceINT -Mcu.Pin34=VP_BOOTPATH_VS_BOOTPATH -Mcu.Pin35=VP_MEMORYMAP_VS_MEMORYMAP +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.Pin4=PC2 -Mcu.Pin5=PA1 -Mcu.Pin6=PA2 -Mcu.Pin7=PA3 -Mcu.Pin8=PB1 -Mcu.Pin9=PB10 -Mcu.PinsNb=36 +Mcu.Pin5=PA0 +Mcu.Pin6=PA1 +Mcu.Pin7=PA2 +Mcu.Pin8=PA3 +Mcu.Pin9=PB1 +Mcu.PinsNb=37 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32H533RETx @@ -163,6 +164,13 @@ NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:false\:false\:false\:false NVIC.UART5_IRQn=true\:0\:0\:false\:false\:false\:true\:false\:true NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +PA0.GPIOParameters=PinState,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP +PA0.GPIO_Label=CODEC_RST +PA0.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD +PA0.GPIO_PuPd=GPIO_PULLUP +PA0.Locked=true +PA0.PinState=GPIO_PIN_SET +PA0.Signal=GPIO_Output PA1.GPIOParameters=GPIO_Speed PA1.GPIO_Speed=GPIO_SPEED_FREQ_HIGH PA1.Mode=Hardware Flow Control (RS485)