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.

[参考译文] AM62P:无法在 AM62P-LP 上通过 CAN 总线接收数据

Guru**** 2826855 points

Other Parts Discussed in Thread: SK-AM62P-LP, SN65HVD230

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1623256/am62p-cannot-receive-data-on-can-bus-on-am62p-lp

部件号: AM62P
主题: SN65HVD230 中讨论的其他器件

大家好:

目前、我们正在按照 MCAN Linux 指南第 4.1.5 节中的说明、在 Falcon 引导 (SBL + Linux) 期间在 A52 Linux 内核上测试 CAN 设置。 平台运行的是 SDK 11.02。

我们使用板上的两个端子成功测试了内部环回(不需要额外设置)。 在一个终端中、我们执行 cansend、而另一个candump则运行以侦听消息。 此测试按预期运行。

但是、我们在尝试外部环回时会遇到问题。 具体而言、我们main_mcan1 (J1 connector pins 1 and 2)mcu_mcan0 (J11 connector pins 22 and 16)使用跳线连接了和接口。 发送消息时、接口最终进入 总线关闭 状态和停止工作。 我们使用电路板原理图验证了 TX/RX 引脚位置、但我们可能错过了接线中的某些内容。

此外、我们尝试使用外部 CAN 发送器。 我们将一个矢量 VN1610 器件连接到了连接器 J1  在 EVM 板上使用跳线、并通过 USB-C 将 VN1610 连接到 PC 我们使用基于 Vector XL 驱动程序库 API 的 PC 应用程序来传输 CAN 帧、但行为保持不变、接口仍会转换到 总线关闭 状态。

您能否提供有关此行为的可能原因的建议? 此外、是否有办法在 Linux 中为 CAN 子系统启用额外的调试日志记录、以帮助更低层面地诊断潜在问题?

我们将附上硬件设置和布线的图像、以供参考。

此致、
Dušan μ s

 

