This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TDA4VH-Q1:如何在 TDA4VH EVM 上启用 mcan3 和 mcan5 (proc1413)

Guru**** 2416110 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1530615/tda4vh-q1-how-to-enable-mcan3-and-mcan5-on-tda4vh-evm-proc1413

器件型号:TDA4VH-Q1
Thread 中讨论的其他器件:TDA4VH

工具/软件:

尊敬的团队:

我想在 TDA4VH EVM 上启用 mcan3 和 mcan5、但因使用 mux1 和 mux2 而感到困惑。

&main_i2c0 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&main_i2c0_pins_default>;

	clock-frequency = <400000>;

	exp1: gpio@20 {
		compatible = "ti,tca6416";
		reg = <0x20>;
		gpio-controller;
		#gpio-cells = <2>;
		gpio-line-names = "PCIE1_2L_MODE_SEL", "PCIE1_4L_PERSTZ", "PCIE1_2L_RC_RSTZ",
				  "PCIE1_2L_EP_RST_EN", "PCIE0_4L_MODE_SEL", "PCIE0_4L_PERSTZ",
				  "PCIE0_4L_RC_RSTZ", "PCIE0_4L_EP_RST_EN", "PCIE1_4L_PRSNT#",
				  "PCIE0_4L_PRSNT#", "CDCI1_OE1/OE4", "CDCI1_OE2/OE3",
				  "AUDIO_MUX_SEL", "EXP_MUX2", "EXP_MUX3", "GESI_EXP_PHY_RSTZ";

		p12-hog {
			/* P12 - AUDIO_MUX_SEL */
			gpio-hog;
			gpios = <12 GPIO_ACTIVE_HIGH>;
			output-low;
			line-name = "AUDIO_MUX_SEL";
		};
	};

	exp2: gpio@22 {
		compatible = "ti,tca6424";
		reg = <0x22>;
		gpio-controller;
		#gpio-cells = <2>;
		gpio-line-names = "R_GPIO_RGMII1_RST", "ENET2_I2CMUX_SEL", "GPIO_USD_PWR_EN",
				  "USBC_PWR_EN", "USBC_MODE_SEL1", "USBC_MODE_SEL0",
				  "GPIO_LIN_EN", "R_CAN_STB", "CTRL_PM_I2C_OE#",
				  "ENET2_EXP_PWRDN", "ENET2_EXP_SPARE2", "CDCI2_RSTZ",
				  "USB2.0_MUX_SEL", "CANUART_MUX_SEL0", "CANUART_MUX2_SEL1",
				  "CANUART_MUX1_SEL1", "ENET1_EXP_PWRDN", "ENET1_EXP_RESETZ",
				  "ENET1_I2CMUX_SEL", "ENET1_EXP_SPARE2", "ENET2_EXP_RESETZ",
				  "USER_INPUT1", "USER_LED1", "USER_LED2";

		p13-hog {
			/* P13 - CANUART_MUX_SEL0 */
			gpio-hog;
			gpios = <13 GPIO_ACTIVE_HIGH>;
			output-high;
			line-name = "CANUART_MUX_SEL0";
		};

		p15-hog {
			/* P15 - CANUART_MUX1_SEL1 */
			gpio-hog;
			gpios = <15 GPIO_ACTIVE_HIGH>;
			output-high;
			line-name = "CANUART_MUX1_SEL1";
		};
	};
};

您能提供一些见解吗?

此致

