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.

[参考译文] TMS320F28388D:DCAN 未为单个消息对象设置 EOB 时会发生什么情况?

Guru**** 2531950 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1556356/tms320f28388d-dcan-what-happens-when-eob-is-not-set-for-single-message-object

器件型号:TMS320F28388D


工具/软件:

根据 2838x 技术参考手册、在使用单个消息对象时、DCAN 块结束标志应设置为 1。

[EOB 值为 1 表示]消息对象是单个消息对象或 FIFO 缓冲块中的最后一个消息对象。

注意:此位用于连接多个消息对象以构建 FIFO 缓冲区。 适用于单个消息

对象(不属于 FIFO 缓冲器)、该位必须始终设置为 1。

在我们的应用程序中、每个邮箱都配置为发送或接收单个 CAN ID。 我对 MCAN 和 DCAN 的实现进行了压力测试、以了解当消息读取速度不如接收速度快时会发生什么情况、并注意到意外(显然未定义)行为。 以下是说明邮箱配置的代码片段:

  frame = CAN_MSG_FRAME_STD;
  filter = CAN_MSG_OBJ_USE_ID_FILTER;

  filter |= CAN_MSG_OBJ_FIFO; // Toggle EoB here

  CAN_setupMessageObject(obj->portHandle, aMailBox + 1, aId, frame,
                         CAN_MSG_OBJ_TYPE_RX, 0x1FFFFFFF, filter,
                         aLen);

-当 EOB = 0,我们读取发送的最重新发送的消息(旧消息似乎被覆盖)

-当 EOB = 1 时,我们读取自上次读取后发送的第一条消息(新消息被丢弃)

个人而言、我指的是第一种接收最新数据的选项。 我不想对过时的数据进行操作。 我们提供了一个通用工具、因此、如果用户配置了新数据的读取速率相对于消息传输速率不理想、我最好始终使用新数据作为默认值。  但是、文档似乎表明这是一个错误的配置、并且行为(在我的测试中似乎一致)似乎未定义。  

您能否评论 EOB 对单个消息对象的使用? 如果我有任何期望、结果将与这些结果相反。

谢谢!

Zia

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

    尊敬的 Zia:

    您能否说明如何确认 EOB=1 时丢弃的消息?  您只是轮询消息对象、还是使用 ISR 在有新数据可用时读出消息对象?

    谢谢、

    Joseph

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

    您好、Joseph:

    我再深入看一下、就会发现 can_msg_obj_FIFO 的极性不符合我的预期(下面来自 driverlib can.c):

    //如果这是 FIFO 的单次传输或最后一个邮箱、则设置 EOB 位。
    //如果这不是 FIFO 中的最后一个条目、则将 EOB 位保留为 0。
    //
    if (flags & CAN_MSG_OBJ_FIFO)== 0u)
     msgCtrl |= CAN_IF1MCTL_EOB;
    }
    在这种情况下,如果我上面所说的行为是相反的,并做了我期望的方式。  
    它可能不再相关,但回答你的问题:我轮询和重新传输 CAN 消息 10 毫秒在 2838x 和使用 KVaser CanKing 发送突发消息 20 毫秒与滚动计数器在消息数据. 可让我轻松查看是否接收到最新数据或过时数据。
    感谢你的帮助。
    Zia