Commit 7d0cbe4d authored by Wenxi XU's avatar Wenxi XU
Browse files

使用深圳大学rm的设备树

parent 5b9041b2
Loading
Loading
Loading
Loading
+155 −248
Original line number Diff line number Diff line
/*
 * Copyright (c) 2025, ttwards <xuwenxi0517@gmail.com>
 *
 * Copyright (c) 2025 RobotPilots-SZU
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <st/h7/stm32h723Xg.dtsi>
#include <st/h7/stm32h723vgtx-pinctrl.dtsi>
#include <zephyr/dt-bindings/input/input-event-codes.h>
#include <zephyr/dt-bindings/led/worldsemi_ws2812c.h>
#include <zephyr/dt-bindings/led/led.h>

#include <zephyr/dt-bindings/spi/spi.h>
#include <zephyr/dt-bindings/led/led.h>
#include <zephyr/dt-bindings/input/input-event-codes.h>

/ {
	model = "Damiao DM-MC02";
	compatible = "damiao,dm-mc02";
    model = "Shenzhen Damiao Tech. MC-02 board";
    compatible = "damiao,mc02";

    chosen {
		zephyr,console = &rtt0;
		zephyr,shell-uart = &rtt0;
        zephyr,console = &usart10;
		zephyr,shell-uart = &usart10;
		zephyr,sram = &sram0;
		zephyr,button = &user_button;
		zephyr,flash = &flash0;
		zephyr,dtcm = &dtcm;
		zephyr,itcm = &itcm;
		ares,pwm = &heater;
		sbus,uart = &uart5;
		ares,usb = &cdc_acm_uart;
    };

	aliases {
		watchdog0 = &iwdg;
		led-strip = &led_strip;
	};


	buttons {
    gpio_keys {
        compatible = "gpio-keys";
        user_button: button_0 {
			gpios = <&gpioa 15 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "User Button";
            label = "User";
            gpios = <&gpioa 15 GPIO_ACTIVE_HIGH>;
            zephyr,code = <INPUT_KEY_0>;
        };
    };

	xt30 {
		compatible = "gpio-leds";
		status = "okay";
		power1: power1 {
			gpios = <&gpioc 14 GPIO_ACTIVE_HIGH>;
			label = "XT30_1";
		};
		power2: power2 {
			gpios = <&gpioc 13 GPIO_ACTIVE_HIGH>;
			label = "XT30_2";
		};
	};

	pwmleds: pwmleds {
		compatible = "pwm-leds";
		status = "okay";
		heater: heater {
			pwms = <&pwm3 4 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
		};
	};

	imu_temp_pid: imu_temp_pid {
		#controller-cells = <0>;
		compatible = "pid,single";
		k_p = "50000";
		k_d = "0.02";
		out_max = "1000000.000000";
		offset = "380000.000000";
	};

	dut: rtt0: rtt_chan0 {
		compatible = "segger,rtt-uart";
		status = "okay";
    aliases {
        sw0 = &user_button;
    };
};

@@ -84,84 +44,47 @@
    status = "okay";
};

&clk_hsi {
	status = "okay";
	hsi-div = <1>;
};

&clk_csi {
&clk_hsi48 {
    status = "okay";
};

&clk_hse {
	clock-frequency = <DT_FREQ_M(24)>;
	status = "okay";
};

&clk_hsi48 {
    clock-frequency = <DT_FREQ_M(24)>; /* On-board 24MHz RCC */
    status = "okay";
};

&pll {
	div-m = <2>;
	mul-n = <40>;
	div-p = <1>;
	div-q = <4>;
	div-r = <2>;
	fracn = <0>;
    div-m = <12>;
    mul-n = <275>;
    div-p = <1>;    /* DIVP1: 550 MHz */
    div-q = <2>;    /* DIVQ1: 275 MHz */
    div-r = <2>;    /* DIVR1: 275 MHz */
    clocks = <&clk_hse>;
    status = "okay";
};

&pll2 {
    div-m = <2>;
	mul-n = <16>;
	div-p = <2>;
	div-q = <2>;
	div-r = <2>;
	fracn = <0>;
	clocks = <&clk_hse>;
	status = "okay";
};

&pll3 {
	div-m = <32>;
	mul-n = <129>;
	div-p = <2>;
	div-q = <2>;
	div-r = <2>;
	fracn = <0>;
    mul-n = <40>;
    div-p = <4>;    /* DIVP2: 120 MHz */
    div-q = <4>;    /* DIVQ2: 120 MHz */
    div-r = <2>;    /* DIVR2: 240 MHz */
    clocks = <&clk_hse>;
    status = "okay";
};