孔相旭

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kong:

    应有 4 个 MCAN 接口已在 J784S4 上启用。 之所以提出该申请、是因为需要更多 CAN 接口?

    但在任何情况下、如果您想要启用额外的 CAN 接口并被多路复用器设置混淆、则  需要配置两组多路复用器。 首先是此 AUDIO_MUX_SEL:

    此 AUDIO_MUX_SEL 在此处控制多路复用器:

    默认 0 选择 McASP、而 1 选择启用 CAN3 和 CAN5:

    第二组多路复用器是您已屏幕显示的多路复用器选择。 您需要将一个端口连接到 MUX1(在 B2 上使用 MCAN3)和 MUX2(在 B2 上使用 MCAN5)的 B2 端口。

    对于我们的 EVM、下面 是一个真值表供参考:

    因此、对于要选择的 CAN、我们需要将 CANUART _MUX1_SEL1 和 CANUART _MUX2_SEL1 (S1) 都设置为高电平。 S2 硬接线以上拉至高电平。 S0 被下拉、但也需要为高电平、DIP SW2.2 应该控制它。

    此致、

    Takuma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    &main_pmx0 {
        mymcan3_pins_default: mymcan3-default-pins {
            pinctrl-single,pins = <
                J784S4_IOPAD(0x080, PIN_INPUT, 0) /* (AK34) MCASP0_AXR4.MCAN3_RX */
                J784S4_IOPAD(0x07c, PIN_INPUT, 0) /* (AJ38) MCASP0_AXR3.MCAN3_TX */
            >;
        };
    
        mymcan5_pins_default: mymcan5-default-pins {
            pinctrl-single,pins = <
                J784S4_IOPAD(0x03c, PIN_INPUT, 0) /* (AK38) MCASP0_AFSX.MCAN5_RX */
                J784S4_IOPAD(0x038, PIN_INPUT, 0) /* (AK35) MCASP0_ACLKX.MCAN5_TX */
            >;
        };
    
    };
    
    
    
    &main_mcan3 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&mymcan3_pins_default>;
    	//phys = <&transceiver3>;
    };
    
    &main_mcan5 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&mymcan5_pins_default>;
    	//phys = <&transceiver3>;
    };

    &main_i2c0 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_i2c0_pins_default>;
    
    	clock-frequency = <400000>;
    
    	exp1: gpio@20 {
    		compatible = "ti,tca6416";
    		reg = <0x20>;
    		gpio-controller;
    		#gpio-cells = <2>;
    		gpio-line-names = " "AUDIO_MUX_SEL",PCIE1_2L_MODE_SEL", "PCIE1_4L_PERSTZ", "PCIE1_2L_RC_RSTZ",
    				  "PCIE1_2L_EP_RST_EN", "PCIE0_4L_MODE_SEL", "PCIE0_4L_PERSTZ",
    				  "PCIE0_4L_RC_RSTZ", "PCIE0_4L_EP_RST_EN", "PCIE1_4L_PRSNT#",
    				  "PCIE0_4L_PRSNT#", "CDCI1_OE1/OE4", "CDCI1_OE2/OE3",
    				  "EXP_MUX2", "EXP_MUX3", "GESI_EXP_PHY_RSTZ";
    
    		p12-hog {
    			/* P12 - AUDIO_MUX_SEL */
    			gpio-hog;
    			gpios = <12 GPIO_ACTIVE_HIGH>;
    			output-low;
    			line-name = "AUDIO_MUX_SEL";
    		};
    	};
    
    	exp2: gpio@22 {
    		compatible = "ti,tca6424";
    		reg = <0x22>;
    		gpio-controller;
    		#gpio-cells = <2>;
    		gpio-line-names = ""CANUART_MUX2_SEL1",R_GPIO_RGMII1_RST", "ENET2_I2CMUX_SEL", "GPIO_USD_PWR_EN",
    				  "USBC_PWR_EN", "USBC_MODE_SEL1", "USBC_MODE_SEL0",
    				  "GPIO_LIN_EN", "R_CAN_STB", "CTRL_PM_I2C_OE#",
    				  "ENET2_EXP_PWRDN", "ENET2_EXP_SPARE2", "CDCI2_RSTZ",
    				  "USB2.0_MUX_SEL", "CANUART_MUX_SEL0", 
    				  "CANUART_MUX1_SEL1", "ENET1_EXP_PWRDN", "ENET1_EXP_RESETZ",
    				  "ENET1_I2CMUX_SEL", "ENET1_EXP_SPARE2", "ENET2_EXP_RESETZ",
    				  "USER_INPUT1", "USER_LED1", "USER_LED2";
    
    		p13-hog {
    			/* P13 - CANUART_MUX_SEL0 */
    			gpio-hog;
    			gpios = <13 GPIO_ACTIVE_HIGH>;
    			output-high;
    			line-name = "CANUART_MUX_SEL0";
    		};
    
    		p15-hog {
    			/* P15 - CANUART_MUX1_SEL1 */
    			gpio-hog;
    			gpios = <15 GPIO_ACTIVE_HIGH>;
    			output-high;
    			line-name = "CANUART_MUX1_SEL1";
    		};
    	};
    };

    这是我的 DTS。 “ifconfig -a“未显示 mcan3 或 mcan5。  请帮助我检查我是否正确。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kong:

    三 件事:

    1. AUDIO_MUX_SEL — 是否可以将其设置为高电平而不是低电平?
    2. DIP 开关 2 的设置是什么?
    3. 可以共享“dmesg"中“中的完整日志吗?

    除了这 3 个点之外、我确实看到 CAN 器件树节点中的收发器 PHY 被注释掉。 我不确定是否可以在没有 phys 属性的情况下仍初始化。 但是、 一旦检查了上述 3 个点、我们就可以检查收发器 PHY 设置。

    此致、

    Takuma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    root@j784s4-evm:~# ifconfig -a
    eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            ether 68:e7:4a:08:bd:80  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    eth1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            ether 8a:d1:60:ed:d6:28  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    main_mcan4: flags=128<NOARP>  mtu 16
            unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 10  (UNSPEC)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
            device interrupt 114
    
    main_mcan16: flags=128<NOARP>  mtu 16
            unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 10  (UNSPEC)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
            device interrupt 108
    
    mcu_mcan0: flags=128<NOARP>  mtu 16
            unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 10  (UNSPEC)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
            device interrupt 102
    
    mcu_mcan1: flags=128<NOARP>  mtu 16
            unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 10  (UNSPEC)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
            device interrupt 103
    
    root@j784s4-evm:~# dmesg |grep can
    [    0.629274] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page
    [    0.642612] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page
    [    0.655949] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
    [    0.669286] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page
    [    8.199112] m_can_platform 40528000.can: m_can device registered (irq=614, version=32)
    [    8.216996] m_can_platform 40568000.can: m_can device registered (irq=615, version=32)
    [    8.230441] m_can_platform 26a1000.can: m_can device registered (irq=620, version=32)
    [    8.288569] m_can_platform 2741000.can: m_can device registered (irq=626, version=32)
    [    8.365703] m_can_platform 40568000.can mcu_mcan1: renamed from can1
    [    8.445612] m_can_platform 26a1000.can main_mcan16: renamed from can2
    [    8.518505] m_can_platform 40528000.can mcu_mcan0: renamed from can0
    [    8.538102] m_can_platform 2741000.can main_mcan4: renamed from can3
    root@j784s4-evm:~# dmesg |grep pca953
    [    1.316352] pca953x 3-0020: supply vcc not found, using dummy regulator
    [    1.323198] pca953x 3-0020: using no AI
    [    1.350491] pca953x 3-0022: supply vcc not found, using dummy regulator
    [    1.357298] pca953x 3-0022: using AI
    [    1.368136] pca953x 4-0020: supply vcc not found, using dummy regulator
    [    1.374937] pca953x 4-0020: using no AI
    [    1.408120] pca953x 5-0020: supply vcc not found, using dummy regulator
    [    1.414924] pca953x 5-0020: using no AI
    [    1.475629] pca953x 6-0020: supply vcc not found, using dummy regulator
    [    1.482439] pca953x 6-0020: using no AI
    root@j784s4-evm:~# dmesg | grep -i can
    [    0.629274] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page
    [    0.642612] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page
    [    0.655949] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
    [    0.669286] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page
    [    7.931659] CAN device driver interface
    [    8.199112] m_can_platform 40528000.can: m_can device registered (irq=614, version=32)
    [    8.216996] m_can_platform 40568000.can: m_can device registered (irq=615, version=32)
    [    8.230441] m_can_platform 26a1000.can: m_can device registered (irq=620, version=32)
    [    8.288569] m_can_platform 2741000.can: m_can device registered (irq=626, version=32)
    [    8.365703] m_can_platform 40568000.can mcu_mcan1: renamed from can1
    [    8.445612] m_can_platform 26a1000.can main_mcan16: renamed from can2
    [    8.518505] m_can_platform 40528000.can mcu_mcan0: renamed from can0
    [    8.538102] m_can_platform 2741000.can main_mcan4: renamed from can3
    [    8.650267] tidss 4a00000.dss: [drm] Cannot find any crtc or sizes
    [    8.827015] tidss 4a00000.dss: [drm] Cannot find any crtc or sizes
    [    9.199609] tidss 4a00000.dss: [drm] Cannot find any crtc or sizes
    root@j784s4-evm:~#
    
    &main_i2c0 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_i2c0_pins_default>;
    
    	clock-frequency = <400000>;
    
    	exp1: gpio@20 {
    		compatible = "ti,tca6416";
    		reg = <0x20>;
    		gpio-controller;
    		#gpio-cells = <2>;
    		gpio-line-names = " "AUDIO_MUX_SEL",PCIE1_2L_MODE_SEL", "PCIE1_4L_PERSTZ", "PCIE1_2L_RC_RSTZ",
    				  "PCIE1_2L_EP_RST_EN", "PCIE0_4L_MODE_SEL", "PCIE0_4L_PERSTZ",
    				  "PCIE0_4L_RC_RSTZ", "PCIE0_4L_EP_RST_EN", "PCIE1_4L_PRSNT#",
    				  "PCIE0_4L_PRSNT#", "CDCI1_OE1/OE4", "CDCI1_OE2/OE3",
    				  "EXP_MUX2", "EXP_MUX3", "GESI_EXP_PHY_RSTZ";
    
    		p12-hog {
    			/* P12 - AUDIO_MUX_SEL */
    			gpio-hog;
    			gpios = <12 GPIO_ACTIVE_HIGH>;
    			//output-low;
    			output-high;
    			line-name = "AUDIO_MUX_SEL";
    		};
    	};
    
    	exp2: gpio@22 {
    		compatible = "ti,tca6424";
    		reg = <0x22>;
    		gpio-controller;
    		#gpio-cells = <2>;
    		gpio-line-names = ""CANUART_MUX2_SEL1",R_GPIO_RGMII1_RST", "ENET2_I2CMUX_SEL", "GPIO_USD_PWR_EN",
    				  "USBC_PWR_EN", "USBC_MODE_SEL1", "USBC_MODE_SEL0",
    				  "GPIO_LIN_EN", "R_CAN_STB", "CTRL_PM_I2C_OE#",
    				  "ENET2_EXP_PWRDN", "ENET2_EXP_SPARE2", "CDCI2_RSTZ",
    				  "USB2.0_MUX_SEL", "CANUART_MUX_SEL0", 
    				  "CANUART_MUX1_SEL1", "ENET1_EXP_PWRDN", "ENET1_EXP_RESETZ",
    				  "ENET1_I2CMUX_SEL", "ENET1_EXP_SPARE2", "ENET2_EXP_RESETZ",
    				  "USER_INPUT1", "USER_LED1", "USER_LED2";
    
    		p13-hog {
    			/* P13 - CANUART_MUX_SEL0 */
    			gpio-hog;
    			gpios = <13 GPIO_ACTIVE_HIGH>;
    			output-high;
    			line-name = "CANUART_MUX_SEL0";
    		};
    
    		p15-hog {
    			/* P15 - CANUART_MUX1_SEL1 */
    			gpio-hog;
    			gpios = <15 GPIO_ACTIVE_HIGH>;
    			output-high;
    			line-name = "CANUART_MUX1_SEL1";
    		};
    	};
    };
        mymcan3_pins_default: mymcan3-default-pins {
            pinctrl-single,pins = <
                J784S4_IOPAD(0x080, PIN_INPUT, 0) /* (AK34) MCASP0_AXR4.MCAN3_RX */
                J784S4_IOPAD(0x07c, PIN_INPUT, 0) /* (AJ38) MCASP0_AXR3.MCAN3_TX */
    			>;
    	};	
    
        mymcan5_pins_default: mymcan5-default-pins {
            pinctrl-single,pins = <
                J784S4_IOPAD(0x03c, PIN_INPUT, 0) /* (AK38) MCASP0_AFSX.MCAN5_RX */
                J784S4_IOPAD(0x038, PIN_INPUT, 0) /* (AK35) MCASP0_ACLKX.MCAN5_TX */
            >;
        };
        &main_mcan3 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&mymcan3_pins_default>;
    	phys = <&transceiver3>;
    };
    
    &main_mcan5 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&mymcan5_pins_default>;
    	phys = <&transceiver3>;
    };
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kong:

    您能分享一下吗  完整  来自 dmesg 的日志?

    我认为 Transceiver3 节点不能在多个 CAN 节点之间共享。 您可以尝试针对 MCAN5 引用此线程、其中工程师能够成功启动 MCAN5: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1434713/tda4vh-q1-enabling-main_mcan5-for-linux-on-evm

    此致、

    Takuma