1/*
2 * Copyright (c) 2017 Linaro Limited
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7/dts-v1/;
8#include <st/f4/stm32f429Xi.dtsi>
9#include <st/f4/stm32f429zitx-pinctrl.dtsi>
10#include "arduino_r3_connector.dtsi"
11#include <zephyr/dt-bindings/input/input-event-codes.h>
12
13/ {
14	model = "STMicroelectronics STM32F429ZI-NUCLEO board";
15	compatible = "st,stm32f429zi-nucleo";
16
17	chosen {
18		zephyr,console = &usart3;
19		zephyr,shell-uart = &usart3;
20		zephyr,sram = &sram0;
21		zephyr,flash = &flash0;
22		zephyr,ccm = &ccm0;
23		zephyr,code-partition = &slot0_partition;
24	};
25
26	leds: leds {
27		compatible = "gpio-leds";
28		green_led_1: led_1 {
29			gpios = <&gpiob 0 GPIO_ACTIVE_HIGH>;
30			label = "User LD1";
31		};
32		blue_led_1: led_2 {
33			gpios = <&gpiob 7 GPIO_ACTIVE_HIGH>;
34			label = "User LD2";
35		};
36		red_led_1: led_3 {
37			gpios = <&gpiob 14 GPIO_ACTIVE_HIGH>;
38			label = "User LD3";
39		};
40	};
41
42	gpio_keys {
43		compatible = "gpio-keys";
44		user_button: button {
45			label = "User";
46			gpios = <&gpioc 13 GPIO_ACTIVE_HIGH>;
47			zephyr,code = <INPUT_KEY_0>;
48		};
49	};
50
51	aliases {
52		led0 = &green_led_1;
53		led1 = &blue_led_1;
54		led2 = &red_led_1;
55		sw0 = &user_button;
56		watchdog0 = &iwdg;
57		die-temp0 = &die_temp;
58		volt-sensor0 = &vref;
59		volt-sensor1 = &vbat;
60	};
61};
62
63&clk_lsi {
64	status = "okay";
65};
66
67&clk_hse {
68	hse-bypass;
69	clock-frequency = <DT_FREQ_M(8)>; /* STLink 8MHz clock */
70	status = "okay";
71};
72
73&pll {
74	div-m = <8>;
75	mul-n = <336>;
76	div-p = <2>;
77	div-q = <7>;
78	clocks = <&clk_hse>;
79	status = "okay";
80};
81
82&rcc {
83	clocks = <&pll>;
84	clock-frequency = <DT_FREQ_M(168)>; /* highest value to get a precise USB clock */
85	ahb-prescaler = <1>;
86	apb1-prescaler = <4>;
87	apb2-prescaler = <2>;
88};
89
90&adc1 {
91	pinctrl-0 = <&adc1_in0_pa0>;
92	pinctrl-names = "default";
93	st,adc-clock-source = <SYNC>;
94	st,adc-prescaler = <2>;
95	status = "okay";
96};
97
98&die_temp {
99	status = "okay";
100};
101
102&dac1 {
103	status = "okay";
104	pinctrl-0 = <&dac_out1_pa4>;
105	pinctrl-names = "default";
106};
107
108&i2c1 {
109	pinctrl-0 = <&i2c1_scl_pb8 &i2c1_sda_pb9>;
110	pinctrl-names = "default";
111	status = "okay";
112	clock-frequency = <I2C_BITRATE_FAST>;
113};
114
115&i2c2 {
116	pinctrl-0 = <&i2c2_scl_pb10 &i2c2_sda_pb11>;
117	pinctrl-names = "default";
118	status = "okay";
119	clock-frequency = <I2C_BITRATE_FAST>;
120};
121
122&spi1 {
123	pinctrl-0 = <&spi1_sck_pa5 &spi1_miso_pa6 &spi1_mosi_pa7>;
124	pinctrl-names = "default";
125	cs-gpios = <&gpiod 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
126	status = "okay";
127};
128
129&usart3 {
130	pinctrl-0 = <&usart3_tx_pd8 &usart3_rx_pd9>;
131	pinctrl-names = "default";
132	current-speed = <115200>;
133	status = "okay";
134};
135&usart6 {
136	pinctrl-0 = <&usart6_tx_pg14 &usart6_rx_pg9>;
137	pinctrl-names = "default";
138	current-speed = <115200>;
139	status = "okay";
140};
141
142zephyr_udc0: &usbotg_fs {
143	pinctrl-0 = <&usb_otg_fs_dm_pa11 &usb_otg_fs_dp_pa12>;
144	pinctrl-names = "default";
145	status = "okay";
146};
147
148&timers1 {
149	st,prescaler = <10000>;
150	status = "okay";
151
152	pwm1: pwm {
153		status = "okay";
154		pinctrl-0 = <&tim1_ch3_pe13>;
155		pinctrl-names = "default";
156	};
157};
158
159&rtc {
160	clocks = <&rcc STM32_CLOCK_BUS_APB1 0x10000000>,
161		 <&rcc STM32_SRC_LSI RTC_SEL(2)>;
162	status = "okay";
163};
164
165&iwdg {
166	status = "okay";
167};
168
169&rng {
170	status = "okay";
171};
172
173&dma2 {
174	status = "okay";
175};
176
177&mac {
178	status = "okay";
179	pinctrl-0 = <&eth_mdc_pc1
180		     &eth_rxd0_pc4
181		     &eth_rxd1_pc5
182		     &eth_ref_clk_pa1
183		     &eth_mdio_pa2
184		     &eth_crs_dv_pa7
185		     &eth_tx_en_pg11
186		     &eth_txd0_pg13
187		     &eth_txd1_pb13>;
188	pinctrl-names = "default";
189};
190
191&flash0 {
192	partitions {
193		compatible = "fixed-partitions";
194		#address-cells = <1>;
195		#size-cells = <1>;
196
197		/* 64KB for bootloader */
198		boot_partition: partition@0 {
199			label = "mcuboot";
200			reg = <0x00000000 DT_SIZE_K(64)>;
201			read-only;
202		};
203
204		/* storage: 64KB for settings */
205		storage_partition: partition@10000 {
206			label = "storage";
207			reg = <0x00010000 DT_SIZE_K(64)>;
208		};
209
210		/* application image slot: 256KB */
211		slot0_partition: partition@20000 {
212			label = "image-0";
213			reg = <0x00020000 DT_SIZE_K(256)>;
214		};
215
216		/* backup slot: 256KB */
217		slot1_partition: partition@60000 {
218			label = "image-1";
219			reg = <0x00060000 DT_SIZE_K(256)>;
220		};
221
222		/* swap slot: 128KB */
223		scratch_partition: partition@a0000 {
224			label = "image-scratch";
225			reg = <0x000a0000 DT_SIZE_K(128)>;
226		};
227
228	};
229};
230
231&vref {
232	status = "okay";
233};
234
235&vbat {
236	status = "okay";
237};
238