&rcc {
    clocks = <&pll>;
	clock-frequency = <DT_FREQ_M(480)>;
	d1cpre = <1>;
    clock-frequency = <DT_FREQ_M(550)>;
    d1cpre = <1>;   /* CPU: 550   MHz */
    hpre = <2>;     /* HCLK: 275   MHz */
    d1ppre = <2>;   /* APB1: 137.5 MHz */
    d2ppre1 = <2>;  /* APB2: 137.5 MHz */
    d2ppre2 = <2>;  /* APB3: 137.5 MHz */
    d3ppre = <2>;   /* APB4: 137.5 MHz */
	status = "okay";
};

&rtc {
	clocks = <&rcc STM32_CLOCK_BUS_APB1 0x10000000>,
			 <&rcc STM32_SRC_LSI RTC_SEL(2)>;
	status = "okay";
};

&rng {
	status = "okay";
};

&iwdg {
	status = "okay";
};

&dmamux1 {
&backup_sram {
    status = "okay";
};

@@ -173,147 +96,131 @@
    status = "okay";
};

&usart1 {
	pinctrl-0 = <&usart1_tx_pa9 &usart1_rx_pa10>;
	pinctrl-names = "default";
	current-speed = <921600>;
	status = "okay";
	data-bits = <8>;
	stop-bits = "1";
	dmas = <&dmamux1 2 41 STM32_DMA_PERIPH_RX>,
		   <&dmamux1 3 42 STM32_DMA_PERIPH_TX>;
	dma-names = "rx", "tx";
};

&uart5 {
	pinctrl-0 = <&uart5_rx_pd2 &uart5_tx_pc12>;
	pinctrl-names = "default";
	current-speed = <100000>;
	status = "okay";
	data-bits = <8>;
	stop-bits = "2";
	dmas = <&dmamux1 0 65 STM32_DMA_PERIPH_RX
			&dmamux1 1 66 STM32_DMA_PERIPH_TX>;
	dma-names = "rx", "tx";
};

&uart7 {
	pinctrl-0 = <&uart7_tx_pe8 &uart7_rx_pe7>;
	pinctrl-names = "default";
	current-speed = <115200>;
	status = "okay";
};

&usart10 {
	pinctrl-0 = <&usart10_tx_pe3 &usart10_rx_pe2>;
	pinctrl-names = "default";
	current-speed = <115200>;
	status = "okay";
	data-bits = <8>;
	stop-bits = "1";
};

zephyr_udc0: &usbotg_hs {
	pinctrl-0 = <&usb_otg_hs_dp_pa12 &usb_otg_hs_dm_pa11>;
	pinctrl-names = "default";
	status = "okay";

	cdc_acm_uart: cdc_acm_uart {
		compatible = "zephyr,cdc-acm-uart";
	};
};

&fdcan1 {
	status = "okay";
	pinctrl-0 = <&fdcan1_rx_pd0 &fdcan1_tx_pd1>;
	pinctrl-names = "default";
	clocks = <&rcc STM32_CLOCK(APB1_2, 8U)>;
	bitrate = <1000000>;
};

