Skip to content

Commit 353538d

Browse files
dojyorinfpistm
andcommitted
fix(h5): H563ZI clock config
Remove all HSI usage. Fix ADC/DAC clock frequency (125MHz). Signed-off-by: Kazuki Ota <ota_droid@live.jp> Co-Authored-by: Frederic Pillon <frederic.pillon@st.com>
1 parent 6e60087 commit 353538d

File tree

2 files changed

+41
-27
lines changed

2 files changed

+41
-27
lines changed

variants/STM32H5xx/H563Z(G-I)T_H573ZIT/generic_clock.c

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,8 @@ WEAK void SystemClock_Config(void)
3434
/** Initializes the RCC Oscillators according to the specified parameters
3535
* in the RCC_OscInitTypeDef structure.
3636
*/
37-
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48 | RCC_OSCILLATORTYPE_HSI
38-
| RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_CSI;
39-
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
40-
RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV2;
41-
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
37+
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_CSI;
4238
RCC_OscInitStruct.LSIState = RCC_LSI_ON;
43-
RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;
4439
RCC_OscInitStruct.CSIState = RCC_CSI_ON;
4540
RCC_OscInitStruct.CSICalibrationValue = RCC_CSICALIBRATION_DEFAULT;
4641
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
@@ -50,7 +45,7 @@ WEAK void SystemClock_Config(void)
5045
RCC_OscInitStruct.PLL.PLLP = 2;
5146
RCC_OscInitStruct.PLL.PLLQ = 2;
5247
RCC_OscInitStruct.PLL.PLLR = 2;
53-
RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1_VCIRANGE_2;
48+
RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1_VCIRANGE_3;
5449
RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1_VCORANGE_WIDE;
5550
RCC_OscInitStruct.PLL.PLLFRACN = 0;
5651
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
@@ -75,13 +70,30 @@ WEAK void SystemClock_Config(void)
7570
/** Initializes the peripherals clock
7671
*/
7772
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_ADCDAC | RCC_PERIPHCLK_LPUART1
78-
| RCC_PERIPHCLK_OSPI | RCC_PERIPHCLK_SDMMC1
7973
| RCC_PERIPHCLK_USB;
80-
PeriphClkInitStruct.AdcDacClockSelection = RCC_ADCDACCLKSOURCE_HCLK;
81-
PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_HSI;
82-
PeriphClkInitStruct.OspiClockSelection = RCC_OSPICLKSOURCE_HCLK;
83-
PeriphClkInitStruct.Sdmmc1ClockSelection = RCC_SDMMC1CLKSOURCE_PLL1Q;
84-
PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48;
74+
PeriphClkInitStruct.PLL2.PLL2Source = RCC_PLL2_SOURCE_CSI;
75+
PeriphClkInitStruct.PLL2.PLL2M = 2;
76+
PeriphClkInitStruct.PLL2.PLL2N = 250;
77+
PeriphClkInitStruct.PLL2.PLL2P = 2;
78+
PeriphClkInitStruct.PLL2.PLL2Q = 15;
79+
PeriphClkInitStruct.PLL2.PLL2R = 4;
80+
PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2_VCIRANGE_1;
81+
PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2_VCORANGE_WIDE;
82+
PeriphClkInitStruct.PLL2.PLL2FRACN = 0;
83+
PeriphClkInitStruct.PLL2.PLL2ClockOut = RCC_PLL2_DIVQ | RCC_PLL2_DIVR;
84+
PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PLL2Q;
85+
PeriphClkInitStruct.AdcDacClockSelection = RCC_ADCDACCLKSOURCE_PLL2R;
86+
PeriphClkInitStruct.PLL3.PLL3Source = RCC_PLL3_SOURCE_CSI;
87+
PeriphClkInitStruct.PLL3.PLL3M = 2;
88+
PeriphClkInitStruct.PLL3.PLL3N = 240;
89+
PeriphClkInitStruct.PLL3.PLL3P = 2;
90+
PeriphClkInitStruct.PLL3.PLL3Q = 10;
91+
PeriphClkInitStruct.PLL3.PLL3R = 2;
92+
PeriphClkInitStruct.PLL3.PLL3RGE = RCC_PLL3_VCIRANGE_3;
93+
PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3_VCORANGE_WIDE;
94+
PeriphClkInitStruct.PLL3.PLL3FRACN = 0.0;
95+
PeriphClkInitStruct.PLL3.PLL3ClockOut = RCC_PLL3_DIVQ;
96+
PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_PLL3Q;
8597
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {
8698
Error_Handler();
8799
}

