1/*
2 * Copyright (c) 2018 AJ Palmer
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7/dts-v1/;
8#include <st/f7/stm32f746Xg.dtsi>
9#include <st/f7/stm32f746zgtx-pinctrl.dtsi>
10#include "arduino_r3_connector.dtsi"
11#include <zephyr/dt-bindings/input/input-event-codes.h>
12
13/*
14 * WARNING: The pin PA7 will conflict on selection of SPI_1 and ETH_STM32_HAL.
15 *          If you require both peripherals, and you do not need Arduino Uno v3
16 *          compatibility, the pin PB5 (also on ST Zio connector) can be used
17 *          for the SPI_1 MOSI signal.
18 */
19
20/ {
21	model = "STMicroelectronics STM32F746ZG-NUCLEO board";
22	compatible = "st,stm32f746zg-nucleo";
23
24	chosen {
25		zephyr,console = &usart3;
26		zephyr,shell-uart = &usart3;
27		zephyr,sram = &sram0;
28		zephyr,flash = &flash0;
29		zephyr,dtcm = &dtcm;
30		zephyr,canbus = &can1;
31	};
32
33	leds: leds {
34		compatible = "gpio-leds";
35		green_led: led_0 {
36			gpios = <&gpiob 0 GPIO_ACTIVE_HIGH>;
37			label = "User LD1";
38		};
39		blue_led: led_1 {
40			gpios = <&gpiob 7 GPIO_ACTIVE_HIGH>;
41			label = "User LD2";
42		};
43		red_led: led_2 {
44			gpios = <&gpiob 14 GPIO_ACTIVE_HIGH>;
45			label = "User LD3";
46		};
47	};
48
49	gpio_keys {
50		compatible = "gpio-keys";
51		user_button: button_0 {
52			label = "User";
53			gpios = <&gpioc 13 GPIO_ACTIVE_HIGH>;
54			zephyr,code = <INPUT_KEY_0>;
55		};
56	};
57
58	aliases {
59		led0 = &green_led;
60		led1 = &blue_led;
61		led2 = &red_led;
62		sw0 = &user_button;
63		watchdog0 = &iwdg;
64		die-temp0 = &die_temp;
65		volt-sensor0 = &vref;
66		volt-sensor1 = &vbat;
67	};
68};
69
70&clk_lsi {
71	status = "okay";
72};
73
74&clk_hse {
75	hse-bypass;
76	clock-frequency = <DT_FREQ_M(8)>; /* STLink 8MHz clock */
77	status = "okay";
78};
79
80&pll {
81	div-m = <4>;
82	mul-n = <192>;
83	div-p = <2>;
84	div-q = <8>;
85	clocks = <&clk_hse>;
86	status = "okay";
87};
88
89&rcc {
90	clocks = <&pll>;
91	clock-frequency = <DT_FREQ_M(192)>;
92	ahb-prescaler = <1>;
93	apb1-prescaler = <4>;
94	apb2-prescaler = <2>;
95};
96
97&usart2 {
98	pinctrl-0 = <&usart2_tx_pd5 &usart2_rx_pd6
99		     &usart2_rts_pd4 &usart2_cts_pd3>;
100	pinctrl-names = "default";
101	current-speed = <115200>;
102};
103
104&usart3 {
105	pinctrl-0 = <&usart3_tx_pd8 &usart3_rx_pd9>;
106	pinctrl-names = "default";
107	current-speed = <115200>;
108	status = "okay";
109};
110
111&usart6 {
112	pinctrl-0 = <&usart6_tx_pg14 &usart6_rx_pg9>;
113	pinctrl-names = "default";
114	current-speed = <115200>;
115	status = "okay";
116};
117
118zephyr_udc0: &usbotg_fs {
119	pinctrl-0 = <&usb_otg_fs_dm_pa11 &usb_otg_fs_dp_pa12>;
120	pinctrl-names = "default";
121	status = "okay";
122};
123
124&i2c1 {
125	pinctrl-0 = <&i2c1_scl_pb8 &i2c1_sda_pb9>;
126	pinctrl-names = "default";
127	status = "okay";
128	clock-frequency = <I2C_BITRATE_FAST>;
129};
130
131&i2c2 {
132	pinctrl-0 = <&i2c2_scl_pb10 &i2c2_sda_pb11>;
133	pinctrl-names = "default";
134	status = "okay";
135	clock-frequency = <I2C_BITRATE_FAST>;
136};
137
138&timers1 {
139	st,prescaler = <10000>;
140	status = "okay";
141
142	pwm1: pwm {
143		status = "okay";
144		pinctrl-0 = <&tim1_ch3_pe13>;
145		pinctrl-names = "default";
146	};
147};
148
149&spi1 {
150	pinctrl-0 = <&spi1_sck_pa5 &spi1_miso_pa6 &spi1_mosi_pa7>;
151	pinctrl-names = "default";
152	cs-gpios = <&gpiod 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
153	status = "okay";
154};
155
156&iwdg {
157	status = "okay";
158};
159
160&rtc {
161	clocks = <&rcc STM32_CLOCK_BUS_APB1 0x10000000>,
162		 <&rcc STM32_SRC_LSI RTC_SEL(2)>;
163	status = "okay";
164};
165
166&can1 {
167	pinctrl-0 = <&can1_rx_pd0 &can1_tx_pd1>;
168	pinctrl-names = "default";
169	status = "okay";
170};
171
172&dma2 {
173	status = "okay";
174};
175
176&adc1 {
177	pinctrl-0 = <&adc1_in0_pa0>;
178	pinctrl-names = "default";
179	st,adc-clock-source = <SYNC>;
180	st,adc-prescaler = <2>;
181	status = "okay";
182};
183
184&dac1 {
185	pinctrl-0 = <&dac_out1_pa4>;
186	pinctrl-names = "default";
187	status = "okay";
188};
189
190&rng {
191	status = "okay";
192};
193
194&die_temp {
195	status = "okay";
196};
197
198&mac {
199	status = "okay";
200	pinctrl-0 = <&eth_mdc_pc1
201		     &eth_rxd0_pc4
202		     &eth_rxd1_pc5
203		     &eth_ref_clk_pa1
204		     &eth_mdio_pa2
205		     &eth_crs_dv_pa7
206		     &eth_tx_en_pg11
207		     &eth_txd0_pg13
208		     &eth_txd1_pb13>;
209	pinctrl-names = "default";
210};
211
212&backup_sram {
213	status = "okay";
214};
215
216&vref {
217	status = "okay";
218};
219
220&vbat {
221	status = "okay";
222};
223