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.

[参考译文] TMS320F28069:F28069 canbus 接收问题

Guru**** 2540720 points
Other Parts Discussed in Thread: TMS320F28335

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1129160/tms320f28069-f28069-canbus-receive-problem

器件型号:TMS320F28069
主题中讨论的其他器件:TMS320F28335

我在接收 CANbus 2.0B 格式的数据时遇到一些问题。  

当一次只能发送一段数据时、接收到的数据是正常的。 当 CAN 发送多个数据时、接收到的数据异常。

我要发送的信息如下:

由0x04f83402的 ID 读取的信息如下:  

recv_L 接收 MDL 数据

recv_H 接收 MDH 数据

0x04f83402的 ID 应为0x00。  因此、recv_L 和 recv_H 应该都为0。 问题是什么?

李凤、陈

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

     李凤

                   我不明白您所说的“单个数据”是什么意思。 我假设您是指像0x00这样的单字节。 邮箱 RAM 就像常规 RAM 一样。 它存储先前接收到的数据。 当您为器件加电时、MBX RAM 包含一些随机数据。 此数据将与接收到的帧的字节一起被覆盖。 从接收 MBX 读取字节后、这些字节仍保留在那里。 即它们不会"消失"或变为零。 由于接收到的帧的 DLC 值已知,因此您需要以这样的方式编写代码,使其获取真实数据并忽略其余数据。 例如、如果接收到的帧只有3个字节、那么您的代码应该只抓取这3个字节并忽略另外5个字节。

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

    我只需将 Mailbox14的 MSGID 设置为0x84f83402。 数据仅为1字节。

    我没有设置其他 ID:0x84f83400、0x84f83401、0x84f83403。  当 CAN 发送多个数据时、接收到的数据异常。

    由0x04f83402的 ID 读取的信息如下:  

    问题是什么?

    李凤、陈

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

    我在上一篇文章中已经提供了解决方案。 您只需要读取接收到的字节。 如果您仅接收到字节(接收到的帧由 DLC=1指示)、则代码应只读取该字节并忽略其余字节。 如前所述,MBX RAM 将包含“内容”。 它就像常规 RAM 一样。  

    请下载我的应用报告 http://www.ti.com/lit/SPRA876。 它有许多经过测试的示例。 请注意、这些示例是为 TMS320F28335器件编写的。 但是、只要您处理 SYSCLKOUT 速度的变化和 CANBTC 寄存器保证的结果变化、它们就可以轻松地用于任何具有 eCAN 的28x 器件。 我还请求您查看提供的调试提示。 大多数 CAN 问题都可以通过查看此检查清单来解决。