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.

[参考译文] TMS320F2800157:CAN 通信问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1324554/tms320f2800157-can-communication-issue

器件型号:TMS320F2800157
主题中讨论的其他器件:TMDSCNCD2800157C2000WARE

尊敬的 TI 支持团队:

我 有 一个关于我们在使用您的硬件(TMDSCNCD2800157)时遇到的 CAN 通信的问题。 我们遇到 TX 错误、其中只有一条消息、特别是具有最高优先级对象 ID 的消息、成功发送。 但是、将跳过所有其他消息。


经过进一步调查、我们发现引入250微秒的延迟可以解决该问题、从而能够成功传输消息。 虽然该临时解决方案可以缓解该问题、但对我们的应用的要求来说、这是不可持续的。


我们认为、此问题可能与 我们用于 CAN 通信的德州仪器(TI)器件(TMDSCNCD2800157)的硬件或固件有关。 我们已确保我们的软件配置符合行业标准和最佳实践,但问题仍然存在。


鉴于这一问题的严重性及其对我们业务的影响,我们恳请你立即协助解决这一问题。 我们非常感谢您为解决此 TX 错误并确保正确传输所有消息而提供的任何见解、建议或固件更新。


如果需要从我们的终端获得更多信息或诊断数据来帮助进行故障排除、请立即与我们联系。 我们致力于与您的团队合作、以快速解决此问题、并确保 CAN 通信系统的可靠运行。


感谢您、我们期待您的迅速响应和解决。

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

    尊敬的 Prashant:

    您能否提供该问题的更多详细信息?

    -这是 CAN 还是 MCAN 模块?

    -发生这种情况的波特率是多少?

    -您的测试环境是什么?  您提到了  TMDSCNCD2800157、它是控制卡。  该硬件没有板载收发器、因此您必须将其与外部收发器相连。  或者您是否正在使用您自己的硬件设计、如果是、F2800157器件的主时钟源是什么?

    - CAN 总线中有多少个节点,是否有多个节点正在尝试发送帧?

    -您是通过 C2000Ware 示例对此进行了测试,还是使用了自定义代码?

    谢谢。此致、

    约瑟夫

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

    Prashant,

             重要的是如何在启动下一个传输之前确定上一个传输是否已完成。 如果您使用 MCAN、请下载我的应用报告 http://www.ti.com/lit/SPRACU9 并查看提供的调试提示。 通过查看此检查清单、可以解决大多数 CAN 问题。 如果您使用 DCAN、请使用 http://www.ti.com/lit/SPRACE5

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

    您好、Joseph:

    这是 CAN。

     波特率为 500k。

    除了 TMDSCNCD2800157外、我还使用 经过测试的 TCAN1042。

    只有一个节点是独木舟。

    我检查了两个 C2000Ware 示例、而且 这两个示例的自定义代码行为都是相同的。

    谢谢。

    普拉桑特

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

    Prashant,

    独木舟在看到 CAN 帧时是否发送 ACK?  您是否可以监视 CAN_ES 寄存器以查看触发了哪些错误标志以及遇到了什么 LEC (最后一个错误代码)?  可能传输的帧没有得到确认、并且 F2800157在连续尝试传输之后报告为错误。

    此致、

    约瑟夫

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

    您好、Joseph:

    我检查了 CAN_ES 寄存器、没有遇到标志、LEC 也是000

    我认为这种承认是正确的。

    我们实际上   在其他项目中使用了相同的控制器系列和相同的 CAN 堆栈、 因为我们会 以相同的配置正确获取所有消息、 唯一的区别是  我们在另一个项目中使用的控制器是带有定制开发硬件的64引脚封装,在这里我们尝试使用带有外部收发器的80引脚评估板 (TCAN1042 )。

    谢谢。

    普拉桑特

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

    Prashant 您好!

    约瑟夫目前不在办公室、由于星期一是美国的假日、他将无法回复到星期二。

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

     Prashant,

               问题的描述不清楚。  

    您是否说只有来自"最高优先级对象 ID"的消息被成功发送? 如果是、成功传输的消息对象编号是多少、成功传输的消息的 ARB ID 是多少?  那么、如果您从其他报文对象进行传输、会导致传输错误吗? 这不可能发生。 错误行为与消息对象或 ARB ID 无关。

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

    尊敬的 Hareesh Janakiraman:

     最高优先级的对象 ID 意味着、假设我们使用3个对象 ID、2、3个消息框、那么只有1个对象 ID 进行传输、2、3不进行传输、但如果我在每次传输之间增加250us 的延迟、那么所有3条消息都在传输。  

    谢谢。

    普拉桑特

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

    当标记要发送的多个消息对象时、数字上最少的对象具有优先级。 如果您从对象1启动背靠背传输、则其他对象可能根本没有机会传输。 在加载新消息之前、请确保来自其他对象的所有等待的传输都已完成。

    22.10.2接收/发送优先级
    报文对象的接收/发送优先级是和报文编号有关的、而不是与 CAN 有关
    标识符。 报文对象1的优先级最高、报文对象32的优先级最低。 如果超过
    有一个传输请求被挂起、会根据相应报文的优先级为这些请求提供服务
    例如、具有最高优先级的报文可以放入具有最低优先级的报文对象中
    数字。