From e9f471c4e0a4047bb960b28e4de1447b84a22e4f Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Thu, 30 Jan 2025 21:10:20 -0500 Subject: [PATCH] reduce clocks --- Core/Inc/stm32u0xx_hal_conf.h | 2 +- Core/Src/main.c | 15 +++---- Core/Src/stm32u0xx_hal_msp.c | 4 +- Makefile | 2 +- microphone.ioc | 73 ++++++++++++++++++++--------------- 5 files changed, 54 insertions(+), 42 deletions(-) diff --git a/Core/Inc/stm32u0xx_hal_conf.h b/Core/Inc/stm32u0xx_hal_conf.h index d8e250f..66cfc34 100644 --- a/Core/Inc/stm32u0xx_hal_conf.h +++ b/Core/Inc/stm32u0xx_hal_conf.h @@ -144,7 +144,7 @@ * @brief This is the HAL system configuration section */ -#define VDD_VALUE 3300U /*!< Value of VDD in mv */ +#define VDD_VALUE 1710U /*!< Value of VDD in mv */ #define TICK_INT_PRIORITY (3U) /*!< tick interrupt priority (lowest by default) */ #define USE_RTOS 0U #define PREFETCH_ENABLE 0U diff --git a/Core/Src/main.c b/Core/Src/main.c index 29fe9cf..67e6ab8 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -142,9 +142,10 @@ int main(void) /* USER CODE BEGIN WHILE */ while (1) { - /* USER CODE END WHILE */ HAL_GPIO_WritePin(IDLE_GPIO_Port, IDLE_Pin, GPIO_PIN_SET); __WFI(); + /* USER CODE END WHILE */ + /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ @@ -161,7 +162,7 @@ void SystemClock_Config(void) /** Configure the main internal regulator output voltage */ - HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1); + HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE2); /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. @@ -181,10 +182,10 @@ void SystemClock_Config(void) RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_MSI; - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV2; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) { Error_Handler(); } @@ -213,7 +214,7 @@ static void MX_SPI1_Init(void) hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; hspi1.Init.NSS = SPI_NSS_SOFT; - hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8; + hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi1.Init.TIMode = SPI_TIMODE_DISABLE; hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; @@ -252,7 +253,7 @@ static void MX_USART2_UART_Init(void) huart2.Init.Parity = UART_PARITY_NONE; huart2.Init.Mode = UART_MODE_TX_RX; huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; - huart2.Init.OverSampling = UART_OVERSAMPLING_16; + huart2.Init.OverSampling = UART_OVERSAMPLING_8; huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; huart2.Init.ClockPrescaler = UART_PRESCALER_DIV1; huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; diff --git a/Core/Src/stm32u0xx_hal_msp.c b/Core/Src/stm32u0xx_hal_msp.c index 204294d..4eb7deb 100644 --- a/Core/Src/stm32u0xx_hal_msp.c +++ b/Core/Src/stm32u0xx_hal_msp.c @@ -120,7 +120,7 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) hdma_spi1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; hdma_spi1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; hdma_spi1_rx.Init.Mode = DMA_CIRCULAR; - hdma_spi1_rx.Init.Priority = DMA_PRIORITY_VERY_HIGH; + hdma_spi1_rx.Init.Priority = DMA_PRIORITY_MEDIUM; if (HAL_DMA_Init(&hdma_spi1_rx) != HAL_OK) { Error_Handler(); @@ -137,7 +137,7 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; hdma_spi1_tx.Init.Mode = DMA_CIRCULAR; - hdma_spi1_tx.Init.Priority = DMA_PRIORITY_VERY_HIGH; + hdma_spi1_tx.Init.Priority = DMA_PRIORITY_MEDIUM; if (HAL_DMA_Init(&hdma_spi1_tx) != HAL_OK) { Error_Handler(); diff --git a/Makefile b/Makefile index 446775f..ab0211a 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ########################################################################################################################## -# File automatically-generated by tool: [projectgenerator] version: [4.5.0-RC5] date: [Thu Jan 30 16:49:01 EST 2025] +# File automatically-generated by tool: [projectgenerator] version: [4.5.0-RC5] date: [Thu Jan 30 17:24:56 EST 2025] ########################################################################################################################## # ------------------------------------------------ diff --git a/microphone.ioc b/microphone.ioc index 7e77d47..49dc5db 100644 --- a/microphone.ioc +++ b/microphone.ioc @@ -14,7 +14,7 @@ Dma.SPI1_RX.0.Mode=DMA_CIRCULAR Dma.SPI1_RX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE Dma.SPI1_RX.0.PeriphInc=DMA_PINC_DISABLE Dma.SPI1_RX.0.Polarity=HAL_DMAMUX_REQ_GEN_RISING -Dma.SPI1_RX.0.Priority=DMA_PRIORITY_VERY_HIGH +Dma.SPI1_RX.0.Priority=DMA_PRIORITY_MEDIUM Dma.SPI1_RX.0.RequestNumber=1 Dma.SPI1_RX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber Dma.SPI1_RX.0.SignalID=NONE @@ -31,7 +31,7 @@ Dma.SPI1_TX.1.Mode=DMA_CIRCULAR Dma.SPI1_TX.1.PeriphDataAlignment=DMA_PDATAALIGN_BYTE Dma.SPI1_TX.1.PeriphInc=DMA_PINC_DISABLE Dma.SPI1_TX.1.Polarity=HAL_DMAMUX_REQ_GEN_RISING -Dma.SPI1_TX.1.Priority=DMA_PRIORITY_VERY_HIGH +Dma.SPI1_TX.1.Priority=DMA_PRIORITY_MEDIUM Dma.SPI1_TX.1.RequestNumber=1 Dma.SPI1_TX.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber Dma.SPI1_TX.1.SignalID=NONE @@ -40,7 +40,7 @@ Dma.SPI1_TX.1.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT Dma.SPI1_TX.1.SyncRequestNumber=1 Dma.SPI1_TX.1.SyncSignalID=NONE File.Version=6 -GPIO.groupedBy= +GPIO.groupedBy=Group By Peripherals KeepUserPlacement=false Mcu.CPN=STM32U083MCT6 Mcu.Family=STM32U0 @@ -61,7 +61,8 @@ Mcu.Pin1=PC2 Mcu.Pin10=PA13 (SWDIO) Mcu.Pin11=PA14 (SWCLK) Mcu.Pin12=VP_PWR_VS_SECSignals -Mcu.Pin13=VP_SYS_VS_Systick +Mcu.Pin13=VP_PWR_VS_LPOM +Mcu.Pin14=VP_SYS_VS_Systick Mcu.Pin2=PA1 Mcu.Pin3=PA2 Mcu.Pin4=PA3 @@ -70,7 +71,7 @@ Mcu.Pin6=PA6 Mcu.Pin7=PA7 Mcu.Pin8=PB2 Mcu.Pin9=PD9 -Mcu.PinsNb=14 +Mcu.PinsNb=15 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32U083MCTx @@ -165,25 +166,30 @@ ProjectManager.UAScriptBeforePath= ProjectManager.UnderRoot=false ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_SPI1_Init-SPI1-false-HAL-true,5-MX_USART2_UART_Init-USART2-false-HAL-true,0-MX_CORTEX_M0+_Init-CORTEX_M0+-false-HAL-true,0-MX_PWR_Init-PWR-false-HAL-true RCC.ADCFreq_Value=24000000 -RCC.AHBFreq_Value=24000000 -RCC.APBFreq_Value=24000000 -RCC.APBTimFreq_Value=24000000 -RCC.CortexFreq_Value=24000000 -RCC.FCLKCortexFreq_Value=24000000 +RCC.AHBCLKDivider=RCC_SYSCLK_DIV2 +RCC.AHBFreq_Value=12000000 +RCC.APB1CLKDivider=RCC_HCLK_DIV2 +RCC.APBFreq_Value=6000000 +RCC.APBTimFreq_Value=12000000 +RCC.CortexFreq_Value=1500000 +RCC.Cortex_Div=SYSTICK_CLKSOURCE_HCLK_DIV8 +RCC.DATA_CACHE_ENABLE=1 +RCC.FCLKCortexFreq_Value=12000000 RCC.FamilyName=M -RCC.HCLKFreq_Value=24000000 +RCC.HCLKFreq_Value=12000000 RCC.HSE_VALUE=4000000 RCC.HSI48_VALUE=48000000 RCC.HSI_VALUE=16000000 -RCC.I2C1Freq_Value=24000000 -RCC.I2C3Freq_Value=24000000 -RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APBFreq_Value,APBTimFreq_Value,CortexFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM3Freq_Value,LPUART1Freq_Value,LPUART2Freq_Value,LPUART3Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,MCO2PinFreq_Value,MSIClockRangeVal,MSI_VALUE,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PWRFreq_Value,RNGFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,TIM15Freq_Value,TIM1Freq_Value,USART1Freq_Value,USART2Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value -RCC.LPTIM1Freq_Value=24000000 -RCC.LPTIM2Freq_Value=24000000 -RCC.LPTIM3Freq_Value=24000000 -RCC.LPUART1Freq_Value=24000000 -RCC.LPUART2Freq_Value=24000000 -RCC.LPUART3Freq_Value=24000000 +RCC.I2C1Freq_Value=6000000 +RCC.I2C3Freq_Value=6000000 +RCC.INSTRUCTION_CACHE_ENABLE=1 +RCC.IPParameters=ADCFreq_Value,AHBCLKDivider,AHBFreq_Value,APB1CLKDivider,APBFreq_Value,APBTimFreq_Value,CortexFreq_Value,Cortex_Div,DATA_CACHE_ENABLE,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,INSTRUCTION_CACHE_ENABLE,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM3Freq_Value,LPUART1Freq_Value,LPUART2Freq_Value,LPUART3Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,MCO2PinFreq_Value,MSIClockRangeVal,MSI_VALUE,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSourceVirtual,PWRFreq_Value,RNGFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,TIM15Freq_Value,TIM1Freq_Value,USART1Freq_Value,USART2Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VDD_VALUE +RCC.LPTIM1Freq_Value=6000000 +RCC.LPTIM2Freq_Value=6000000 +RCC.LPTIM3Freq_Value=6000000 +RCC.LPUART1Freq_Value=6000000 +RCC.LPUART2Freq_Value=6000000 +RCC.LPUART3Freq_Value=6000000 RCC.LSCOPinFreq_Value=32000 RCC.LSE_VALUE=32768 RCC.LSI_VALUE=32000 @@ -191,21 +197,23 @@ RCC.MCO1PinFreq_Value=24000000 RCC.MCO2PinFreq_Value=24000000 RCC.MSIClockRangeVal=RCC_MSIRANGE_9 RCC.MSI_VALUE=24000000 -RCC.PLLPoutputFreq_Value=32000000 -RCC.PLLQoutputFreq_Value=32000000 -RCC.PLLRCLKFreq_Value=32000000 +RCC.PLLPoutputFreq_Value=48000000 +RCC.PLLQoutputFreq_Value=48000000 +RCC.PLLRCLKFreq_Value=48000000 +RCC.PLLSourceVirtual=RCC_PLLSOURCE_MSI RCC.PWRFreq_Value=24000000 RCC.RNGFreq_Value=24000000 RCC.SYSCLKFreq_VALUE=24000000 RCC.SYSCLKSource=RCC_SYSCLKSOURCE_MSI -RCC.TIM15Freq_Value=24000000 -RCC.TIM1Freq_Value=24000000 -RCC.USART1Freq_Value=24000000 -RCC.USART2Freq_Value=24000000 +RCC.TIM15Freq_Value=12000000 +RCC.TIM1Freq_Value=12000000 +RCC.USART1Freq_Value=6000000 +RCC.USART2Freq_Value=6000000 RCC.USBFreq_Value=24000000 -RCC.VCOInputFreq_Value=16000000 -RCC.VCOOutputFreq_Value=64000000 -SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_8 +RCC.VCOInputFreq_Value=24000000 +RCC.VCOOutputFreq_Value=96000000 +RCC.VDD_VALUE=1.71 +SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_2 SPI1.CalculateBaudRate=3.0 MBits/s SPI1.DataSize=SPI_DATASIZE_8BIT SPI1.Direction=SPI_DIRECTION_2LINES @@ -213,8 +221,11 @@ SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRate SPI1.Mode=SPI_MODE_MASTER SPI1.NSSPMode=SPI_NSS_PULSE_DISABLE SPI1.VirtualType=VM_MASTER -USART2.IPParameters=VirtualMode-Asynchronous +USART2.IPParameters=VirtualMode-Asynchronous,OverSampling +USART2.OverSampling=UART_OVERSAMPLING_8 USART2.VirtualMode-Asynchronous=VM_ASYNC +VP_PWR_VS_LPOM.Mode=PowerOptimisation +VP_PWR_VS_LPOM.Signal=PWR_VS_LPOM VP_PWR_VS_SECSignals.Mode=Security/Privilege VP_PWR_VS_SECSignals.Signal=PWR_VS_SECSignals VP_SYS_VS_Systick.Mode=SysTick