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.

[参考译文] TMS320F28377D:CAN TX 问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/971030/tms320f28377d-can-tx-issue

器件型号:TMS320F28377D

我有一位客户遇到以下问题。 请您给我们一些建议吗?  

目前、我们使用的是所有 CAN 邮箱。 我们有18条 Tx 消息和14条 Rx 消息、每个消息当前都分配给专用对象 ID。 我们的目标是释放一些对象 ID、因为我们需要添加其他 Tx 和 Rx 消息。 我们希望通过对所有 Tx 消息仅使用1-2 (最好是1)个对象 ID 来实现此目的。 到目前为止、我们创建了自己的 FIFO 缓冲区、并调用 CANMessageSet 将数据写入总线。

 

我们遇到的问题是,通过这样做,我们需要等待~270us 才能再次使用邮箱。 这会导致任务超支和失败。 我们发现、清除 CAN_IF2CMD 的挂起中断使我们能够更快地进行传输(这很好)、但这会导致数据一致性问题(很可能是 FIFO 缓冲区末尾的逻辑问题)。

 

是否有更简单/更高效的方法来实现我们所寻求的目标? 就 TX FIFO 消息而言、它们是否需要任何特殊标志(即 MSG_OBJ_FIFO)? 每条消息为8个字节、与其它消息没有关系。 FIFO 只能在邮箱忙时使用、此时无法发送消息。

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

    释放 Rx 邮箱相对容易、因为您可以通过使用筛选来接收同一邮箱中的任何 MSGID。 当然、这是假设应用程序能够足够快地读取接收到的消息、并且不会在不被读取的情况下导致消息被覆盖。

     

    传输略有不同、因为邮箱每次都需要使用新的(唯一的) MSGID 进行写入。

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

    问题已离线关闭。