Skip to content

Commit 6cffb0a

Browse files
committed
variant(f4): add STM32F429I-DISC1 support (fixes #2026)
Still need to test SPI & USB Signed-off-by: Aymane Bahssain <aymane.bahssain@st.com>
1 parent 0da10e7 commit 6cffb0a

File tree

6 files changed

+607
-0
lines changed

6 files changed

+607
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
197197
| :green_heart: | STM32F407VG | [STM32F407G-DISC1](http://www.st.com/en/evaluation-tools/stm32f4discovery.html) | *0.1.0* | |
198198
| :yellow_heart: | STM32F411VE | [STM32F411E-DISCO](https://www.st.com/en/evaluation-tools/32f411ediscovery.html) | **2.12.0** | |
199199
| :green_heart: | STM32F413ZH | [32F413HDISCOVERY](https://www.st.com/en/evaluation-tools/32f413hdiscovery.html) | *1.9.0* | |
200+
| :yellow_heart: | STM32F429I | [STM32F429I-DISC1](https://www.st.com/en/evaluation-tools/32f429idiscovery.html) | **2.12.0** | |
200201
| :green_heart: | STM32F746NG | [STM32F746G-DISCOVERY](http://www.st.com/en/evaluation-tools/32f746gdiscovery.html) | *0.1.0* | |
201202
| :green_heart: | STM32G031J6 | [STM32G0316-DISCO](https://www.st.com/en/evaluation-tools/stm32g0316-disco.html) | *1.9.0* | |
202203
| :green_heart: | STM32G431CB | [B-G431B-ESC1](https://www.st.com/en/evaluation-tools/b-g431b-esc1.html) | *2.0.0* | |

boards.txt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1505,6 +1505,22 @@ Disco.menu.pnum.DISCO_F413ZH.build.peripheral_pins=-DCUSTOM_PERIPHERAL_PINS
15051505
Disco.menu.pnum.DISCO_F413ZH.openocd.target=stm32f4x
15061506
Disco.menu.pnum.DISCO_F413ZH.debug.svd_file={runtime.tools.STM32_SVD.path}/svd/STM32F4xx/STM32F413.svd
15071507

1508+
# DISCO_F429ZI board
1509+
Disco.menu.pnum.DISCO_F429ZI= STM32F429ZI-DISCO
1510+
Disco.menu.pnum.DISCO_F429ZI.node=DIS_F429ZI
1511+
Disco.menu.pnum.DISCO_F429ZI.upload.maximum_size=2097152
1512+
Disco.menu.pnum.DISCO_F429ZI.upload.maximum_data_size=196608
1513+
Disco.menu.pnum.DISCO_F429ZI.build.mcu=cortex-m4
1514+
Disco.menu.pnum.DISCO_F429ZI.build.fpu=-mfpu=fpv4-sp-d16
1515+
Disco.menu.pnum.DISCO_F429ZI.build.float-abi=-mfloat-abi=hard
1516+
Disco.menu.pnum.DISCO_F429ZI.build.board=DISCO_F429ZI
1517+
Disco.menu.pnum.DISCO_F429ZI.build.series=STM32F4xx
1518+
Disco.menu.pnum.DISCO_F429ZI.build.product_line=STM32F429xx
1519+
Disco.menu.pnum.DISCO_F429ZI.build.variant=STM32F4xx/F427Z(G-I)T_F429ZET_F429Z(G-I)(T-Y)_F437Z(G-I)T_F439Z(G-I)(T-Y)
1520+
Disco.menu.pnum.DISCO_F429ZI.build.variant_h=variant_DISCO_F429ZI.h
1521+
Disco.menu.pnum.DISCO_F429ZI.openocd.target=stm32f4x
1522+
Disco.menu.pnum.DISCO_F429ZI.debug.svd_file={runtime.tools.STM32_SVD.path}/svd/STM32F4xx/STM32F429.svd
1523+
15081524
# DISCO_F746NG board
15091525
Disco.menu.pnum.DISCO_F746NG=STM32F746G-DISCOVERY
15101526
Disco.menu.pnum.DISCO_F746NG.node=DIS_F746NG

cmake/boards_db.cmake

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5704,6 +5704,88 @@ target_compile_options(DISCO_F413ZH_xusb_HSFS INTERFACE
57045704
"SHELL:-DUSE_USB_HS -DUSE_USB_HS_IN_FS"
57055705
)
57065706

5707+
# DISCO_F429ZI
5708+
# -----------------------------------------------------------------------------
5709+
5710+
set(DISCO_F429ZI_VARIANT_PATH "${CMAKE_CURRENT_LIST_DIR}/../variants/STM32F4xx/F427Z(G-I)T_F429ZET_F429Z(G-I)(T-Y)_F437Z(G-I)T_F439Z(G-I)(T-Y)")
5711+
set(DISCO_F429ZI_MAXSIZE 2097152)
5712+
set(DISCO_F429ZI_MAXDATASIZE 196608)
5713+
set(DISCO_F429ZI_MCU cortex-m4)
5714+
set(DISCO_F429ZI_FPCONF "fpv4-sp-d16-hard")
5715+
add_library(DISCO_F429ZI INTERFACE)
5716+
target_compile_options(DISCO_F429ZI INTERFACE
5717+
"SHELL:-DSTM32F429xx"
5718+
"SHELL:"
5719+
"SHELL:"
5720+
"SHELL:-mfpu=fpv4-sp-d16 -mfloat-abi=hard"
5721+
-mcpu=${DISCO_F429ZI_MCU}
5722+
)
5723+
target_compile_definitions(DISCO_F429ZI INTERFACE
5724+
"STM32F4xx"
5725+
"ARDUINO_DISCO_F429ZI"
5726+
"BOARD_NAME=\"DISCO_F429ZI\""
5727+
"BOARD_ID=DISCO_F429ZI"
5728+
"VARIANT_H=\"variant_DISCO_F429ZI.h\""
5729+
)
5730+
target_include_directories(DISCO_F429ZI INTERFACE
5731+
${CMAKE_CURRENT_LIST_DIR}/../system/STM32F4xx
5732+
${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/STM32F4xx_HAL_Driver/Inc
5733+
${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/STM32F4xx_HAL_Driver/Src
5734+
${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/CMSIS/Device/ST/STM32F4xx/Include/
5735+
${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/
5736+
${DISCO_F429ZI_VARIANT_PATH}
5737+
)
5738+
5739+
target_link_options(DISCO_F429ZI INTERFACE
5740+
"LINKER:--default-script=${DISCO_F429ZI_VARIANT_PATH}/ldscript.ld"
5741+
"LINKER:--defsym=LD_FLASH_OFFSET=0x0"
5742+
"LINKER:--defsym=LD_MAX_SIZE=2097152"
5743+
"LINKER:--defsym=LD_MAX_DATA_SIZE=196608"
5744+
"SHELL:-mfpu=fpv4-sp-d16 -mfloat-abi=hard"
5745+
-mcpu=${DISCO_F429ZI_MCU}
5746+
)
5747+
5748+
add_library(DISCO_F429ZI_serial_disabled INTERFACE)
5749+
target_compile_options(DISCO_F429ZI_serial_disabled INTERFACE
5750+
"SHELL:"
5751+
)
5752+
add_library(DISCO_F429ZI_serial_generic INTERFACE)
5753+
target_compile_options(DISCO_F429ZI_serial_generic INTERFACE
5754+
"SHELL:-DHAL_UART_MODULE_ENABLED"
5755+
)
5756+
add_library(DISCO_F429ZI_serial_none INTERFACE)
5757+
target_compile_options(DISCO_F429ZI_serial_none INTERFACE
5758+
"SHELL:-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE"
5759+
)
5760+
add_library(DISCO_F429ZI_usb_CDC INTERFACE)
5761+
target_compile_options(DISCO_F429ZI_usb_CDC INTERFACE
5762+
"SHELL:-DUSBCON -DUSBD_VID=0x0483 -DUSBD_PID=0x5740 -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB"
5763+
)
5764+
add_library(DISCO_F429ZI_usb_CDCgen INTERFACE)
5765+
target_compile_options(DISCO_F429ZI_usb_CDCgen INTERFACE
5766+
"SHELL:-DUSBCON -DUSBD_VID=0x0483 -DUSBD_PID=0x5740 -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC"
5767+
)
5768+
add_library(DISCO_F429ZI_usb_HID INTERFACE)
5769+
target_compile_options(DISCO_F429ZI_usb_HID INTERFACE
5770+
"SHELL:-DUSBCON -DUSBD_VID=0x0483 -DUSBD_PID=0x5740 -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_HID_COMPOSITE"
5771+
)
5772+
add_library(DISCO_F429ZI_usb_none INTERFACE)
5773+
target_compile_options(DISCO_F429ZI_usb_none INTERFACE
5774+
"SHELL:"
5775+
)
5776+
add_library(DISCO_F429ZI_xusb_FS INTERFACE)
5777+
target_compile_options(DISCO_F429ZI_xusb_FS INTERFACE
5778+
"SHELL:"
5779+
)
5780+
add_library(DISCO_F429ZI_xusb_HS INTERFACE)
5781+
target_compile_options(DISCO_F429ZI_xusb_HS INTERFACE
5782+
"SHELL:-DUSE_USB_HS"
5783+
)
5784+
add_library(DISCO_F429ZI_xusb_HSFS INTERFACE)
5785+
target_compile_options(DISCO_F429ZI_xusb_HSFS INTERFACE
5786+
"SHELL:-DUSE_USB_HS -DUSE_USB_HS_IN_FS"
5787+
)
5788+
57075789
# DISCO_F746NG
57085790
# -----------------------------------------------------------------------------
57095791

variants/STM32F4xx/F427Z(G-I)T_F429ZET_F429Z(G-I)(T-Y)_F437Z(G-I)T_F439Z(G-I)(T-Y)/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ add_library(variant_bin STATIC EXCLUDE_FROM_ALL
2222
generic_clock.c
2323
PeripheralPins.c
2424
PeripheralPins_NUCLEO_F4x9ZI.c
25+
variant_DISCO_F429ZI.cpp
2526
variant_generic.cpp
2627
variant_NUCLEO_F4x9ZI.cpp
2728
)
Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,216 @@
1+
/*
2+
*******************************************************************************
3+
* Copyright (c) 2025, 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_DISCO_F429ZI)
14+
#include "pins_arduino.h"
15+
16+
// Digital PinName array
17+
const PinName digitalPin[] = {
18+
PF_4, // 0
19+
PF_2, // 1
20+
PF_0, // 2
21+
PC_14, // 3
22+
PE_6, // 4
23+
PE_4, // 5
24+
PE_2, // 6
25+
PE_0, // 7
26+
PB_8, // 8
27+
NC, // 9 - BOOT0
28+
PB_6, // 10
29+
PB_4, // 11
30+
PG_15, // 12
31+
PG_13, // 13
32+
PG_11, // 14
33+
PG_9, // 15
34+
PD_7, // 16
35+
PD_5, // 17
36+
PD_3, // 18
37+
PD_1, // 19
38+
PC_12, // 20
39+
PC_10, // 21
40+
PA_14, // 22
41+
PA_12, // 23
42+
PA_10, // 24
43+
PA_8, // 25
44+
PC_8, // 26
45+
PC_6, // 27
46+
PG_7, // 28
47+
PG_5, // 29
48+
PF_5, // 30
49+
PF_3, // 31
50+
PF_1, // 32
51+
PC_15, // 33
52+
PC_13, // 34
53+
PE_5, // 35
54+
PE_3, // 36
55+
PE_1, // 37
56+
PB_9, // 38
57+
PB_7, // 39
58+
PB_5, // 40
59+
PB_3, // 41
60+
PG_14, // 42
61+
PG_12, // 43
62+
PG_10, // 44
63+
PD_6, // 45
64+
PD_4, // 46
65+
PD_2, // 47
66+
PD_0, // 48
67+
PC_11, // 49
68+
PA_15, // 50
69+
PA_13, // 51
70+
PA_11, // 52
71+
PA_9, // 53
72+
PC_9, // 54
73+
PC_7, // 55
74+
PG_8, // 56
75+
PG_6, // 57
76+
PG_4, // 58
77+
PF_6, // 59
78+
PF_8, // 60
79+
PF_10, // 61
80+
PH_1, // 62
81+
PC_1, // 63
82+
PC_3, // 64
83+
PA_1, // 65
84+
PA_3, // 66
85+
PA_5, // 67
86+
PA_7, // 68
87+
PC_5, // 69
88+
PB_1, // 70
89+
PF_12, // 71
90+
PF_14, // 72
91+
PG_0, // 73
92+
PE_7, // 74
93+
PE_9, // 75
94+
PE_11, // 76
95+
PE_13, // 77
96+
PE_15, // 78
97+
PB_11, // 79
98+
PB_13, // 80
99+
PB_15, // 81 // Not connected SB26 OFF
100+
PD_9, // 82
101+
PD_11, // 83
102+
PD_13, // 84
103+
PD_15, // 85
104+
PG_3, // 86
105+
PF_7, // 87
106+
PF_9, // 88
107+
PH_0, // 89
108+
PC_0, // 90
109+
PC_2, // 91
110+
PA_0, // 92
111+
PA_2, // 93
112+
PA_4, // 94
113+
PA_6, // 95
114+
PC_4, // 96
115+
PB_0, // 97
116+
NC, // 98 - BOOT1
117+
PF_11, // 99
118+
PF_13, // 100
119+
PF_15, // 101
120+
PG_1, // 102
121+
PE_8, // 103
122+
PE_10, // 104
123+
PE_12, // 105
124+
PE_14, // 106
125+
PB_10, // 107
126+
PB_12, // 108
127+
PB_14, // 109 // Not connected SB27 OFF
128+
PD_8, // 110
129+
PD_10, // 111
130+
PD_12, // 112
131+
PD_14, // 113
132+
PG_2 // 114
133+
};
134+
// Analog (Ax) pin number array
135+
const uint32_t analogInputPin[] = {
136+
0, // A0,
137+
30, // A1,
138+
31, // A2,
139+
59, // A3,
140+
60, // A4,
141+
61, // A5,
142+
63, // A6,
143+
64, // A7,
144+
65, // A8,
145+
66, // A9,
146+
67, // A10,
147+
68, // A11,
148+
69, // A12,
149+
70, // A13,
150+
87, // A14,
151+
88, // A15,
152+
90, // A16,
153+
91, // A17,
154+
92, // A18,
155+
93, // A19,
156+
94, // A20,
157+
95, // A21,
158+
96, // A22,
159+
97 // A23,
160+
};
161+
162+
// ----------------------------------------------------------------------------
163+
164+
#ifdef __cplusplus
165+
extern "C" {
166+
#endif
167+
168+
/**
169+
* @brief None
170+
* @param None
171+
* @retval None
172+
*/
173+
WEAK void SystemClock_Config(void)
174+
{
175+
RCC_OscInitTypeDef RCC_OscInitStruct = {};
176+
RCC_ClkInitTypeDef RCC_ClkInitStruct = {};
177+
178+
/** Configure the main internal regulator output voltage
179+
*/
180+
__HAL_RCC_PWR_CLK_ENABLE();
181+
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
182+
183+
/** Initializes the RCC Oscillators according to the specified parameters
184+
* in the RCC_OscInitTypeDef structure.
185+
*/
186+
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
187+
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
188+
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
189+
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
190+
RCC_OscInitStruct.PLL.PLLM = 4;
191+
RCC_OscInitStruct.PLL.PLLN = 72;
192+
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
193+
RCC_OscInitStruct.PLL.PLLQ = 3;
194+
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
195+
Error_Handler();
196+
}
197+
198+
/** Initializes the CPU, AHB and APB buses clocks
199+
*/
200+
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
201+
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
202+
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
203+
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
204+
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
205+
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
206+
207+
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) {
208+
Error_Handler();
209+
}
210+
}
211+
212+
#ifdef __cplusplus
213+
}
214+
#endif
215+
216+
#endif /* ARDUINO_DISCO_F429ZI */

0 commit comments

Comments
 (0)