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.

[参考译文] TDA4上的 CAN 驱动器

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/950959/can-driver-on-tda4

主题中讨论的其他器件:TDA4VM

您好!

我在终端上看到了 CAN0和 CAN1、使用您提供的方法(https://e2e.ti.com/support/processors/f/791/t/922168)通过 ifconfig -a、可以设置 CAN0/CAN1。 谢谢!

但是、我遇到另一个问题:当我执行"cansend CAN0 113#2AAAAAAAAAAAAAAAAAAAAA"时、返回信息"m_CAN_platform 2701000.mCAN CAN0:bus-off"。

更改如下:



diff -git a/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts b/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts -board.b223fc9721d 100644 -/trads/gp2+/gp0 @@ + 默认 值/gp0 + gp0 @@+ gp1 + gp0 + gp0 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp1 + gp + ++ mcan2_GPIO_PINS_DEFAULT:mcan2_GPIO_PIN_DEFAULT{ +pinctrl-single、PINS =< +J721E_IOPAD (0x01f0、PIN_INPUT、3)//(AC2) MCAN2_RX.GPIO0_123 * /+J721E_IOPAD (0x01f0、PIN_INPUT、3)/*(0x01_INPUT + MCAN0_INTRUDIO124_IN_INL ) *+ GPIO124_IN_IN_INTRUT_TOUT_TOUT/(0x124_TOUT_TOUT_0_TO sw10_button_pins_default{ pinctrl-single、pins =< J721E_IOPAD (0x0、PIN_INPUT、7)/*(AC18) EXTINTn.GPIO0_0 */ @@-180、6 + 195、37 @@ pinctrl-single-single、pin =< J721E_IOPAD (0x230)+ GPMC0_IN_IN_IN_6 + GPIO0 + + GP_IN_IN_IN_IN_6 + GPIO0 + GP_IN_IN_IN_IN_IN_IN_IN_0 + GPIO0 + GP_IN_IN_IN_IN_IN_6 + GPIO0 + GPIO0 + GPIO0 + GPIO0 + GPIO0 + GPIO0 + GPIO0 + GPIO0 + GPIO0 + GPI + GPIO;+ P07{+/* P07 - MCAN0_STB#*/+ GPIO-hog;+ GPIO =<7 GPIO_ACTIVE_HIGH>;+ OUTPS-HIGH;+ LINE-NAME ="MCAN0_STB#";+}+ P13{+/* P13 - MLB_MUX_OUT-HOLD" ;+"GPIO_OUT_LESL"+"+ GPIO"+ GPIO"+ GPIO_OUT-LO_OUT-HOLD" +}; + +P14{ +/* P14 - MCAN_MUX_SEL */ +GPIO-hog; +GPIO =<12 GPIO_ACTIVE_HIGH>; +输出低电平; +线路名称="MCAN_MUX_SEL"; + d;};main_i2c0_PINS_DEFAULT:main-i2c0-PINs-DEFAULT{@@-350、6 +396、15 @@ status ="disabled";};+&MAIN_GPIO0{+ p127{+ GPIO-hog;+ GPIO=<127 GPIO_ACTIVE_HIGH>;+ output-low;+ output-tr_b/dtr-status/dtri = 100b/dtran/dtran2;dtids/g/dtran/dtran/dissue/dtran/dtran2;dtran/dtran/dtran/dtran/dissue/dissue/d4e/dissue/dtran/dissue/dissue/dtran/dissue/d4e/dtran/dt2}-out/g/dti_b/sim/g/g/d - a/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi ++ b/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi @@-1148、6 +1148、34 @@ @时钟名称="GPIO";}+ m_CAN0: 0x1000 m + Bosch reg;0x1000 m = 0x1000 + 0x1000 m = 0x1000 + 0x1000 0x0 0x2708000 0x0 0x8000>; +reg 名称="m_CAN"、"message_ram"; +电源域=<K3_PDS 156 TI_SCI_PD_Excluse>; +时钟=<K3_CLKS 156 1>、<K3_CLKS 156 0>; +时钟名称="clk" 、"clk", +; +interrupt-names ="int0"、"int1"; +Bosch、MRAM-cfg =<0x0 0 0 32 0 1 >; +}; + +m_CAN2:mcan@2721000{ +compatible ="Bosch、m_CAN"; +reg =<0x0 0x2721000 0x0 0x200>、 +0x0 0x2728000 0x0 0x8000>; +reg 名称="m_CAN"、"message_ram"; +电源域=<K3_PDS 160 TI_SCI_PD_Excluse>; +时钟=<K3_CLKS 160 1>、<K3_CLKS 160 0>; +时钟名称="clk" 、"clk", +; +中断名称="int0"、"int1"; +Bosch、MRAM-cfg =<0x0 0 0 32 0 1 >; +}; + MAIN_GPIO2:GPIO@610000{ Compatible ="ti、j721e-GPIO"、"ti、keystone-GPIO"; reg =<0x0 0x00610000 - 0x2.100- 0x17.1

此致

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

    您好!

    我们将在第二天或第二天对此进行研究、并尽快为您提供反馈。  

    您能否确认您在 TI TDA4VM EVM 上而不是在定制板上报告了此问题?

    此致

    Karthik

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

    您好!

    问题似乎是 CAN 消息未通过线缆发出、控制器可能会反复尝试重新发送同一消息、从而将 CAN 总线拉至脱离总线状态。 这是错误数量超过特定阈值时的状态。

    无法在线路上成功传输消息的原因可能有多种、例如:

    1. 收发器配置错误。
    2. CAN Tx 或 CAN Rx 的引脚复用不正确。
    3. 到 CAN-H 和 CAN-L 的连接不正确、或者电缆/电线已损坏。
    4. (笑声)

    我查看了您的补丁(假设这是唯一的变化)、我发现了一些问题:

    会对 m_CAN0和 m_CAN2进行引脚多路复用

    这两个节点都没有 pinctrl-0字段。 这不允许控制器将数据从 SoC 推送到收发器、然后再推送到 CAN 节点。 请查看常见问题 解答 https://e2e.ti.com/support/processors/f/791/t/922168 并搜索 pinctrl-0字段。 pinmux 在 K3-j721e-common-proc-board.dts 中完成。 请将这些节点引用添加到您的补丁中。

    请注意、除了 CAN Tx 和 CAN Rx 的引脚多路复用外、我们还需要多路复用启用 CAN 收发器的信号。 (在第2点中说明)

    2. MCAN2收发器不需要 GPIO0_127引脚多路复用

    您通过在 MAIN_GPIO0 {...}中将 GPIO0_127拉为低电平 节点。 但这里的问题是、您还需要对该信号进行引脚多路复用、以使该值生效。

    该 GPIO0_127通过2:1多路复用器馈入 MCAN2_STB 信号。

    要进行引脚多路复用、请参阅 mygpio1_PINS_DEFAULT{...} 文件 K3-j721e-common-proc-board.dts 中同一修补程序中的节点

    我相信、如果上述修复、您应该会很高兴。

    在当前状态下、一个良好的测试是在内部回送模式下运行。 在该模式下、无需从控制器中获取 SoC 中的数据、因此这将消除 Pinmux 和收发器的依赖关系。 如果失败、可能是因为节点状态未启用(请参阅 K3-j721e-common-proc-board.dts -&m_CAN0{...} 节点的状态字段。 您的情况中不存在这种情况。)

    要测试内部回送,请参阅 https://e2e.ti.com/support/processors/f/791/t/922168中的常见问题 解答。 我更新了"Debug" tips 下的部分。

    此致、

    Karan

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

    是的、我确认了

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

    您好!  

      但斯克供您回复。

      使用.dts 文件的补丁后、我们可以测试内部回送模式是否正常。 但它仍然无法正常输出。

       e2e.ti.com/.../3056.k3_2D00_j721e_2D00_common_2D00_proc_2D00_board.dts.txt

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

    您好!

    错误是什么?

    您是否注意到了我在 https://e2e.ti.com/support/processors/f/791/p/950959/3515019#3515019中提到的内容 ?

    此致、

    Karan

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

    您好!

    我无法测量 Rx 引脚(J24 PIN2)上的信号。 PCAN 发送 CAN 消息并连接到 J27 (引脚1和引脚3)。

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

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

    您好!

      收发器可能无法正常工作。

      Beacuse 我测量 U70的 PIN6和引脚14、它们是低电平。 引脚9为高电平。 引脚12和引脚13正常。

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

    您好,

    好消息。 我解决了问题。

    这是我的问题、我将 exp2 P06、P07、P13、P14设置为错误的位置。

    现在、新的 DTS 文件可以在 fine.e2e.ti.com/.../0842.k3_2D00_j721e_2D00_common_2D00_proc_2D00_board.dts.txt 上工作

x 出现错误。请重试或与管理员联系。