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.

[参考译文] TMS570LS1224:为不同的消息更改 CAN ID (HalCoGen + DCAN 设置)

Guru**** 2463330 points
Other Parts Discussed in Thread: TMS570LS1224, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1212352/tms570ls1224-changing-can-id-for-different-messages-halcogen-dcan-setup

器件型号:TMS570LS1224
主题中讨论的其他器件: HALCOGEN

您好!

我使用的是 TMS570LS1224 XL2板。

该 TI 示例没有 CAN 接口、因此我 使用 HALCoGen 添加了该示例、以获得用于传输消息的有效示例。

(https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1210887/halcogen-user-guideline-for-pinmux-at-halcogen-to-get-pinmux-working)

它正在发送 ID 为0x001的消息。 但是我不理解改变用于传输不同消息的 CAN-ID 的想法。

例如、当我将 ID 更改为0x458时、CAN Anylyzer 看到 ID 0x000h、并且消息为空/损坏、Cycletime 不以 1段重复。 它以70ms 重写为000条消息。

我在 C2000论坛上找到了一个使用 ID 消息更新函数的提示。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1082146/tms320f280025c-send-different-can-messages-with-only-id-change

因此在 can.c 库中找到"CanUpdateID()"。

但是 usind 这个函数破坏了忧郁。 该消息为空、CAN-ID 不再为001、它是000h

不使用 canUpdateID()

Cycletime 为~1sek、并且消息在那里:

(在此示例代码中不传输 CAN-ID 000h、它仅存储在 PCAN-View CAN 拼接软件中)

FUNTER 如何发送具有不同 CAN-ID 的消息?

非常感谢、此致。

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

    尊敬的 Roland:

    "canUpdateID"的第三个参数不仅是 ID、它是总仲裁值  

    因此、如果我们要更改 ID、那么我们应复制此寄存器的上一个值、并应更改备份值中的 ID 字段、并应传递给该函数。

    如果您看到上面的代码、我复制了仲裁寄存器值、稍后我将 ID 字段更改为所需的 ID、并将修改后的仲裁值传递给  canUpdateID 函数。

    请尝试在您的终端执行相同的操作、并告诉我。

    --

    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    我理解您的解释。 函数名的选择不好,所以它是误导性的。 但我仍然没有让它正常工作。

    我使用11位标识符、是因为在位掩码中输入了"错误"的预期位置"1"

    原始 HALCoGen 代码会发出正确的消息、ID 为1

    结果:

    通过寄存器修改并检查 ID 是否已插入 ArbValue:

    结果:

    身份证哪里去了?

    因此、由于11位标识、我向左移动了 ID 0x458值18。

    现在 我得到了正确的 ID 458.

    但它现在是一个 RTR 帧 (远程传输请求)

    当使用 ID 1作为 HALCoGen 中的代码时、它不是 RTR 帧。 (见上文)

    但仲裁现在看起来是正确的...

    有什么想法、为什么现在是 RTR 帧?

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

    尊敬的 Roland:

    您使用的分析仪工具是什么?

    您是否正确配置了工具侧的 CAN ID 长度?

    --

    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    我意外点击了"这解决了我的问题"。

    此时我不敢相信、我的 PCAN-View 设置为11位。 与使用上面的 ID1和使用 ID458屏幕截图是绝对没有区别的。

    在这些屏幕截图之间、未执行记录器工具更改、只是执行了一个新的编译器运行代码、并删除了 ns Arbitration 的注释行。

    有什么建议吗?

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

    数据也丢失了... 但 ID 现在正确

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

    您正在使用的 CAN 分析仪工具是什么?

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

    https://www.peak-system.com/PCAN-USB.199.0.html?&L=1

    www.peak-system.com/PCAN-Basic.239.0.html

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

    最终我发现了 RTR 问题。

    现在我可以发送带所需 ID 但没有远程传输位的消息。

    因为你们的例子,我使用了 IF2ARB。 但我的接口是接口1。 因此我将 Code 更改为 CANReg1->IF1ARB

    这是11BIT 标识符的工作代码、可将 ID 更改为458h