Skip to content

Commit 652cff5

Browse files
committed
variant: U5: add NUCLEO-U575ZI-Q
Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent acc97bf commit 652cff5

File tree

4 files changed

+531
-0
lines changed

4 files changed

+531
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
9292
| :green_heart: | STM32L4R5ZI-P | [Nucleo L4R5ZI-P](http://www.st.com/en/evaluation-tools/nucleo-l4r5zi-p.html) | *1.4.0* | |
9393
| :green_heart: | STM32L552ZE-Q | [Nucleo L552ZE-Q](https://www.st.com/en/evaluation-tools/nucleo-l552ze-q.html) | *2.0.0* | |
9494
| :green_heart: | STM32H743ZI | [Nucleo H743ZI(2)](https://www.st.com/en/evaluation-tools/nucleo-h743zi.html) | *1.5.0* | Nucleo H743ZI2 since 1.6.0 |
95+
| :yellow_heart: | STM32U575ZI-Q | [NUCLEO-U575ZI-Q](https://www.st.com/en/evaluation-tools/nucleo-u575zi-q.html) | **2.1.0** | |
9596

9697
### [Nucleo 64](https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-nucleo-boards.html) boards
9798

boards.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,19 @@ Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.build.product_line=STM32L552xx
180180
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.build.variant=STM32L5xx/L552Z(C-E)TxQ_L562ZETxQ
181181
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.build.cmsis_lib_gcc=arm_ARMv8MMLlfsp_math
182182

183+
# NUCLEO_U575ZI_Q board
184+
Nucleo_144.menu.pnum.NUCLEO_U575ZI_Q=Nucleo U575ZI-Q
185+
Nucleo_144.menu.pnum.NUCLEO_U575ZI_Q.node=NOD_U575ZI
186+
Nucleo_144.menu.pnum.NUCLEO_U575ZI_Q.upload.maximum_size=2097152
187+
Nucleo_144.menu.pnum.NUCLEO_U575ZI_Q.upload.maximum_data_size=262144
188+
Nucleo_144.menu.pnum.NUCLEO_U575ZI_Q.build.mcu=cortex-m33
189+
Nucleo_144.menu.pnum.NUCLEO_U575ZI_Q.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard
190+
Nucleo_144.menu.pnum.NUCLEO_U575ZI_Q.build.board=NUCLEO_U575ZI_Q
191+
Nucleo_144.menu.pnum.NUCLEO_U575ZI_Q.build.series=STM32U5xx
192+
Nucleo_144.menu.pnum.NUCLEO_U575ZI_Q.build.product_line=STM32U575xx
193+
Nucleo_144.menu.pnum.NUCLEO_U575ZI_Q.build.variant=STM32U5xx/U575Z(G-I)TxQ_U585ZETxQ
194+
Nucleo_144.menu.pnum.NUCLEO_U575ZI_Q.build.cmsis_lib_gcc=arm_ARMv8MMLlfsp_math
195+
183196
# Upload menu
184197
Nucleo_144.menu.upload_method.MassStorage=Mass Storage
185198
Nucleo_144.menu.upload_method.MassStorage.upload.protocol=
Lines changed: 241 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,241 @@
1+
/*
2+
*******************************************************************************
3+
* Copyright (c) 2021, STMicroelectronics
4+
* All rights reserved.
5+
*
6+
* This software component is licensed by ST under BSD 3-Clause license,
7+
* the "License"; You may not use this file except in compliance with the
8+
* License. You may obtain a copy of the License at:
9+
* opensource.org/licenses/BSD-3-Clause
10+
*
11+
*******************************************************************************
12+
*/
13+
#if defined(ARDUINO_NUCLEO_U575ZI_Q)
14+
#include "pins_arduino.h"
15+
16+
// Digital PinName array
17+
const PinName digitalPin[] = {
18+
PG_8, // D0
19+
PG_7, // D1
20+
PF_15, // D2/A9
21+
PE_13, // D3
22+
PF_14, // D4/A10
23+
PE_11, // D5
24+
PE_9, // D6
25+
PF_13, // D7
26+
PF_12, // D8
27+
PD_15, // D9
28+
PD_14, // D10
29+
PA_7, // D11/A11
30+
PA_6, // D12/A12
31+
PA_5, // D13/A13
32+
PB_9, // D14
33+
PB_8, // D15
34+
PC_6, // D16
35+
PD_11, // D17/A14
36+
PB_13, // D18
37+
PD_12, // D19/A15
38+
PA_4, // D20/A16
39+
PB_4, // D21
40+
PB_5, // D22
41+
PB_3, // D23
42+
PA_4, // D24
43+
PB_4, // D25
44+
PA_2, // D26
45+
PB_10, // D27
46+
PE_15, // D28
47+
PB_0, // D29
48+
PE_12, // D30
49+
PE_14, // D31
50+
PA_0, // D32/A17
51+
PA_8, // D33
52+
PE_0, // D34
53+
PB_11, // D35
54+
PB_10, // D36
55+
PE_15, // D37
56+
PE_14, // D38
57+
PE_12, // D39
58+
PE_10, // D40
59+
PE_7, // D41
60+
PE_8, // D42
61+
PC_8, // D43
62+
PC_9, // D44
63+
PC_10, // D45
64+
PC_11, // D46
65+
PC_12, // D47
66+
PD_2, // D48
67+
PF_3, // D49
68+
PF_5, // D50
69+
PD_7, // D51
70+
PD_6, // D52
71+
PD_5, // D53
72+
PD_4, // D54
73+
PD_3, // D55
74+
PE_2, // D56
75+
PE_4, // D57
76+
PE_5, // D58
77+
PE_6, // D59
78+
PE_3, // D60
79+
PF_8, // D61
80+
PF_7, // D62
81+
PF_9, // D63
82+
PG_1, // D64/A18
83+
PG_0, // D65/A19
84+
PD_1, // D66
85+
PD_0, // D67
86+
PF_0, // D68
87+
PF_1, // D69
88+
PF_2, // D70
89+
PB_6, // D71
90+
PB_2, // D72/A20
91+
PA_3, // D73/A0
92+
PA_2, // D74/A1
93+
PC_3, // D75/A2
94+
PB_0, // D76/A3
95+
PC_1, // D77/A4
96+
PC_0, // D78/A5
97+
PB_1, // D79/A6
98+
PC_2, // D80/A7
99+
PA_1, // D81/A8
100+
PA_9, // D82
101+
PA_10, // D83
102+
PA_11, // D84
103+
PA_12, // D85
104+
PA_13, // D86
105+
PA_14, // D87
106+
PA_15, // D88
107+
PB_7, // D89
108+
PB_14, // D90
109+
PB_15, // D91
110+
PC_7, // D92
111+
PC_13, // D93
112+
PC_14, // D94
113+
PC_15, // D95
114+
PD_8, // D96
115+
PD_9, // D97
116+
PD_10, // D98
117+
PD_13, // D99/A21
118+
PE_1, // D100
119+
PF_4, // D101
120+
PF_6, // D102
121+
PF_10, // D103
122+
PF_11, // D104
123+
PG_2, // D105
124+
PG_3, // D106
125+
PG_4, // D107
126+
PG_5, // D108
127+
PG_6, // D109
128+
PG_9, // D110
129+
PG_10, // D111
130+
PG_12, // D112
131+
PG_13, // D113
132+
PG_14, // D114
133+
PG_15, // D115
134+
PH_0, // D116
135+
PH_1, // D117
136+
PH_3 // D118
137+
};
138+
139+
// Analog (Ax) pin number array
140+
const uint32_t analogInputPin[] = {
141+
73, // A0, PA3
142+
74, // A1, PA2
143+
75, // A2, PC3
144+
76, // A3, PB0
145+
77, // A4, PC1
146+
78, // A5, PC0
147+
79, // A6, PB1
148+
80, // A7, PC2
149+
81, // A8, PA1
150+
2, // A9, PF15
151+
4, // A10, PF14
152+
11, // A11, PA7
153+
12, // A12, PA6
154+
13, // A13, PA5
155+
17, // A14, PD11
156+
19, // A15, PD12
157+
20, // A16, PA4
158+
32, // A17, PA0
159+
64, // A18, PG1
160+
65, // A19, PG0
161+
72, // A20, PB2
162+
99 // A21, PD13
163+
};
164+
165+
// ----------------------------------------------------------------------------
166+
167+
#ifdef __cplusplus
168+
extern "C" {
169+
#endif
170+
171+
/** System Clock Configuration
172+
*/
173+
WEAK void SystemClock_Config(void)
174+
{
175+
RCC_OscInitTypeDef RCC_OscInitStruct = {};
176+
RCC_ClkInitTypeDef RCC_ClkInitStruct = {};
177+
RCC_PeriphCLKInitTypeDef PeriphClkInit = {};
178+
179+
/** Configure the main internal regulator output voltage
180+
*/
181+
if (HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1) != HAL_OK) {
182+
Error_Handler();
183+
}
184+
/** Configure LSE Drive Capability
185+
*/
186+
HAL_PWR_EnableBkUpAccess();
187+
__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);
188+
/** Initializes the CPU, AHB and APB busses clocks
189+
*/
190+
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48 | RCC_OSCILLATORTYPE_HSI
191+
| RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_MSI;
192+
RCC_OscInitStruct.LSEState = RCC_LSE_ON;
193+
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
194+
RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;
195+
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
196+
RCC_OscInitStruct.MSIState = RCC_MSI_ON;
197+
RCC_OscInitStruct.MSICalibrationValue = RCC_MSICALIBRATION_DEFAULT;
198+
RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_0;
199+
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
200+
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_MSI;
201+
RCC_OscInitStruct.PLL.PLLMBOOST = RCC_PLLMBOOST_DIV4;
202+
RCC_OscInitStruct.PLL.PLLM = 3;
203+
RCC_OscInitStruct.PLL.PLLN = 10;
204+
RCC_OscInitStruct.PLL.PLLP = 2;
205+
RCC_OscInitStruct.PLL.PLLQ = 2;
206+
RCC_OscInitStruct.PLL.PLLR = 1;
207+
RCC_OscInitStruct.PLL.PLLRGE = RCC_PLLVCIRANGE_1;
208+
RCC_OscInitStruct.PLL.PLLFRACN = 0;
209+
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
210+
Error_Handler();
211+
}
212+
/** Initializes the CPU, AHB and APB busses clocks
213+
*/
214+
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
215+
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2
216+
| RCC_CLOCKTYPE_PCLK3;
217+
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
218+
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
219+
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
220+
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
221+
RCC_ClkInitStruct.APB3CLKDivider = RCC_HCLK_DIV1;
222+
223+
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK) {
224+
Error_Handler();
225+
}
226+
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADCDAC | RCC_PERIPHCLK_DAC1
227+
| RCC_PERIPHCLK_CLK48;
228+
PeriphClkInit.AdcDacClockSelection = RCC_ADCDACCLKSOURCE_HSI;
229+
PeriphClkInit.Dac1ClockSelection = RCC_DAC1CLKSOURCE_LSE;
230+
PeriphClkInit.Clk48ClockSelection = RCC_CLK48CLKSOURCE_HSI48;
231+
232+
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) {
233+
Error_Handler();
234+
}
235+
}
236+
237+
#ifdef __cplusplus
238+
}
239+
#endif
240+
241+
#endif /* ARDUINO_NUCLEO_U575ZI_Q */

0 commit comments

Comments
 (0)