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.

[参考译文] AWR1642:已发送消息的计数在 MCAN 模块中完成

Guru**** 2604225 points


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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/660981/awr1642-the-count-of-the-transmitted-message-is-done-in-mcan-module

器件型号:AWR1642

您好!

我正在 验证 MMWAVE_SDK_01_01_00_02中的 CAN FD 驱动程序。  我发现 appDataCallBack 将被多次调用、不能用于计数已传输的消息数。

在 CANFD_MCANInt0Isr 中处理发送完成中断期间、将检查所有32个 TX 缓冲区和 MCAN_TXBTO 中的所有32位、如果 MCAN_TXBTO 中的第 n 位不为零、则将处理第 n 个 TX 缓冲区、例如、将调用 appDataCallBack。

如果创建了两个 CANFD 报文对象来发送两条报文。 发送第一条消息时、将触发 ISR 函数 CANFD_MCANInt0Isr、因为 MCAN_TXBTO 中的第一个位不为零、因此将调用第一个消息对象的回调函数 appDataCallBack。 但是、当第二次触发时、ISR 函数 CANFD_MCANInt0Isr 将再次触发、因为 MCAN_TXBTO 中的第一个位和第二个位都不为零、因此将首先调用第一个消息对象的回调函数 appDataCallBack、 然后将调用第二个消息对象的回调函数。 因此、在传输两条消息时、第一个按摩对象的回调将被调用两次、第二个按摩对象的回调将被调用一次。

以下是在 CANFD_MCANInt0Isr 中处理发送完成中断的代码。

/*进程传输完成中断*/
IF (((内部状态和 MCAN_INTR_SRC_TRANS_COMPLETE)=MCAN_INTR_SRC_TRANS_COMPLETE)
{
状态= MCAN_getTxBufTransmissionStatus (baseAddr);

/*处理所有32个 Tx 缓冲器*/
for (索引= 0;索引< MCAN_MAX_TX_BUFFERS;索引++)
{
buffIndex =((uint32_t) 1U <<索引);
if (buffIndex ==(status & buffIndex))
{
/*获取消息对象指针*/
ptrCanMsgObj = ptrCanFdMCB->txMapping[索引];

/*递增接收到的中断数*/
ptrCanMsgObj->interrtsRxed++;

/*呼叫注册的回叫。 *
if (ptrCanFdMCB->appDataCallBack!=空)
{
ptrCanFdMCB->appDataCallBack ((CANFD_MsgObjHandle) ptrCanMsgObj、CANFD_REASE_TX_Completion);
}
}
STATUS =(STATUS &μ~buffIndex);
如果(状态= 0)
{
中断;
}
}

谢谢、

Beren

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

    如果我理解正确,您希望每发送一条消息只能调用一次 appDataCallBack?

    您是否认为这是代码中的错误?

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

    您好、Cesar、

    是的、我希望在传输多个按摩时、每个传输的消息只会调用一次 appDataCallBack。

    我认为 SDK 中将 多次调用 appDataCallBack 的当前代码是一个错误。

    此外,您能否提供任何建议来计算成功传输的按摩次数?

    谢谢、

    Beren

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

    Beren、您好!

    此线程的副本
    e2e.ti.com/.../2440526

    我们是否可以关闭此主题以避免重复的回复?

    谢谢、
    Raghu