Skip to content

Commit 56655f3

Browse files
dojyorinfpistm
andcommitted
fix(h5): H563ZI clock config
Remove all HSI usage. Fix ADC/DAC clock frequency (125MHz). Signed-off-by: Kazuki Ota <[email protected]> Co-Authored-by: Frederic Pillon <[email protected]>
1 parent 6e60087 commit 56655f3

File tree

2 files changed

+41
-27
lines changed

2 files changed

+41
-27
lines changed

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

+25-13
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
}

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

+16-14
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)