internal_loopback.png
external_loopback.png

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

    您好 Dušan

    能否确认您参考了 Foundational_Components Kernel_Drivers 文档的这一部分: https://software-dl.ti.com/processor-sdk-linux/esd/AM62PX/latest/exports/docs/linux/Linux/Kernel/Linux/MCAN.html


    您能否提供外部环回设置图?

    两个模块是否都设置为相同的波特率?

    您似乎在使用 SK-AM62P-LP、该器件没有 CAN 收发器。 您可以在 Linux SDK 文档中查看一个类似的示例: https://software-dl.ti.com/processor-sdk-linux/esd/AM62PX/latest/exports/docs/linux/How_to_Guides/Target/How_to_test_MCAN_on_AM62x.html

     您还可以参阅 MCAN 调试指南应用手册: https://www.ti.com/lit/an/spradp4/spradp4.pdf

    此致、

    Anshu

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

    您好 Dušan

    我意识到这可能不需要收发器。 只是为了确保跳线连接牢固、正确吗? 断开连接可能会导致总线关闭行为。

    谢谢、

    Anshu

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

    您好 Anshu、

    是的、我们参考了您提到的文档链接。

    我们的目标是重现与之前在 J784S4 板上使用的设置类似的设置。 在该设置中、我们直接使用跳线连接了两个 CAN 接口、并且能够成功发送和接收消息、而不会遇到总线关闭情况。 作为参考、可以在此处查看设置和讨论:
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1400374/processor-sdk-j784s4-cannot-receive-data-on-can-bus-on-sdk-j784s4-9-2/5363418

    在 AM62PX 平台上的当前设置中、两个接口均配置为相同的比特率 (500000)。 尽管如此、在尝试外部通信时、接口最终进入 总线关闭 状态。

    我们已经使用原理图查找 TX/RX 引脚位置上接口 main_mcan1 和 mcu_mcan0 的相关信息、并相应地连接了跳线(仍然不确定这些引脚是否对 TX/RX 有效)。 连接牢固、但我们将在下面提供当前接线设置的图片以供确认。

    如果在配置或硬件设置中存在我们可能忽视的任何内容、请告知我们。

    此致、
    Dušan μ s

      

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

    您好  Dušan

    我看不到此设置有任何明显的问题。

    您说您正在使用 SBL 引导、对吧? 您能否确认其他操作系统未尝试访问 CAN 或该引脚上未复用的任何其他信号?

    在 candump 命令上、是否可以添加-e 和-x 标志? 希望这能为我们提供更多信息。

    谢谢、

    Anshu

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

    您好 Anshu、

    为了消除与我们的修改相关的任何潜在问题、我们切换回默认的 SD 卡映像、并使用标准引导流程 (SPL + U-Boot + Linux) 引导系统。

    但是、即使在这种配置中、我们也会观察到相同的行为。 当我们初始化接口并尝试发送 CAN 帧时、接口将转换为 总线关闭 状态。

    使用的命令:

    IP 链路设置 MAIN_mcan1 类型 CAN 比特率 1000000
    ip link set main_mcan1 up
    CANsend MAIN_mcan1 123#DEADBEEF

    内核输出:

    [108.752325] CAN:控制器局域网核心
    [108.756785] NET:注册的 PF_CAN 协议系列
    [108.770272] CAN:原始协议
    [108.775598] m_can_platform 20711000.can main_mcan1:总线关闭

    此外、的输出ip -details link show main_mcan1为:

    6:main_mcan1: MTU 16 qdisc pfifo_fast 状态 up 模式默认组缺省值 qlen 10
    链接/CAN 混杂 0 allmulti0 minmtu 0 maxmtu 0
    CAN 状态错误激活 (berr-counter TX 0 Rx 0) restart-ms 0
    比特率 500000 采样点 0.875
    tq 12 prop-seg 69 phase-seg1 70 phase-seg2 20 SJW 10 BRP 1.
    m_can:tseg1 2..256 tseg2 2..128 SJW 1..128 BRP 1..512 BRP_inc 1.
    m_can:dtseg1 1..32 dtseg2 1..16 dsjw 1..16 dbrp 1..32 dbrp_inc 1

    由于该板不包含板载 CAN 收发器、因此我们在设置中添加了一个外部收发器。 我们使用了 TI 文档中引用的同一收发器、特别是 SN65HVD230 CAN 板套件 拓扑、这在 AM62x CAN 测试指南中有所提到。

    我们通过测量以下内容来验证硬件连接:

    • VCC 和 GND 之间为 3.3V

    • CANH 和 CANL 之间的 120Ω

    尽管如此、在传输消息时仍会出现总线关闭情况。

    我们还使用 Vector VN1610 器件测试了通信。 在 Linux 方面、我们运行了:

    candump -x -e main_mcan1

    从 VN1610 传输帧时、Linux 端不会接收任何消息、也不会报告其他错误。

    下面是我们当前硬件设置的图像、可供参考。

    此致、
    Dušan μ s

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

    您好  Dušan、

    我目前不在办公室、因此无法在我自己的 EVM 上进行测试。 我将与开发团队联系、了解他们的设置上次测试的时间。

    谢谢、

    Anshu

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

    您好  Dušan、

    对延迟深表歉意。 开发团队已经在他们自己的 EVM 上测试了设置、但没有得到总线关闭条件。

    就在测试中、是否可以将正在使用的 MCAN 接口从 MCU MCAN1 更改为 0?

    谢谢、

    Anshu

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

    尊敬的 Anshu:

    对延迟的回复表示歉意。 我们现在已经成功验证了可以发送和接收。 根本原因是 VN1610 框上的跳线选择不正确。 在传输期间使用示波器探测信号后、我们观察到 CAN H 和 CAN L 跳线映射的文档似乎不准确。

    分享下面的工作设置、以防他人受伤。

    此致、
    Dusan

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

    您好  Dušan、

    感谢您与其他人分享该解决方案。 该主题将关闭。

    此致、

    Anshu