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.

[参考译文] TMS570LS3137:CAN 自动重传因仲裁丢失而发生故障

Guru**** 2393725 points
Other Parts Discussed in Thread: TMS570LS3137

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1504574/tms570ls3137-can-automatic-retransmission-failure-due-to-arbitration-loss

器件型号:TMS570LS3137

工具/软件:

您好:
我们目前正在使用 TMS570LS3137微控制器开发一个项目。 为此、我们采用 TMS570LS3137 Hercules 开发套件(HDK)。 在开发过程中、我们遇到了某些问题、请您注意。 我们非常感谢您为解决这些问题提供的帮助。

我们的项目使用 CAN 通信协议。 系统中的一个模块是 HMI 器件、需要通过 CAN 与 MCU 通信。 通过 PCAN 接口监控该通信。 两个节点都以100毫秒的间隔发送 CAN 消息。 每条消息都包含一个序列号、这样我们就可以检测到任何丢失的传输。

分配给 HMI 的 CAN ID 在数字上小于 MCU 的 CAN ID。 因此、当两个器件尝试同时发送时、HMI 在仲裁中胜出、并按预期获得对 CAN 总线的访问权限。

尽管通过 DCAN CTL 寄存器中的 DAR 位启用了"自动重新传输未成功消息"功能、但我们观察到消息缺失、如通过 PCAN-View 获得的图[00]所示。 数据字段右侧的第三个字节表示序列号。 虽然9A 预计将跟随99、但序列直接跳至9B、表示消息丢失。

在从 HMI 获取的日志(图[01])中、标记为"msg#:"的字段表示消息总数、而"panded msg#:"表示错过的消息数。 长时间的测试表明、错过的消息数量会随着时间的推移而增加。

从 CTL 寄存器禁用自动重传功能不会导致错误数量发生任何显著变化、如图[02]所示。

在这方面、我们想提出以下问题:

  1. 如何正确配置和操作自动重新传输功能?
  2. 在仲裁丢失的情况下、外设如何确保在总线可用后、挂起数据以正确的顺序重新传输?
  3. 除了自动重传之外、是否有任何其他外设级机制或配置可用于解决此问题?

下面提供了上述数字供您参考。

此致、

 

 

图[00]

 

图[01]

 

 

图[02]

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

    尊敬的 Ataberk:

    我真诚的道歉,延迟的回应,我休息了几天,没有时间来处理这个主题。

    Unknown 说:
    如何正确配置和操作自动重传功能?

    自动重新传输不需要任何特殊配置。  

    默认情况下启用该功能、因为 DAR 的默认值为零。 除此之外、不需要任何特殊配置。

    我这边的唯一建议是、请验证缺少的 CAN 数据包是来自  TMS570LS3137 还是 HMI 器件。 我们在控制器侧进行了重新传输、但我们不确定是否在 HMI 侧启用了此功能。

    --
    此致、
    Jagadish。