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.

[参考译文] TMS320F28P650DK:MCAN 双 ID 滤波器

Guru**** 2577385 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1324061/tms320f28p650dk-mcan-dual-id-filter

器件型号:TMS320F28P650DK

您好!

 我正在尝试将 "mcan_ex4_receive"示例更改为  在双 ID 滤波器模式下接受 ID 0xF 或 ID 0x04。 我根据以下代码更改了滤波器配置:

 stdFiltelem.sfid2 = 0xFU;//标准滤波器 ID 2。
//配置要存储在缓冲元素0中的接收帧
stdFiltelem.sfid1 = 0x4U;//标准滤波器 ID 1。
//允许消息 ID = 0x4U 的帧被滤波器元件接受
stdFiltelem.sfec = 0x7U;//存储到 Rx 缓冲区
// SFT[1]的配置被忽略
 stdFiltelem.sft = 0x01;//类型01、双 ID

此代码不会为双 ID 模式配置滤波器。 对于这两个 ID 都没有接收到消息。

如何修改此示例、以便滤 波器在双 ID 滤波器 模式下工作?

Ari.

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

    尊敬的 Ari:

    将 sfid2设置为不同的值将无法实现您正在尝试达到的目标。  元素 sfid2是应用于 sfid1的掩码元素。   有关掩码滤波器工作原理的说明、请参阅 mcan_ex5_mASK_filter_receive。  对于您尝试完成的任务、可以使用 macn_EX10_receive_multiple_buffers 作为启动。  在 MCANConfig()函数中,只需定义2个筛选器元素,如下面的代码片段。  一个过滤器元素用于 msg ID 0xFU、另一个用于 msg ID 0x4U。

        //
        // Configure Standard ID filter element 0
        //
        stdFiltelem.sfid2              = 0x0U; // Standard Filter ID 2.
        stdFiltelem.sfid1              = 0xFU; // Standard Filter ID 1.
    
        MCAN_addStdMsgIDFilter(MCANA_DRIVER_BASE, 0U, &stdFiltelem);
    
        //
        // Configure Standard ID filter element 1
        //
        stdFiltelem.sfid2              = 0x0U; // Standard Filter ID 2.
        stdFiltelem.sfid1              = 0x4U; // Standard Filter ID 1.
    
        MCAN_addStdMsgIDFilter(MCANA_DRIVER_BASE, 1U, &stdFiltelem);
    
    

    此致、

    约瑟夫

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

    感谢 Joseph、

    我还设法使其正常工作、方法是 按照 "mcan_ex5_mask_filter_receive example"将 sfec 更改为6、"如果滤波器匹配、则设置优先级并在 FIFO 中存储1 "、并将 STF 更改为0x01。 显然、存储在 FIFO 中时只能使用双 ID 滤波器。

    您能告诉我在哪里可以获得有关存储从 MCAN 接收的数据的最佳策略的更多信息吗? 什么时候最好存储在 Rx 缓冲器中或 FIFO 中?

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

    尊敬的 Ari:

    我已经 回答了 这篇 关于使用 RX 缓冲区和 FIFO 作为参考的帖子。

    此致、

    约瑟夫