diff --git a/Core/Src/main.c b/Core/Src/main.c index f721f4c..3b7649a 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -106,6 +106,7 @@ static void MX_USART2_UART_Init(void); static void MX_I2S2_Init(void); static void MX_I2C1_Init(void); static void MX_I2S3_Init(void); +static void MX_I2C3_Init(void); /* USER CODE BEGIN PFP */ @@ -474,6 +475,7 @@ int main(void) MX_I2S2_Init(); MX_I2C1_Init(); MX_I2S3_Init(); + MX_I2C3_Init(); /* USER CODE BEGIN 2 */ CODEC_RST_LO(); // Reset the audio codec via HW reset pin @@ -787,6 +789,78 @@ static void MX_I2C1_Init(void) } +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + LL_I2C_InitTypeDef I2C_InitStruct = {0}; + + LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; + + LL_RCC_SetI2CClockSource(LL_RCC_I2C3_CLKSOURCE_PLL3R); + + LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOC); + LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOA); + /**I2C3 GPIO Configuration + PC9 ------> I2C3_SDA + PA8 ------> I2C3_SCL + */ + GPIO_InitStruct.Pin = LL_GPIO_PIN_9; + GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_OPENDRAIN; + GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + GPIO_InitStruct.Alternate = LL_GPIO_AF_4; + LL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = LL_GPIO_PIN_8; + GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_OPENDRAIN; + GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + GPIO_InitStruct.Alternate = LL_GPIO_AF_4; + LL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* Peripheral clock enable */ + LL_APB3_GRP1_EnableClock(LL_APB3_GRP1_PERIPH_I2C3); + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + + /** I2C Initialization + */ + LL_I2C_EnableAutoEndMode(I2C3); + LL_I2C_DisableOwnAddress2(I2C3); + LL_I2C_DisableGeneralCall(I2C3); + LL_I2C_EnableClockStretching(I2C3); + I2C_InitStruct.PeripheralMode = LL_I2C_MODE_I2C; + I2C_InitStruct.Timing = 0x00707CBB; + I2C_InitStruct.AnalogFilter = LL_I2C_ANALOGFILTER_ENABLE; + I2C_InitStruct.DigitalFilter = 0; + I2C_InitStruct.OwnAddress1 = 0; + I2C_InitStruct.TypeAcknowledge = LL_I2C_ACK; + I2C_InitStruct.OwnAddrSize = LL_I2C_OWNADDRESS1_7BIT; + LL_I2C_Init(I2C3, &I2C_InitStruct); + LL_I2C_SetOwnAddress2(I2C3, 0, LL_I2C_OWNADDRESS2_NOMASK); + + /** I2C Fast mode Plus enable + */ + LL_I2C_EnableFastModePlus(I2C3); + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + /** * @brief I2S2 Initialization Function * @param None diff --git a/DigitalAudioH533.ioc b/DigitalAudioH533.ioc index c9b47fa..a6f613f 100644 --- a/DigitalAudioH533.ioc +++ b/DigitalAudioH533.ioc @@ -70,6 +70,8 @@ GPDMA2.TRANSFERALLOCATEDPORTSRC_GPDMACH2=DMA_SRC_ALLOCATED_PORT1 GPIO.groupedBy=Group By Peripherals I2C1.IPParameters=Timing I2C1.Timing=0x00707CBB +I2C3.IPParameters=Timing +I2C3.Timing=0x00707CBB I2S2.AudioFreq=AudioFreqCustomValue I2S2.AudioFreqCustom=32000 I2S2.DataFormat=I2S_DATAFORMAT_32B @@ -122,24 +124,25 @@ Mcu.ContextProject=TrustZoneDisabled Mcu.Family=STM32H5 Mcu.IP0=BOOTPATH Mcu.IP1=CORTEX_M33_NS -Mcu.IP10=NVIC -Mcu.IP11=PWR -Mcu.IP12=RCC -Mcu.IP13=SYS -Mcu.IP14=TIM2 -Mcu.IP15=TIM5 -Mcu.IP16=UART5 -Mcu.IP17=USART2 -Mcu.IP18=USART3 +Mcu.IP10=MEMORYMAP +Mcu.IP11=NVIC +Mcu.IP12=PWR +Mcu.IP13=RCC +Mcu.IP14=SYS +Mcu.IP15=TIM2 +Mcu.IP16=TIM5 +Mcu.IP17=UART5 +Mcu.IP18=USART2 +Mcu.IP19=USART3 Mcu.IP2=DEBUG Mcu.IP3=GPDMA1 Mcu.IP4=GPDMA2 Mcu.IP5=I2C1 -Mcu.IP6=I2S2 -Mcu.IP7=I2S3 -Mcu.IP8=ICACHE -Mcu.IP9=MEMORYMAP -Mcu.IPNb=19 +Mcu.IP6=I2C3 +Mcu.IP7=I2S2 +Mcu.IP8=I2S3 +Mcu.IP9=ICACHE +Mcu.IPNb=20 Mcu.Name=STM32H533RETx Mcu.Package=LQFP64 Mcu.Pin0=PC14-OSC32_IN(OSC32_IN) @@ -151,44 +154,46 @@ Mcu.Pin13=PB14 Mcu.Pin14=PB15 Mcu.Pin15=PC6 Mcu.Pin16=PC7 -Mcu.Pin17=PA13(JTMS/SWDIO) -Mcu.Pin18=PA14(JTCK/SWCLK) -Mcu.Pin19=PA15(JTDI) +Mcu.Pin17=PC9 +Mcu.Pin18=PA8 +Mcu.Pin19=PA13(JTMS/SWDIO) Mcu.Pin2=PH0-OSC_IN(PH0) -Mcu.Pin20=PC10 -Mcu.Pin21=PC11 -Mcu.Pin22=PC12 -Mcu.Pin23=PD2 -Mcu.Pin24=PB4(NJTRST) -Mcu.Pin25=PB5 -Mcu.Pin26=PB6 -Mcu.Pin27=PB7 -Mcu.Pin28=PB8 -Mcu.Pin29=VP_CORTEX_M33_NS_VS_Hclk +Mcu.Pin20=PA14(JTCK/SWCLK) +Mcu.Pin21=PA15(JTDI) +Mcu.Pin22=PC10 +Mcu.Pin23=PC11 +Mcu.Pin24=PC12 +Mcu.Pin25=PD2 +Mcu.Pin26=PB4(NJTRST) +Mcu.Pin27=PB5 +Mcu.Pin28=PB6 +Mcu.Pin29=PB7 Mcu.Pin3=PH1-OSC_OUT(PH1) -Mcu.Pin30=VP_GPDMA1_VS_GPDMACH0 -Mcu.Pin31=VP_GPDMA1_VS_GPDMACH1 -Mcu.Pin32=VP_GPDMA1_VS_GPDMACH2 -Mcu.Pin33=VP_GPDMA1_VS_GPDMACH3 -Mcu.Pin34=VP_GPDMA2_VS_GPDMACH0 -Mcu.Pin35=VP_GPDMA2_VS_GPDMACH1 -Mcu.Pin36=VP_GPDMA2_VS_GPDMACH2 -Mcu.Pin37=VP_GPDMA2_VS_GPDMACH3 -Mcu.Pin38=VP_ICACHE_VS_ICACHE -Mcu.Pin39=VP_PWR_VS_SECSignals +Mcu.Pin30=PB8 +Mcu.Pin31=VP_CORTEX_M33_NS_VS_Hclk +Mcu.Pin32=VP_GPDMA1_VS_GPDMACH0 +Mcu.Pin33=VP_GPDMA1_VS_GPDMACH1 +Mcu.Pin34=VP_GPDMA1_VS_GPDMACH2 +Mcu.Pin35=VP_GPDMA1_VS_GPDMACH3 +Mcu.Pin36=VP_GPDMA2_VS_GPDMACH0 +Mcu.Pin37=VP_GPDMA2_VS_GPDMACH1 +Mcu.Pin38=VP_GPDMA2_VS_GPDMACH2 +Mcu.Pin39=VP_GPDMA2_VS_GPDMACH3 Mcu.Pin4=PC2 -Mcu.Pin40=VP_PWR_VS_LPOM -Mcu.Pin41=VP_SYS_VS_Systick -Mcu.Pin42=VP_TIM2_VS_ClockSourceINT -Mcu.Pin43=VP_TIM5_VS_ClockSourceINT -Mcu.Pin44=VP_BOOTPATH_VS_BOOTPATH -Mcu.Pin45=VP_MEMORYMAP_VS_MEMORYMAP +Mcu.Pin40=VP_ICACHE_VS_ICACHE +Mcu.Pin41=VP_PWR_VS_SECSignals +Mcu.Pin42=VP_PWR_VS_LPOM +Mcu.Pin43=VP_SYS_VS_Systick +Mcu.Pin44=VP_TIM2_VS_ClockSourceINT +Mcu.Pin45=VP_TIM5_VS_ClockSourceINT +Mcu.Pin46=VP_BOOTPATH_VS_BOOTPATH +Mcu.Pin47=VP_MEMORYMAP_VS_MEMORYMAP Mcu.Pin5=PA0 Mcu.Pin6=PA1 Mcu.Pin7=PA2 Mcu.Pin8=PA3 Mcu.Pin9=PB1 -Mcu.PinsNb=46 +Mcu.PinsNb=48 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32H533RETx @@ -235,6 +240,8 @@ PA3.GPIO_Speed=GPIO_SPEED_FREQ_HIGH PA3.Mode=Asynchronous PA3.PinAttribute=Free PA3.Signal=USART2_RX +PA8.Mode=I2C +PA8.Signal=I2C3_SCL PB1.GPIOParameters=GPIO_Speed,PinAttribute PB1.GPIO_Speed=GPIO_SPEED_FREQ_HIGH PB1.Locked=true @@ -328,6 +335,8 @@ PC7.GPIOParameters=GPIO_Speed PC7.GPIO_Speed=GPIO_SPEED_FREQ_HIGH PC7.Mode=Master_Clock_Activated PC7.Signal=I2S3_MCK +PC9.Mode=I2C +PC9.Signal=I2C3_SDA PCC.Checker=false PCC.Line=STM32H5x3 PCC.MCU=STM32H533RETx @@ -377,7 +386,7 @@ ProjectManager.ToolChainLocation= ProjectManager.UAScriptAfterPath= ProjectManager.UAScriptBeforePath= ProjectManager.UnderRoot=true -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-LL-false,2-MX_GPIO_Init-GPIO-false-LL-true,3-MX_GPDMA1_Init-GPDMA1-false-LL-true,4-MX_GPDMA2_Init-GPDMA2-false-LL-true,5-MX_ICACHE_Init-ICACHE-false-LL-true,6-MX_TIM5_Init-TIM5-false-LL-true,7-MX_TIM2_Init-TIM2-false-LL-true,8-MX_USART3_UART_Init-USART3-false-LL-true,9-MX_UART5_Init-UART5-false-LL-true,10-MX_USART2_UART_Init-USART2-false-LL-true,11-MX_I2S2_Init-I2S2-false-LL-true,12-MX_I2C1_Init-I2C1-false-LL-true,13-MX_I2S3_Init-I2S3-false-LL-true,0-MX_CORTEX_M33_NS_Init-CORTEX_M33_NS-false-LL-true,0-MX_PWR_Init-PWR-false-LL-true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-LL-false,2-MX_GPIO_Init-GPIO-false-LL-true,3-MX_GPDMA1_Init-GPDMA1-false-LL-true,4-MX_GPDMA2_Init-GPDMA2-false-LL-true,5-MX_ICACHE_Init-ICACHE-false-LL-true,6-MX_TIM5_Init-TIM5-false-LL-true,7-MX_TIM2_Init-TIM2-false-LL-true,8-MX_USART3_UART_Init-USART3-false-LL-true,9-MX_UART5_Init-UART5-false-LL-true,10-MX_USART2_UART_Init-USART2-false-LL-true,11-MX_I2S2_Init-I2S2-false-LL-true,12-MX_I2C1_Init-I2C1-false-LL-true,13-MX_I2S3_Init-I2S3-false-LL-true,14-MX_I2C3_Init-I2C3-false-LL-true,0-MX_CORTEX_M33_NS_Init-CORTEX_M33_NS-false-LL-true,0-MX_PWR_Init-PWR-false-LL-true RCC.ADCFreq_Value=80000000 RCC.AHBFreq_Value=80000000 RCC.APB1Freq_Value=80000000 @@ -402,10 +411,11 @@ RCC.HSI_VALUE=64000000 RCC.I2C1CLockSelection=RCC_I2C1CLKSOURCE_PLL3R RCC.I2C1Freq_Value=32000000 RCC.I2C2Freq_Value=80000000 -RCC.I2C3Freq_Value=80000000 +RCC.I2C3CLockSelection=RCC_I2C3CLKSOURCE_PLL3R +RCC.I2C3Freq_Value=32000000 RCC.I3C1Freq_Value=80000000 RCC.I3C2Freq_Value=80000000 -RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CKPERFreq_Value,CKPERSourceSelection,CRSFreq_Value,CSI_VALUE,CortexFreq_Value,DACFreq_Value,EPOD_VALUE,FCLKCortexFreq_Value,FDCANFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1CLockSelection,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I3C1Freq_Value,I3C2Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSIRC_VALUE,MCO1PinFreq_Value,MCO2PinFreq_Value,OCTOSPIMFreq_Value,PLL1P,PLL1Q,PLL2M,PLL2N,PLL2P,PLL2PoutputFreq_Value,PLL2Q,PLL2QoutputFreq_Value,PLL2RoutputFreq_Value,PLL2Source,PLL3N,PLL3PoutputFreq_Value,PLL3Q,PLL3QoutputFreq_Value,PLL3R,PLL3RoutputFreq_Value,PLL3Source,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RNGFreq_Value,SDMMC1Freq_Value,SPI1Freq_Value,SPI2CLockSelection,SPI2Freq_Value,SPI3CLockSelection,SPI3Freq_Value,SPI4Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,UART4Freq_Value,UART5CLockSelection,UART5Freq_Value,UCPD1outputFreq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USART6Freq_Value,USBFreq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOPLL2OutputFreq_Value,VCOPLL3OutputFreq_Value +RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CKPERFreq_Value,CKPERSourceSelection,CRSFreq_Value,CSI_VALUE,CortexFreq_Value,DACFreq_Value,EPOD_VALUE,FCLKCortexFreq_Value,FDCANFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1CLockSelection,I2C1Freq_Value,I2C2Freq_Value,I2C3CLockSelection,I2C3Freq_Value,I3C1Freq_Value,I3C2Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSIRC_VALUE,MCO1PinFreq_Value,MCO2PinFreq_Value,OCTOSPIMFreq_Value,PLL1P,PLL1Q,PLL2M,PLL2N,PLL2P,PLL2PoutputFreq_Value,PLL2Q,PLL2QoutputFreq_Value,PLL2RoutputFreq_Value,PLL2Source,PLL3N,PLL3PoutputFreq_Value,PLL3Q,PLL3QoutputFreq_Value,PLL3R,PLL3RoutputFreq_Value,PLL3Source,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RNGFreq_Value,SDMMC1Freq_Value,SPI1Freq_Value,SPI2CLockSelection,SPI2Freq_Value,SPI3CLockSelection,SPI3Freq_Value,SPI4Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,UART4Freq_Value,UART5CLockSelection,UART5Freq_Value,UCPD1outputFreq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USART6Freq_Value,USBFreq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOPLL2OutputFreq_Value,VCOPLL3OutputFreq_Value RCC.LPTIM1Freq_Value=80000000 RCC.LPTIM2Freq_Value=80000000 RCC.LPUART1Freq_Value=80000000