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.

[参考译文] MSPM0G3507:MCAN TX 跳过消息

Guru**** 2529560 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1426836/mspm0g3507-mcan-tx-skipping-messages

器件型号:MSPM0G3507

工具与软件:

尊敬的:

因此、我使用以下代码向 MCAN 发送3条消息。

当我分步讲解时、全部3条消息都会显示在 CAN 总线上。

当它正在运行时(调用此路由之间的时间很短)、CAN 总线上仅出现一条通路。

我尝试了多种方法、例如检查 msg 是否已添加(使用  DL_MCAN_TXBufAddReq 返回值=0进行测试)。

代码:

bool canTxFifo (联合消息*txMessage)

DL_MCAN_TxEventFIFOStatus FIFoStatus;
Bool ret;
DL_MCAN_getTxEventFIFOStatus (MCAN0_INST、&fifoStatus);
如果(!fifoStatus.fifoFull)

   txMsg.id = txMessage->can.id << 18u;
   对于(uint32_t i = 0;i < 8;i++) txMsg.data[i]= txMessage->can.data[i];

  DL_MCAN_writeMsgRam (MCAN0_INST、DL_MCAN_MEM_TYPE_FIFO、0、&txMsg);
  DL_MCAN_TXBufAddReq (MCAN0_INST、0);

  返回 true;
}

设计
  返回 false;
}

非常感谢您的帮助!

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

    您需要在成功发送最后一个包之前发送第二个包。 您可以尝试在不同的封装之间添加延迟。  

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

    感谢您的帮助!

    如果我添加延迟1ms、它是有效的。

    是否有标志显示我何时可以发送下一个包?

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

    您可以检查下面的中断