Skip to content

Commit d1c8932

Browse files
authored
Fix H563ZI clock config. (#3)
* fix NUCLEO-H563ZI clock config. * fic generic h563zi config * clock config improved. * Easier to see. * clock config improved.
1 parent 6e60087 commit d1c8932

File tree

2 files changed

+53
-34
lines changed

2 files changed

+53
-34
lines changed

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

+31-12
Original file line numberDiff line numberDiff line change
@@ -34,25 +34,21 @@ 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;
4742
RCC_OscInitStruct.PLL.PLLSource = RCC_PLL1_SOURCE_CSI;
48-
RCC_OscInitStruct.PLL.PLLM = 1;
49-
RCC_OscInitStruct.PLL.PLLN = 125;
43+
RCC_OscInitStruct.PLL.PLLM = 2;
44+
RCC_OscInitStruct.PLL.PLLN = 250;
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_1;
5449
RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1_VCORANGE_WIDE;
5550
RCC_OscInitStruct.PLL.PLLFRACN = 0;
51+
5652
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
5753
Error_Handler();
5854
}
@@ -77,11 +73,34 @@ WEAK void SystemClock_Config(void)
7773
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_ADCDAC | RCC_PERIPHCLK_LPUART1
7874
| RCC_PERIPHCLK_OSPI | RCC_PERIPHCLK_SDMMC1
7975
| RCC_PERIPHCLK_USB;
80-
PeriphClkInitStruct.AdcDacClockSelection = RCC_ADCDACCLKSOURCE_HCLK;
81-
PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_HSI;
76+
PeriphClkInitStruct.AdcDacClockSelection = RCC_ADCDACCLKSOURCE_PLL2R;
77+
PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PCLK3;
8278
PeriphClkInitStruct.OspiClockSelection = RCC_OSPICLKSOURCE_HCLK;
8379
PeriphClkInitStruct.Sdmmc1ClockSelection = RCC_SDMMC1CLKSOURCE_PLL1Q;
84-
PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48;
80+
PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_PLL3Q;
81+
82+
PeriphClkInitStruct.PLL2.PLL2Source = RCC_PLL2_SOURCE_CSI;
83+
PeriphClkInitStruct.PLL2.PLL2M = 2;
84+
PeriphClkInitStruct.PLL2.PLL2N = 250;
85+
PeriphClkInitStruct.PLL2.PLL2P = 2;
86+
PeriphClkInitStruct.PLL2.PLL2Q = 2;
87+
PeriphClkInitStruct.PLL2.PLL2R = 4;
88+
PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2_VCIRANGE_1;
89+
PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2_VCORANGE_WIDE;
90+
PeriphClkInitStruct.PLL2.PLL2FRACN = 0;
91+
PeriphClkInitStruct.PLL2.PLL2ClockOut = RCC_PLL2_DIVR;
92+
93+
PeriphClkInitStruct.PLL3.PLL3Source = RCC_PLL3_SOURCE_CSI;
94+
PeriphClkInitStruct.PLL3.PLL3M = 2;
95+
PeriphClkInitStruct.PLL3.PLL3N = 250;
96+
PeriphClkInitStruct.PLL3.PLL3P = 2;
97+
PeriphClkInitStruct.PLL3.PLL3Q = 10;
98+
PeriphClkInitStruct.PLL3.PLL3R = 2;
99+
PeriphClkInitStruct.PLL3.PLL3RGE = RCC_PLL3_VCIRANGE_3;
100+
PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3_VCORANGE_WIDE;
101+
PeriphClkInitStruct.PLL3.PLL3FRACN = 0;
102+
PeriphClkInitStruct.PLL3.PLL3ClockOut = RCC_PLL3_DIVQ;
103+
85104
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {
86105
Error_Handler();
87106
}

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

+22-22
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
}
@@ -223,31 +220,34 @@ WEAK void SystemClock_Config(void)
223220
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_ADCDAC | RCC_PERIPHCLK_LPUART1
224221
| RCC_PERIPHCLK_OSPI | RCC_PERIPHCLK_SDMMC1
225222
| RCC_PERIPHCLK_USB;
226-
PeriphClkInitStruct.AdcDacClockSelection = RCC_ADCDACCLKSOURCE_HCLK;
223+
PeriphClkInitStruct.AdcDacClockSelection = RCC_ADCDACCLKSOURCE_PLL2R;
224+
PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PCLK3;
225+
PeriphClkInitStruct.OspiClockSelection = RCC_OSPICLKSOURCE_HCLK;
226+
PeriphClkInitStruct.Sdmmc1ClockSelection = RCC_SDMMC1CLKSOURCE_PLL1Q;
227+
PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_PLL3Q;
228+
227229
PeriphClkInitStruct.PLL2.PLL2Source = RCC_PLL2_SOURCE_HSE;
228-
PeriphClkInitStruct.PLL2.PLL2M = 2;
229-
PeriphClkInitStruct.PLL2.PLL2N = 128;
230+
PeriphClkInitStruct.PLL2.PLL2M = 4;
231+
PeriphClkInitStruct.PLL2.PLL2N = 250;
230232
PeriphClkInitStruct.PLL2.PLL2P = 2;
231-
PeriphClkInitStruct.PLL2.PLL2Q = 16;
232-
PeriphClkInitStruct.PLL2.PLL2R = 2;
233-
PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2_VCIRANGE_2;
233+
PeriphClkInitStruct.PLL2.PLL2Q = 2;
234+
PeriphClkInitStruct.PLL2.PLL2R = 4;
235+
PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2_VCIRANGE_1;
234236
PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2_VCORANGE_WIDE;
235237
PeriphClkInitStruct.PLL2.PLL2FRACN = 0;
236-
PeriphClkInitStruct.PLL2.PLL2ClockOut = RCC_PLL2_DIVQ;
237-
PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PLL2Q;
238-
PeriphClkInitStruct.OspiClockSelection = RCC_OSPICLKSOURCE_HCLK;
239-
PeriphClkInitStruct.Sdmmc1ClockSelection = RCC_SDMMC1CLKSOURCE_PLL1Q;
238+
PeriphClkInitStruct.PLL2.PLL2ClockOut = RCC_PLL2_DIVR;
239+
240240
PeriphClkInitStruct.PLL3.PLL3Source = RCC_PLL3_SOURCE_HSE;
241-
PeriphClkInitStruct.PLL3.PLL3M = 2;
242-
PeriphClkInitStruct.PLL3.PLL3N = 96;
241+
PeriphClkInitStruct.PLL3.PLL3M = 4;
242+
PeriphClkInitStruct.PLL3.PLL3N = 250;
243243
PeriphClkInitStruct.PLL3.PLL3P = 2;
244-
PeriphClkInitStruct.PLL3.PLL3Q = 8;
244+
PeriphClkInitStruct.PLL3.PLL3Q = 10;
245245
PeriphClkInitStruct.PLL3.PLL3R = 2;
246-
PeriphClkInitStruct.PLL3.PLL3RGE = RCC_PLL3_VCIRANGE_0;
247-
PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3_VCORANGE_MEDIUM;
246+
PeriphClkInitStruct.PLL3.PLL3RGE = RCC_PLL3_VCIRANGE_3;
247+
PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3_VCORANGE_WIDE;
248248
PeriphClkInitStruct.PLL3.PLL3FRACN = 0;
249249
PeriphClkInitStruct.PLL3.PLL3ClockOut = RCC_PLL3_DIVQ;
250-
PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_PLL3Q;
250+
251251
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {
252252
Error_Handler();
253253
}

0 commit comments

Comments
 (0)