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.

[参考译文] TCAN4550EVM:将 TCAN4550连接到 Raspberry Pi

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/907549/tcan4550evm-connecting-tcan4550-to-raspberry-pi

器件型号:TCAN4550EVM
主题中讨论的其他器件:TCAN4550

我正在努力将 TCAN4550连接到 Raspberry Pi 3B+ 、但我似乎无法确定使 Linux 驱动程序正常工作的过程。 我已将内核更新为5.4.42、因此我可以告诉您应该内置驱动程序、但我无法确定如何与 TCAN4550进行实际通信。 如果有任何帮助,将不胜感激。

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

    您好、Nathan、

    您是否为 电路板的 TCAN4x5x 接口设置了器件树绑定?

    此致、

    Jonathan

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

    我尚未设置设备树绑定。 我正在尝试按照 https://www.raspberrypi.org/documentation/configuration/device-tree.md 上的说明 执行新的器件树绑定、但当我尝试在.dts 文件上使用 DTC 命令时、我创建了包含您发布的示例 tcan4x5x、我收到一个错误、说明 DTC 无法解析输入 树。 感谢您的帮助、

    Nathan

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

    示例中的器件树绑定特定于所使用的处理器和将要使用的 GPIO 线。  您将需要针对您的特定应用和硬件调整这些参数。  我建议按照器件树的另一个 Raspberry Pi 示例 ping GPIO 线路和 SPI、以帮助确定可能需要进行哪些修改。  TCAN4x5x 器件树绑定基于 TI 处理器而不是 Raspberry Pi。

    此外、您能否发布您收到的特定错误消息、以帮助我们更好地了解您面临的特定问题、并帮助我们就可能的解决方案提供更具体的建议。

    此致、

    Jonathan

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

    好的、我想我更接近修复、但我还没有解决。 我已调整 https://github.com/Ysurac/raspberry_kernel_mptcp/blob/master/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts 以适应导致此 DTS 文件的 tcan4x5x 器件树绑定。  

    /DTS-v1/;
    /plugin/;
    
    /{
    兼容="BRCM、BCM2835"、"BRCM、BCM2836"、"BRCM、bcm2708"、"BRCM、bcm2709";
    /*禁用 spi0.0的 SPI-dev */
    片段@0{
    目标=<&spi0>;
    _overlay__{
    状态="正常";
    };
    };
    
    片段@1{
    target =<&spidev0>;
    __overlay__{
    status ="disabled";
    };
    };
    
    /* CAN 控制器的中断引脚*/
    碎片@2{
    Target =<&GPIO>;
    _overlay__{
    tcan4x5x_pins:tcan4x5x_pins{
    BRCM、引脚=<25>;
    BRCM、函数=<0>;/*输入*/
    };
    };
    };
    
    /* CAN 控制器本身的 SPI 配置将所有内容绑定在一起*/
    碎片@4{
    目标=<&spi0>;
    _overlay__{
    /*需要避免 DTC 警告*/
    #address-cells =<1>;
    大小单元格=<1>;
    tcan4x5x:tcan4x5x@0{
    兼容="ti、tcan4x5x";
    reg =<0>;
    pinctrl-names ="default";
    pinctrl-0 =<&T 4x5x_pines>;
    SPI-max-frequency =<10000000>;
    Bosch、MRAM-cfg =<0x0 0 0 32 0 1 1>;
    interrupt-parent =<&GPIO>;
    中断=<25 0x2>;
    };
    };
    };
    _override__{
    振荡器=<&T 4x5x_osc>、"时钟频率:0";
    spimaxfrequency =<&tcan4x5x>、"SPI-max-frequency:0";
    中断=<&tcan4x5x_pines>、"BRCM, pines:0"、<&tcan4x5x>、"interrupts:0";
    };
    };
    

    然后、我将此 DTS 文件编译成 dtbo 文件、并将其放入 Raspberry PI 上的/boot/overlays 中。 我还需要做什么吗? 我没有收到任何错误、但我找不到如何访问 tcan4450、即使在器件树绑定有希望的情况下也是如此。

    谢谢、

    Nathan

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

    如果有人验证我的 DTS 文件设置是否正确、我们将非常感谢您的帮助。

    谢谢、

    Nathan

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

    您好、Nathan、

    很抱歉耽误您的时间并忽略您之前的帖子。  我将查看您提供的文件、并在短期内进行跟进。

    此致、

    Jonathan

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

    您好、Nathan、

    我没有看到任何我认为您的 DTS 文件有问题的东西、我也向我们的开发人员进行了检查。  如果它没有提供任何编译错误、我们可以说的内容不多、没有可能显示不同内容的引导日志。

    要访问 TCAN4550、您需要下载并构建 Linux CAN 实用程序 https://github.com/linux-can/can-utils。  这为 CAN 器件以及发送和接收数据包提供了接口。  这就是驱动程序的开发和测试方法、您可以通过此 IP 查看 CAN 接口。

    这是一个 Wiki、您可以将其用作一般参考。 https://developer.ridgerun.com/wiki/index.php/How_to_configure_and_use_CAN_bus

    加载 CAN-utils IP 后、我们的开发人员向我提供了一个在开发和验证过程中使用的一些命令列表、您可以使用参考来开始:

    发送消息非 FD 消息

    ./IP 链路设置 CAN0 UP 类型 CAN 比特率50000
    发送 CAN0 123#DEADBEEF

    接收消息

    /candump -A CAN0

    设置 CAN FD 并生成大量数据包

    ./IP 链路设置 CAN0 UP 类型 CAN 比特率50000 dbitrate 2000000 FD 打开

    /cangen CAN0 -g 0 -p 3 -i -f -e &

    以下内容阻止 cangen 发送数据包

    kill $(ps ax | grep -m 1 cangen | awk '{print$1}')

    显示了 CAN 接口

    /ip -d 链接显示 CAN0

    此致、

    Jonathan

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

    在组合器件树覆盖时、我没有收到任何错误、但在引导日志中也找不到任何有关 CAN 的引用。 如果我的器件树覆盖设置不正确、我会收到错误、还是会静默失败? 我已随附引导日志和 config.txt、以查看是否有任何明显错误。

    感谢您的帮助、

    Nathan

    e2e.ti.com/.../config.txt

    e2e.ti.com/.../boot_5F00_log.txt

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

    您好、Nathan、

    我们似乎需要从内核构建的 defconfig 中构建的.config、而不是 config.txt、因为它对于 TCAN 器件没有任何作用。  如果您可以提供、我们可以查看它。

    此致、

    Jonathan

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

    您好、Nathan、

    此外、请确保在构建时在 defconfig 中使用此选项。  这将告诉编译器编译驱动程序。  我们的开发人员没有看到任何与这两者相关的消息。

    CONFIG_CAN_M_CAN=y

    CONFIG_CAN_M_CAN_TCAN4X5X=y

    或者、如果您希望它们作为模块:

    CONFIG_CAN_M_CAN=m

    CONFIG_CAN_M_CAN_TCAN4X5X=m

    此致、

    Jonathan

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

    这是构建内核的.config 文件。 我添加了您提供的这些行、但我似乎仍然找不到任何有关 m_can 或 tcan4x5x 驱动器在系统中启动位置的参考。

    e2e.ti.com/.../my_2E00_config

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

    您好、Nathan、

    我们的开发人员唯一能想到的是、您可能没有将模块复制到器件中、您可以尝试使用内置模块而不是模块。  他建议尝试以下各项:

    CONFIG_CAN_M_CAN=y

    CONFIG_CAN_M_CAN_TCAN4X5X=y

    此致

    Jonathan