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 确认已发送消息?

Guru**** 2551110 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1369039/tms320f28377d-how-does-the-user-confirm-a-message-has-been-sent-on-can

器件型号:TMS320F28377D

工具与软件:

亲爱的香榭丽舍大街,

我是为我们的客户提出这个问题的。

是否有类似 SCI TXRDY 的寄存器或 driverlib API 可以使用户知道以前的数据已发送、并且 DCAN 已为另一个新的消息数据写入做好准备?

在 F28003x 上的较新 MCAN 上、我们在下面有类似的用途。 用户如何在 F2837x DCAN 模块上执行此操作?

//
//等待所有消息的传输。
//
while (MCAN_getTxBufReqPend (MCANA_DRIVER_BASE)
{

检查 CAN_TXRQ_X 是否变为0是否有意义?

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

    韦恩、您好!

    在传送新消息之前、您需要检查同一邮箱中是否有待处理消息、并检查 IFX 是否正忙。 如果没有待处理的消息且 IFX 不忙、您可以将消息传输到消息 RAM 进行传输。

    C2xware 中没有适用于 DCAN 的类似 API。

    我注意到 can.c 中的 can_sendMessage() API 不检查挂起状态。 请在应用代码中进行此操作。

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

    QJ 您好

    请您明确告诉我们如何检查待处理状态?

    检查 CAN_TXRQ_X 是否变为0是否有意义?

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

    您可以检查 CAN_TXRQ_21、

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

    如果正在使用的邮箱为10、您可以检查邮箱10是否有待处理消息:

    if ((node->TXRQ21 & 0x0A)!= 0U){

      ……