&fdcan2 {
	pinctrl-0 = <&fdcan2_rx_pb5 &fdcan2_tx_pb6>;
	pinctrl-names = "default";
	bitrate = <1000000>;
	clocks = <&rcc STM32_CLOCK(APB1_2, 8U)>;
&dmamux1 {
    status = "okay";
};

&fdcan3 {
	pinctrl-0 = <&fdcan3_rx_pd12 &fdcan3_tx_pd13>;
	pinctrl-names = "default";
	bitrate = <1000000>;
	clocks = <&rcc STM32_CLOCK(APB1_2, 8U)>;
&digi_die_temp {
    status = "okay";
};

&spi2 {
    status = "okay";
    clocks = <&rcc STM32_CLOCK(APB1, 14U)>,
             <&rcc STM32_SRC_PLL2_P SPI123_SEL(0)>;
    pinctrl-0 = <&spi2_sck_pb13 &spi2_miso_pc2_c &spi2_mosi_pc1>;
    pinctrl-names = "default";
    cs-gpios = <&gpioc 0 GPIO_ACTIVE_LOW>,
               <&gpioc 3 GPIO_ACTIVE_LOW>;
    dmas = <&dmamux1 2 2 STM32_DMA_PERIPH_TX>,
           <&dmamux1 1 1 STM32_DMA_PERIPH_RX>;
    dma-names = "tx", "rx";

	pinctrl-0=<&spi2_mosi_pc1
			   &spi2_miso_pc2_c
			   &spi2_sck_pb13>;

	pinctrl-names="default";

    bmi08x_accel: bmi08x_accel@0 {
    bmi08x_accel: bmi08x@0 {
        compatible = "bosch,bmi08x-accel";
		status = "okay";
        // SPI
        reg = <0>;
        spi-max-frequency = <8000000>;
        spi-max-frequency = <DT_FREQ_M(8)>;
        // BMI08x
        int-gpios = <&gpioe 10 GPIO_ACTIVE_HIGH>;
        accel-hz = "800";
        accel-fs = <12>;
        int1-map-io = <0x01>;
		int2-map-io = <0x02>;
        int1-conf-io = <0x0A>;
		int2-conf-io = <0x0A>;
        int2-map-io = <0x00>;
        int1-conf-io = <0x04>;
        int2-conf-io = <0x00>;
        accel-hz = "800";
        accel-fs = <24>;
    };

    bmi08x_gyro: bmi08x_gyro@1{
    bmi08x_gyro: bmi08x@1 {
        compatible = "bosch,bmi08x-gyro";
		status = "okay";
        // SPI
        reg = <1>;
        spi-max-frequency = <8000000>;
        spi-max-frequency = <DT_FREQ_M(8)>;
        // BMI08x
        int-gpios = <&gpioe 12 GPIO_ACTIVE_HIGH>;
        int3-4-map-io = <0x01>;
        int3-4-conf-io = <0x02>;
        gyro-hz = "1000_116";
        gyro-fs = <1000>;
		int3-4-map-io = <0x01>;
		int3-4-conf-io = <0x01>;
    };
};

&spi6 {
    status = "okay";
	pinctrl-0=<&spi6_mosi_pa7>;
    clocks = <&rcc STM32_CLOCK(APB4, 5U)>,
             <&rcc STM32_SRC_PLL2_Q SPI6_SEL(1)>;
    pinctrl-0 = <&spi6_sck_pa5 &spi6_mosi_pa7>;
    pinctrl-names = "default";
	dmas = <&dmamux2 0 11 STM32_DMA_PERIPH_RX
			&dmamux2 1 12 STM32_DMA_PERIPH_TX>;
	dma-names = "rx", "tx";
	led_strip: ws2812@0 {

    rgb_led: ws2812@0 {
        compatible = "worldsemi,ws2812-spi";
        // SPI
        reg = <0>;
		spi-max-frequency = <9000000>;

        spi-max-frequency = <DT_FREQ_M(4)>;
        frame-format = <SPI_FRAME_FORMAT_TI>;
        // WS2812
        chain-length = <1>;
        spi-one-frame = <0x70>;
        spi-zero-frame = <0x40>;
        color-mapping = <LED_COLOR_ID_GREEN>,
                        <LED_COLOR_ID_RED>,
                        <LED_COLOR_ID_BLUE>;
		spi-one-frame = <0XF8>;
		spi-zero-frame = <0XE0>;

        reset-delay = <250>;
    };
};

&timers3 {
&usart2 {
    // RS485
    status = "okay";
	st,prescaler = <10000>;
	pwm3: pwm {
    pinctrl-0 = <&usart3_de_pb14 &usart2_rx_pd6 &usart2_tx_pd5>;
    pinctrl-names = "default";
    de-enable;
};

&usart3 {
    // RS485
    status = "okay";
    pinctrl-0 = <&usart3_de_pb14 &usart3_rx_pd9 &usart3_tx_pd8>;
    pinctrl-names = "default";
    de-enable;
};

&uart5 {
    // SBUS
    status = "okay";
    pinctrl-0 = <&uart5_rx_pd2 &uart5_tx_pc12>;
    pinctrl-names = "default";
    current-speed = <100000>;
    data-bits = <8>;
    stop-bits = "2";
};

&usart10 {
    status = "okay";
		pinctrl-0 = <&tim3_ch4_pb1>;
    pinctrl-0 = <&usart10_rx_pe2 &usart10_tx_pe3>;
    pinctrl-names = "default";
};

&fdcan1 {
    status = "okay";
    clocks = <&rcc STM32_CLOCK(APB1_2, 8U)>,
             <&rcc STM32_SRC_PLL2_Q FDCAN_SEL(2)>;
    pinctrl-0 = <&fdcan1_rx_pd0 &fdcan1_tx_pd1>;
    pinctrl-names = "default";
};

&fdcan2 {
    status = "okay";
    clocks = <&rcc STM32_CLOCK(APB1_2, 8U)>,
             <&rcc STM32_SRC_PLL2_Q FDCAN_SEL(2)>;
    pinctrl-0 = <&fdcan2_rx_pb5 &fdcan2_tx_pb6>;
    pinctrl-names = "default";
};

&fdcan3 {
    status = "okay";
    clocks = <&rcc STM32_CLOCK(APB1_2, 8U)>,
             <&rcc STM32_SRC_PLL2_Q FDCAN_SEL(2)>;
    pinctrl-0 = <&fdcan3_rx_pd12 &fdcan3_tx_pd13>;
    pinctrl-names = "default";
};
 No newline at end of file
+11 −91
Original line number Diff line number Diff line
# Copyright (c) 2024, ttwards <xuwenxi0517@gmail.com>
# SPDX-License-Identifier: Apache-2.0
# Copyright (c) 2025 RobotPilots-SZU

# Enable MPU
CONFIG_ARM_MPU=n

CONFIG_THREAD_ANALYZER=y
CONFIG_SCHED_THREAD_USAGE=y

# LOG CONFIG
# Enable UART console
CONFIG_SERIAL=y
CONFIG_UART_ASYNC_API=y
CONFIG_UART_INTERRUPT_DRIVEN=y

# 启用 Shell 支持
CONFIG_SHELL=n
CONFIG_SHELL_BACKENDS=n
CONFIG_SHELL_BACKEND_SERIAL=n

# 启用 UART 控制台
CONFIG_UART_CONSOLE=y
CONFIG_CBPRINTF_FP_SUPPORT=y
CONFIG_ARM_MPU=y

# Enable HW stack protection
CONFIG_HW_STACK_PROTECTION=n
CONFIG_HW_STACK_PROTECTION=y

# enable GPIO
# Enable drivers
CONFIG_DMA=y
CONFIG_GPIO=y

#CAN
CONFIG_CAN=y
CONFIG_CAN_DEFAULT_BITRATE=1000000

# Enable UART console
CONFIG_COUNTER=y
CONFIG_PWM=y
CONFIG_SERIAL=y
CONFIG_UART_ASYNC_API=y
CONFIG_UART_INTERRUPT_DRIVEN=y
CONFIG_UART_LINE_CTRL=y

CONFIG_SPI=y
CONFIG_I2C=y
CONFIG_CAN=y

CONFIG_DMA=y

CONFIG_USB_DEVICE_STACK=y
CONFIG_USB_DEVICE_MANUFACTURER="ARES"
CONFIG_USB_DEVICE_PRODUCT="ARES USB Transfer Device"
CONFIG_USB_DEVICE_SN="520131499992025A"
CONFIG_USB_DEVICE_VID=0x1209
CONFIG_USB_DEVICE_PID=0x0001

CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=n

# CONFIG_MEM_ATTR=y
# CONFIG_MEM_ATTR_HEAP=y

CONFIG_DCACHE=n

# Enable FPU
CONFIG_FPU=y
CONFIG_FPU_SHARING=y

CONFIG_LED=y
# On-board devices
CONFIG_LED_STRIP=y
CONFIG_LED_STRIP_LOG_LEVEL_DBG=y

CONFIG_WS2812_STRIP_SPI=y
# CONFIG_SPI_STM32_INTERRUPT=y

CONFIG_SCHED_THREAD_USAGE=y

CONFIG_SENSOR=y
CONFIG_BMI08X=y
 No newline at end of file
# CONFIG_BMI08X_ACCEL_TRIGGER_NONE is not set
# CONFIG_BMI08X_ACCEL_TRIGGER_GLOBAL_THREAD is not set
CONFIG_BMI08X_ACCEL_TRIGGER_OWN_THREAD=y
CONFIG_BMI08X_ACCEL_THREAD_PRIORITY=10
CONFIG_BMI08X_ACCEL_TRIGGER_NONE=n
CONFIG_BMI08X_ACCEL_THREAD_STACK_SIZE=2048
# CONFIG_BMI08X_GYRO_TRIGGER_NONE is not set
# CONFIG_BMI08X_GYRO_TRIGGER_GLOBAL_THREAD is not set
CONFIG_BMI08X_GYRO_TRIGGER_OWN_THREAD=y
CONFIG_BMI08X_GYRO_TRIGGER_NONE=n
CONFIG_BMI08X_GYRO_THREAD_PRIORITY=10
CONFIG_BMI08X_GYRO_THREAD_STACK_SIZE=2048
CONFIG_BMI08X_I2C_WRITE_BURST_SIZE=16

CONFIG_IMU_PWM_TEMP_CTRL=y
CONFIG_PWM=y
CONFIG_PID=y

CONFIG_CRC=y

CONFIG_CMSIS_DSP=y
CONFIG_CMSIS_DSP_MATRIX=y
CONFIG_CMSIS_DSP_CONTROLLER=y
CONFIG_CMSIS_DSP_FASTMATH=y

CONFIG_ISR_STACK_SIZE=3200
CONFIG_MAIN_STACK_SIZE=3200

CONFIG_CAN_COUNT=3
 No newline at end of file