variants/STM32H5xx/H563Z(G-I)T_H573ZIT/variant_NUCLEO_H563ZI.cpp

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -182,13 +182,9 @@ WEAK void SystemClock_Config(void)
182182
/** Initializes the RCC Oscillators according to the specified parameters
183183
* in the RCC_OscInitTypeDef structure.
184184
*/
185-
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_HSE
186-
| RCC_OSCILLATORTYPE_LSE;
187-
RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS_DIGITAL;
185+
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_LSE;
186+
RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS;
188187
RCC_OscInitStruct.LSEState = RCC_LSE_ON;
189-
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
190-
RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1;
191-
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
192188
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
193189
RCC_OscInitStruct.PLL.PLLSource = RCC_PLL1_SOURCE_HSE;
194190
RCC_OscInitStruct.PLL.PLLM = 4;
@@ -199,6 +195,7 @@ WEAK void SystemClock_Config(void)
199195
RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1_VCIRANGE_1;
200196
RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1_VCORANGE_WIDE;
201197
RCC_OscInitStruct.PLL.PLLFRACN = 0;
198+
202199
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
203200
Error_Handler();
204201
}
@@ -221,22 +218,26 @@ WEAK void SystemClock_Config(void)
221218
/** Initializes the peripherals clock
222219
*/
223220
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_ADCDAC | RCC_PERIPHCLK_LPUART1
224-
| RCC_PERIPHCLK_OSPI | RCC_PERIPHCLK_SDMMC1
225221
| RCC_PERIPHCLK_USB;
226-
PeriphClkInitStruct.AdcDacClockSelection = RCC_ADCDACCLKSOURCE_HCLK;
222+
PeriphClkInitStruct.AdcDacClockSelection = RCC_ADCDACCLKSOURCE_PLL2R;
223+
PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PCLK3;
224+
PeriphClkInitStruct.OspiClockSelection = RCC_OSPICLKSOURCE_HCLK;
225+
PeriphClkInitStruct.Sdmmc1ClockSelection = RCC_SDMMC1CLKSOURCE_PLL1Q;
226+
PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_PLL3Q;
227+
227228
PeriphClkInitStruct.PLL2.PLL2Source = RCC_PLL2_SOURCE_HSE;
228229
PeriphClkInitStruct.PLL2.PLL2M = 2;
229-
PeriphClkInitStruct.PLL2.PLL2N = 128;
230+
PeriphClkInitStruct.PLL2.PLL2N = 125;
230231
PeriphClkInitStruct.PLL2.PLL2P = 2;
231-
PeriphClkInitStruct.PLL2.PLL2Q = 16;
232-
PeriphClkInitStruct.PLL2.PLL2R = 2;
232+
PeriphClkInitStruct.PLL2.PLL2Q = 15;
233+
PeriphClkInitStruct.PLL2.PLL2R = 4;
233234
PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2_VCIRANGE_2;
234235
PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2_VCORANGE_WIDE;
235236
PeriphClkInitStruct.PLL2.PLL2FRACN = 0;
236-
PeriphClkInitStruct.PLL2.PLL2ClockOut = RCC_PLL2_DIVQ;
237+
PeriphClkInitStruct.PLL2.PLL2ClockOut = RCC_PLL2_DIVQ | RCC_PLL2_DIVR;
237238
PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PLL2Q;
238-
PeriphClkInitStruct.OspiClockSelection = RCC_OSPICLKSOURCE_HCLK;
239-
PeriphClkInitStruct.Sdmmc1ClockSelection = RCC_SDMMC1CLKSOURCE_PLL1Q;
239+
PeriphClkInitStruct.AdcDacClockSelection = RCC_ADCDACCLKSOURCE_PLL2R;
240+
240241
PeriphClkInitStruct.PLL3.PLL3Source = RCC_PLL3_SOURCE_HSE;
241242
PeriphClkInitStruct.PLL3.PLL3M = 2;
242243
PeriphClkInitStruct.PLL3.PLL3N = 96;
@@ -248,6 +249,7 @@ WEAK void SystemClock_Config(void)
248249
PeriphClkInitStruct.PLL3.PLL3FRACN = 0;
249250
PeriphClkInitStruct.PLL3.PLL3ClockOut = RCC_PLL3_DIVQ;
250251
PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_PLL3Q;
252+
251253
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {
252254
Error_Handler();
253255
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy