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.

[参考译文] AWRL6844:通过专用缓冲器接收消息时、CAN 消息丢失

Guru**** 2694555 points

Other Parts Discussed in Thread: AWRL6844

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1598190/awrl6844-can-message-is-lost-when-receiving-message-by-dedicated-buffer

器件型号: AWRL6844

我已将 CAN 驱动程序引用配置为 SDK 中的示例、但我已将宏 APP_MCAN_STD_ID_FILTER_CNT 修改为 2、因为我需要接收 2 条具有不同 ID 的消息。 fisrt 消息的 ID 为 0x650、第二个为 0x402、当我通过计算机发送具有 0x650 ID 的消息时、awrl6844 可以接收消息、但未收到消息、我发现中断状态为 0x80、这意味着 Rx FIFO 1 消息丢失“、因此我修改了 FIFO1 的计数为 32、然后中断状态为 0x10、为什么?

第二条消息是否已在 FIFO1 中填充? 但在我的代码中、stdFiltElem->sfec = MCAN_STD_FILT_Elem_buffer、t he stdFiltElem->sfid1 = 0x650、stdFiltElem->sfid1= 0x402。

我需要你的帮助,谢谢

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

    嗨、Albert、

    感谢您联系 CAN 接收。 对于报告消息丢失错误的中断状态、MCAN 外部读写示例默认不会为 FIFO 分配任何元素。 由于 xWRL68xx TRM 的第 12.4.8.2.1 节 Rx FIFO 阻塞模式所述、这会导致 MCAN 模块抛出消息丢失错误

    是否已在 FIFO1 中填写第二条消息? 但在我的代码中、stdFiltElem->sfec = MCAN_STD_FILT_Elem_buffer、t he stdFiltElem->sfid1 = 0x650、stdFiltElem->sfd1= 0x402。

    是否都为 FIFO 接收配置了两个标准滤波器元件?  如果要在 FIFO1 中接收指定的 ID、则应将 sfec 设置为 MCAN_STD_FILT_Elem_FIFO1。 您可能看到第二条消息出现在 FIFO1 中的原因可能是只有缓冲区过滤器应用了消息 0x650、而不应用 0x402。 如果没有匹配的过滤器、Rx 接受过滤将检查我们是否可以接受示例中启用的不匹配帧 (ANFS = 0)、并会将该数据拉至 FIFO1。 或者、仔细检查两个过滤器元素是否都设置正确、或者您可以使用双元素过滤器设置一个过滤器元素 (SFT = MCAN_STD_FILT_TYPE_DUAL)。

    如果您对此有帮助、或者有任何其他问题、请告诉我。

    谢谢、

    Kristien

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

    是的、正如您所说、我找到了根本原因、非常感谢