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 问题

Guru**** 2562120 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1479434/tms320f28p650dk-mcan-question

器件型号:TMS320F28P650DK

工具与软件:

尊敬的专家:

目前我们在使用 MCAN 时遇到了一个技术细节问题:主要是因为我们最初使用的是 DCAN。 DCAN 有32个邮箱。 当邮箱被配置为接收时、可以使用位屏蔽过滤机制。 然而、MCAN 只有 FIFO 0和1可以使用位掩码机制。 尽管 FIFO 的长度可以达到64、但没有标志位显示哪个元素刷新数据。 这样、我们就需要查询 id 来匹配数据并更改底层程序逻辑。 我不知道我们的理解是否正确、或者 RX 缓冲区是否也可以配置为位掩码过滤机制。 我们可以使用 newdata 位来确定哪个元素有新数据。

谢谢

Joyce

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

    Joyce、您好!

    正确的语句是 MCAN 支持 Rx 缓冲区或两个 RX FIFO 之一的位掩码机制。 因此、可以将 RX 缓冲区配置为进行位掩码过滤。 但是、也可以使用 MCAN_IR.RF[0:1]N (RX FIFO[0:1]新消息)标志、我还想指出 TRM 章节中的以下注意事项:

    当接受的消息被写入两个 Rx FIFO 之一或 Rx 缓冲区时、未修改的接收标识符将独立于所使用的过滤器进行存储。 接受过滤器过程的结果在很大程度上取决于配置的过滤器元素的顺序。

    考虑到这一点、应用 可以:

    1) 1)将过滤器元素匹配操作配置为"设置高优先级消息中断标志 MCAN_IR.HPM 并将接收到的帧存储在 FIFO 0或 FIFO 1中"

    2) 2)接收到接受的消息时、MCAN_HPM 寄存器包含有关以下方面的详细信息:

    1. FLST:匹配了哪个筛选器列表(STD/XTD)
    2. FIDX:过滤器索引(将等于匹配消息的 ID)
    3. MSI:存储消息的位置(Buffer/NoFIFO、FIFO MSG 丢失、存储在 FIFO0中的 MSG 或存储在 FIFO1中的 MSG)
    4. BIDX:存储于的 FIFO 的缓冲器索引(如果适用)。

    3) 3)这使应用程序能够深入了解匹配的 ID 和 FIFO 数据位置、以确定必要的程序逻辑更改。

    也可以使用具有位掩码过滤和 NDAT 寄存器的 RX 缓冲器。

    此致、

    Zackary Fleenor