我有一位客户遇到以下问题。 请您给我们一些建议吗?
目前、我们使用的是所有 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 只能在邮箱忙时使用、此时无法发送消息。