How can i configure 2 mcp2518 chips on pico mini b?

  • yeisonint wrote: 2025-04-10 3:44 Can you share your final DTS?, i'm still have problems
    Yes of course.

    This is the file "rv1106g-luckfox-pico-pro.dts"

    Code: Select all

    // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
    /*
     * Copyright (c) 2022 Rockchip Electronics Co., Ltd.
     */
    
    /dts-v1/;
    
    #include "rv1106.dtsi"
    #include "rv1106-evb.dtsi"
    #include "rv1106-luckfox-pico-pro-max-ipc.dtsi"
    
    / {
    	model = "Luckfox Pico Pro";
    	compatible = "rockchip,rv1103g-38x38-ipc-v10", "rockchip,rv1106";
    };
    
    /**********FLASH**********/
    &sfc {
    	status = "okay";
    	flash@0 {
    		compatible = "spi-nand";
    		reg = <0>;
    		spi-max-frequency = <75000000>;
    		spi-rx-bus-width = <4>;
    		spi-tx-bus-width = <1>;
    	};
    };
    
    /**********SDMMC**********/
    &sdmmc {
    	max-frequency = <50000000>;
    	no-sdio;
    	no-mmc;
    	bus-width = <4>;
    	cap-mmc-highspeed;
    	cap-sd-highspeed;
    	disable-wp;
    	pinctrl-names = "default";
    	pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_det &sdmmc0_bus4>;
    	status = "okay";
    };
    
    /**********ETH**********/
    &gmac {
    	status = "okay";
    };
    
    /**********USB**********/
    &u2phy {
    	status = "okay";
    };
    
    &u2phy_otg {
    	rockchip,dis-u2-susphy;
    	status = "okay";
    };
    
    &usbdrd {
    	status = "okay";
    };
    
    &usbdrd_dwc3 {
    	status = "okay";
    	dr_mode = "peripheral";
    };
    
    /**********SPI**********/
    &spi0 {
    	status = "okay";
    	spidev@0 {
    		spi-max-frequency = <50000000>;
    	};
      fbtft@0 {
    		spi-max-frequency = <50000000>;
      };
    };
    
    
    
    
    
    
    
    
    /**********I2C**********/
    /* I2C3_M1 */
    &i2c3 {
    	status = "disabled";
    	clock-frequency = <100000>;
    };
    /* I2C1_M1 */
    &i2c1 {
    	status = "disabled";
    	clock-frequency = <100000>;
    };
    
    
    /**********UART**********/
    /* UART3_M1 */
    &uart3 {
    	status = "disabled";
    };
    
    /* UART4_M1 */
    &uart4 {
    	status = "disabled";
    };
    
    /**********RTC**********/
    &rtc {
    	status = "okay";
    };
    

    And this is the file "rv1106-luckfox-pico-pro-max-ipc.dtsi"

    Code: Select all

    // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
    /*
     * Copyright (c) 2022 Rockchip Electronics Co., Ltd.
     */
    #include "rv1106-amp.dtsi"
    
    / {
    	chosen {
    		bootargs = "earlycon=uart8250,mmio32,0xff4c0000 console=ttyFIQ0 root=/dev/mmcblk1p7 rootwait snd_soc_core.prealloc_buffer_size_kbytes=16 coherent_pool=0";
    	};
    
    	acodec_sound: acodec-sound {
    		compatible = "simple-audio-card";
    		simple-audio-card,name = "rv-acodec";
    		simple-audio-card,format = "i2s";
    		simple-audio-card,mclk-fs = <256>;
    		simple-audio-card,cpu {
    			sound-dai = <&i2s0_8ch>;
    		};
    		simple-audio-card,codec {
    			sound-dai = <&acodec>;
    		};
    	};
    
    	vcc_1v8: vcc-1v8 {
    		compatible = "regulator-fixed";
    		regulator-name = "vcc_1v8";
    		regulator-always-on;
    		regulator-boot-on;
    		regulator-min-microvolt = <1800000>;
    		regulator-max-microvolt = <1800000>;
    	};
    
    	vcc_3v3: vcc-3v3 {
    		compatible = "regulator-fixed";
    		regulator-name = "vcc_3v3";
    		regulator-always-on;
    		regulator-boot-on;
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    	};
    
    	vdd_arm: vdd-arm {
    		compatible = "regulator-fixed";
    		regulator-name = "vdd_arm";
    		regulator-min-microvolt = <800000>;
    		regulator-max-microvolt = <1000000>;
    		regulator-init-microvolt = <900000>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    	leds: leds {
    		compatible = "gpio-leds";
    		work_led: work{
    			gpios = <&gpio3 RK_PC6 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "activity";
    			default-state = "on";
    		};	
    	};
    
    	// DHT11
    	dht11_sensor {
    		compatible = "dht11";
    		pinctrl-names = "default";
    		pinctrl-0 = <&gpio1_pc7>;
    		dht11@1 {
    			gpios = <&gpio1 RK_PC7 GPIO_ACTIVE_HIGH>;
    			label = "dht11";
    			linux,default-trigger = "humidity";
    		};
    	};
    
    
    	can0: mcp2515@0 {
    		compatible = "microchip,mcp2515";
    		reg = <0 0>;
    		clocks = <&clk_mcp2515>;
    		clock-names = "mcp2515";
    		spi-max-frequency = <10000000>;
    		interrupt-parent = <&gpio1>;
    		interrupts = <RK_PC7 IRQ_TYPE_LEVEL_LOW>;
    		vdd-supply = <&vcc_3v3>;
    		xceiver-supply = <&vcc_3v3>;
    	};
    
    	clk_mcp2515: clk_mcp2515 {
    		compatible = "fixed-clock";
    		#clock-cells = <0>;
    		clock-frequency = <16000000>;
    	};
    };
    
    /***************************** AUDIO ********************************/
    &i2s0_8ch {
    	#sound-dai-cells = <0>;
    	status = "okay";
    };
    
    &acodec {
    	#sound-dai-cells = <0>;
    	pa-ctl-gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_HIGH>;
    	status = "okay";
    };
    /***************************** CPU ********************************/
    &cpu0 {
    	cpu-supply = <&vdd_arm>;
    };
    
    /***************************** ADC ********************************/
    &saradc {
    	status = "okay";
    	vref-supply = <&vcc_1v8>;
    };
    
    &tsadc {
    	status = "okay";
    };
    
    /***************************** CSI ********************************/
    &csi2_dphy_hw {
    	status = "okay";
    };
    
    &csi2_dphy0 {
    	status = "okay";
    
    	ports {
    		#address-cells = <1>;
    		#size-cells = <0>;
    
    		port@0 {
    			reg = <0>;
    			#address-cells = <1>;
    			#size-cells = <0>;
    
    			csi_dphy_input0: endpoint@0 {
    				reg = <0>;
    				remote-endpoint = <&sc3336_out>;
    				data-lanes = <1 2>;
    			};
    
    			csi_dphy_input1: endpoint@1 {
    				reg = <1>;
    				remote-endpoint = <&sc4336_out>;
    				data-lanes = <1 2>;
    			};
    
    			csi_dphy_input2: endpoint@2 {
    				reg = <2>;
    				remote-endpoint = <&sc530ai_out>;
    				data-lanes = <1 2>;
    			};
    		};
    
    		port@1 {
    			reg = <1>;
    			#address-cells = <1>;
    			#size-cells = <0>;
    
    			csi_dphy_output: endpoint@0 {
    				reg = <0>;
    				remote-endpoint = <&mipi_csi2_input>;
    			};
    		};
    	};
    };
    
    &i2c4 {
    	status = "okay";
    	clock-frequency = <400000>;
    	pinctrl-names = "default";
    	pinctrl-0 = <&i2c4m2_xfer>;
    
    	sc3336: sc3336@30 {
    		compatible = "smartsens,sc3336";
    		status = "okay";
    		reg = <0x30>;
    		clocks = <&cru MCLK_REF_MIPI0>;
    		clock-names = "xvclk";
    		pwdn-gpios = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>;
    		pinctrl-names = "default";
    		pinctrl-0 = <&mipi_refclk_out0>;
    		rockchip,camera-module-index = <0>;
    		rockchip,camera-module-facing = "back";
    		rockchip,camera-module-name = "CMK-OT2119-PC1";
    		rockchip,camera-module-lens-name = "30IRC-F16";
    		port {
    			sc3336_out: endpoint {
    				remote-endpoint = <&csi_dphy_input0>;
    				data-lanes = <1 2>;
    			};
    		};
    	};
    
    	sc4336: sc4336@30 {
    		compatible = "smartsens,sc4336";
    		status = "okay";
    		reg = <0x30>;
    		clocks = <&cru MCLK_REF_MIPI0>;
    		clock-names = "xvclk";
    		pwdn-gpios = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>;
    		pinctrl-names = "default";
    		pinctrl-0 = <&mipi_refclk_out0>;
    		rockchip,camera-module-index = <0>;
    		rockchip,camera-module-facing = "back";
    		rockchip,camera-module-name = "OT01";
    		rockchip,camera-module-lens-name = "40IRC_F16";
    		port {
    			sc4336_out: endpoint {
    				remote-endpoint = <&csi_dphy_input1>;
    				data-lanes = <1 2>;
    			};
    		};
    	};
    
    	sc530ai: sc530ai@30 {
    		compatible = "smartsens,sc530ai";
    		status = "okay";
    		reg = <0x30>;
    		clocks = <&cru MCLK_REF_MIPI0>;
    		clock-names = "xvclk";
    		pwdn-gpios = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>;
    		pinctrl-names = "default";
    		pinctrl-0 = <&mipi_refclk_out0>;
    		rockchip,camera-module-index = <0>;
    		rockchip,camera-module-facing = "back";
    		rockchip,camera-module-name = "CMK-OT2115-PC1";
    		rockchip,camera-module-lens-name = "30IRC-F16";
    		port {
    			sc530ai_out: endpoint {
    				remote-endpoint = <&csi_dphy_input2>;
    				data-lanes = <1 2>;
    			};
    		};
    	};
    };
    
    &mipi0_csi2 {
    	status = "okay";
    
    	ports {
    		#address-cells = <1>;
    		#size-cells = <0>;
    
    		port@0 {
    			reg = <0>;
    			#address-cells = <1>;
    			#size-cells = <0>;
    
    			mipi_csi2_input: endpoint@1 {
    				reg = <1>;
    				remote-endpoint = <&csi_dphy_output>;
    			};
    		};
    
    		port@1 {
    			reg = <1>;
    			#address-cells = <1>;
    			#size-cells = <0>;
    
    			mipi_csi2_output: endpoint@0 {
    				reg = <0>;
    				remote-endpoint = <&cif_mipi_in>;
    			};
    		};
    	};
    };
    
    &rkcif {
    	status = "okay";
    };
    
    &rkcif_mipi_lvds {
    	status = "okay";
    
    	pinctrl-names = "default";
    	pinctrl-0 = <&mipi_pins>;
    	port {
    		/* MIPI CSI-2 endpoint */
    		cif_mipi_in: endpoint {
    			remote-endpoint = <&mipi_csi2_output>;
    		};
    	};
    };
    
    &rkcif_mipi_lvds_sditf {
    	status = "okay";
    
    	port {
    		/* MIPI CSI-2 endpoint */
    		mipi_lvds_sditf: endpoint {
    			remote-endpoint = <&isp_in>;
    		};
    	};
    };
    
    &rkisp {
    	status = "okay";
    };
    
    &rkisp_vir0 {
    	status = "okay";
    
    	port@0 {
    		isp_in: endpoint {
    			remote-endpoint = <&mipi_lvds_sditf>;
    		};
    	};
    };
    
    
    /*****************************PINCTRL********************************/
    // SPI
    &spi0 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&spi0m0_clk &spi0m0_miso &spi0m0_mosi &spi0m0_cs0>;
    
    	mcp2515@0 {
    		compatible = "microchip,mcp2515";
    		reg = <0 0>;
    		spi-max-frequency = <10000000>;
    		interrupts = <RK_PC7 IRQ_TYPE_LEVEL_LOW>;
    		interrupt-parent = <&gpio1>;
    		clocks = <&clk_mcp2515>;
    		clock-names = "mcp2515";
    	};
    };
    // I2C
    &i2c0 {
    	pinctrl-0 = <&i2c0m2_xfer>;
    };
    
    &i2c1 {
    	pinctrl-0 = <&i2c1m1_xfer>;
    };
    
    &i2c3 {
    	pinctrl-0 = <&i2c3m1_xfer &i2c3m0_xfer>;
    };
    
    // &i2c4 {
    //  pinctrl-0 = <&i2c4m0_xfer>;
    // };
    
    // UART
    &uart0 {
    	pinctrl-0 = <&uart0m0_xfer &uart0m1_xfer>;
    };
    &uart1 {
    	pinctrl-0 = <&uart1m1_xfer>;
    };
    &uart3 {
    	pinctrl-0 = <&uart3m1_xfer>;
    };
    &uart4 {
    	pinctrl-0 = <&uart4m1_xfer>;
    };
    &uart5 {
    	pinctrl-0 = <&uart5m0_xfer>;
    };
    
    // PWM
    &pwm0 {
    	pinctrl-0 = <&pwm0m1_pins>;
    };
    &pwm2 {
    	pinctrl-0 = <&pwm2m2_pins>;
    };
    &pwm3 {
    	pinctrl-0 = <&pwm3m2_pins>;
    };
    &pwm4 {
    	pinctrl-0 = <&pwm4m2_pins>;
    };
    &pwm5 {
    	pinctrl-0 = <&pwm5m2_pins>;
    };
    &pwm6 {
    	pinctrl-0 = <&pwm6m1_pins &pwm6m2_pins>;
    };
    &pwm8 {
    	pinctrl-0 = <&pwm8m1_pins>;
    };
    &pwm9 {
    	pinctrl-0 = <&pwm9m1_pins>;
    };
    &pwm10 {
    	pinctrl-0 = <&pwm10m1_pins &pwm10m2_pins>;
    };
    &pwm11 {
    	pinctrl-0 = <&pwm11m1_pins>;
    };
    
    &pinctrl {
    	spi0 {
    		spi0m0_clk: spi0m0-clk {
    			rockchip,pins = <1 RK_PC1 4 &pcfg_pull_none>;
    		};
    		spi0m0_mosi: spi0m0-mosi {
    			rockchip,pins = <1 RK_PC2 6 &pcfg_pull_none>;
    		};
    		spi0m0_miso: spi0m0-miso {
    			rockchip,pins = <1 RK_PC3 6 &pcfg_pull_none>;
    		};
    		spi0m0_cs0: spi0m0-cs0 {
    			rockchip,pins = <1 RK_PC0 4 &pcfg_pull_none>;
    		};
    	};
    
        gpio1-pc7 {
            gpio1_pc7:gpio1-pc7 {
                rockchip,pins = <1 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>;
        };
    	};
    };
    
    Please pay attention to the settings values. In my case my MCP2515 module is 16mhz. The same with the pins of your luckfox pico pro you are using. Hope it helps