Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

286 lines
5.5 KiB

/*
* Copyright 2024 Felipe Neves
*
* SPDX-License-Identifier: Apache-2.0
*/
/dts-v1/;
#include <st/h7/stm32h747Xi_m7.dtsi>
#include <st/h7/stm32h747a(g-i)ix-pinctrl.dtsi>
#include <zephyr/dt-bindings/memory-attr/memory-attr-arm.h>
#include "arduino_nicla_vision.dtsi"
/ {
model = "Arduino Nicla Vision Board (M7)";
compatible = "arduino,nicla-vision";
chosen {
zephyr,console = &lpuart1;
zephyr,shell-uart = &lpuart1;
zephyr,uart-mcumgr = &lpuart1;
zephyr,bt-hci = &bt_hci_uart;
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,code-partition = &slot0_partition;
zephyr,camera = &dcmi;
};
aliases {
led0 = &red_led;
led1 = &green_led;
};
otghs_ulpi_phy: otghs_ulpis_phy {
compatible = "usb-ulpi-phy";
#phy-cells = <0>;
};
};
&clk_hse {
status = "okay";
hse-bypass;
clock-frequency = <DT_FREQ_M(25)>;
};
&clk_lse {
lse-bypass;
status = "okay";
};
&clk_hsi48 {
status = "okay";
};
&pll {
div-m = <5>;
mul-n = <192>;
div-p = <2>;
div-q = <4>;
div-r = <2>;
clocks = <&clk_hse>;
status = "okay";
};
&rcc {
clocks = <&pll>;
clock-frequency = <DT_FREQ_M(480)>;
};
&lpuart1 {
status = "okay";
pinctrl-0 = <&lpuart1_tx_pa9 &lpuart1_rx_pa10>;
pinctrl-names = "default";
current-speed = <115200>;
};
&usart1 {
pinctrl-0 = <&usart1_rx_pb7 &usart1_tx_pb6
&usart1_rts_pa12 &usart1_cts_pa11>;
pinctrl-names = "default";
current-speed = <115200>;
status = "okay";
hw-flow-control;
bt_hci_uart: bt_hci_uart {
compatible = "zephyr,bt-hci-uart";
status = "okay";
murata-1dx {
compatible = "infineon,cyw43xxx-bt-hci";
bt-reg-on-gpios = <&gpiof 14 GPIO_ACTIVE_HIGH>;
bt-host-wake-gpios = <&gpiod 14 GPIO_ACTIVE_HIGH>;
bt-dev-wake-gpios = <&gpioe 9 GPIO_ACTIVE_HIGH>;
fw-download-speed = <115200>;
};
};
};
zephyr_i2c: &i2c1 {
status = "disabled";
pinctrl-0 = <&i2c1_scl_pb8 &i2c1_sda_pb9>;
pinctrl-names = "default";
clock-frequency = <I2C_BITRATE_FAST>;
};
&i2c2 {
status = "okay";
pinctrl-0 = <&i2c2_scl_pf1 &i2c2_sda_pf0>;
pinctrl-names = "default";
clock-frequency = <I2C_BITRATE_FAST>;
vl53l1x: vl53l1x@52 {
compatible = "st,vl53l1x";
reg = <0x52>;
status = "okay";
xshut-gpios = <&gpiog 10 GPIO_ACTIVE_HIGH>;
int-gpios = <&gpiod 8 GPIO_ACTIVE_HIGH>;
};
};
&spi4 {
status = "okay";
pinctrl-0 = <&spi4_nss_pe11 &spi4_sck_pe12
&spi4_miso_pe13 &spi4_mosi_pe14>;
pinctrl-names = "default";
};
&spi5 {
status = "okay";
pinctrl-0 = <&spi5_nss_pf6 &spi5_sck_pf7
&spi5_miso_pf8 &spi5_mosi_pf11>;
pinctrl-names = "default";
lsm6dso: lsm6dso@0 {
compatible = "st,lsm6dso";
status = "okay";
reg = <0x0>;
irq-gpios = <&gpioa 1 GPIO_ACTIVE_LOW>;
spi-max-frequency = <4000000>;
};
};
&flash0 {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
boot_partition: partition@0 {
label = "bootloader";
reg = <0x0 0x40000>;
read-only;
};
slot0_partition: partition@40000 {
label = "image-0";
reg = <0x40000 0x000c0000>;
};
};
};
&quadspi {
pinctrl-0 = <&quadspi_clk_pf10 &quadspi_bk1_ncs_pg6
&quadspi_bk1_io0_pd11 &quadspi_bk1_io1_pf9
&quadspi_bk1_io2_pe2 &quadspi_bk1_io3_pd13>;
pinctrl-names = "default";
status = "okay";
n25q128a1: qspi-nor-flash@0 {
compatible = "st,stm32-qspi-nor";
reg = <0>;
size = <DT_SIZE_M(128)>; /* 128 Mbits */
qspi-max-frequency = <72000000>;
status = "okay";
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
slot1_partition: partition@0 {
label = "image-1";
reg = <0x00000000 DT_SIZE_M(1)>;
};
storage_partition: partition@100000 {
label = "storage";
reg = <0x00100000 DT_SIZE_M(15)>;
};
};
};
};
&rng {
status = "okay";
};
zephyr_udc0: &usbotg_hs {
pinctrl-0 = <&usb_otg_hs_ulpi_ck_pa5
&usb_otg_hs_ulpi_d0_pa3
&usb_otg_hs_ulpi_d1_pb0
&usb_otg_hs_ulpi_d2_pb1
&usb_otg_hs_ulpi_d3_pb10
&usb_otg_hs_ulpi_d4_pb11
&usb_otg_hs_ulpi_d5_pb12
&usb_otg_hs_ulpi_d6_pb13
&usb_otg_hs_ulpi_d7_pb5
&usb_otg_hs_ulpi_stp_pc0
&usb_otg_hs_ulpi_dir_pc2_c
&usb_otg_hs_ulpi_nxt_pc3_c>;
pinctrl-names = "default";
maximum-speed = "high-speed";
phys = <&otghs_ulpi_phy>;
status = "okay";
};
&i2c3 {
status = "okay";
pinctrl-0 = <&i2c3_scl_pa8 &i2c3_sda_pc9>;
pinctrl-names = "default";
clock-frequency = <I2C_BITRATE_FAST>;
gc2145: gc2145@3c {
compatible = "galaxycore,gc2145";
reg = <0x3c>;
status = "okay";
port {
gc2145_ep_out: endpoint {
remote-endpoint-label = "dcmi_ep_in";
};
};
};
};
&dcmi {
pinctrl-0 = <&dcmi_d0_pc6 &dcmi_d1_pc7 &dcmi_d2_pe0 &dcmi_d3_pe1
&dcmi_d4_pe4 &dcmi_d5_pd3 &dcmi_d6_pe5 &dcmi_d7_pe6
&dcmi_pixclk_pa6 &dcmi_hsync_pa4 &dcmi_vsync_pg9>;
pinctrl-names = "default";
status = "okay";
port {
dcmi_ep_in: endpoint {
remote-endpoint-label = "gc2145_ep_out";
bus-width = <8>;
hsync-active = <0>;
vsync-active = <0>;
pclk-sample = <0>;
};
};
};
/* The Arduino nicla uses a PWM output to generate the clock for the
* GC2145 sensor, so we need to configure the PWM generator...
*/
&timers3 {
status = "okay";
st,prescaler = <0>;
cam_clock_pwm: pwm {
status = "okay";
pinctrl-0 = <&tim3_ch2_pa7>;
pinctrl-names = "default";
};
};
&cam_clock_pwm {
/* ...then use the pwmclock node to start the clock generation */
pwmclock: pwmclock {
status = "okay";
compatible = "pwm-clock";
clock-frequency = <0>;
#clock-cells = <1>;
pwms = <&cam_clock_pwm 2 PWM_HZ(10000000) PWM_POLARITY_NORMAL>;
};
};
&dma1 {
status = "okay";
};
&dmamux1 {
status = "okay";
};