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-A 和存储器分配

Guru**** 2457760 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1507977/tms320f28p650dk-mcan-a-and-memory-allocation

器件型号:TMS320F28P650DK

工具/软件:

尊敬的 TI 支持团队:

我有一个有关 MCan 外设的"消息 RAM"的问题、我将参考文档 SPRUIZ1B 和 SPRSP69C。

根据  SPRUIZ1B 的第35章、消息 RAM 的总体大小为4352个字、字大小为32位。

查看下面的快照、您可以找到我的存储器大小计算结果、总大小与可通过 SPRUIZ1B 的图35-19计算得出的存储器大小相匹配。

根据 MCAN-A MSGRAM 一节的内存映射、请参阅 SPRSP69C 表7-1、可用内存为4K x 16或2K 字或2048字。

根据"总字4352"和"可用内存2048字"之间的比较、我的结论是:  SPRUIZ1B 的图35-19建议的内存分配是不可行的。

在第35.5.13.1段中、"执行下列行动之一"一语

是使用 MCan 模块的所有64条消息的关键。

例如、使用:

  • 扩展标识符  
  • 存储在 FIFO 0上的已接受消息

总字为1920、如以下快照所示。

我的推理是正确的吗?

我还有一个问题:鉴于地址为0x5 B000的名为"MCAN-B MSGRAM"的存储器、正在讨论的存储器是否可以由 MCAN-A 寻址?

感谢您的支持、

Ettore

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

    您好、Ettore、

    1)下图摘自 Bosch MCAN 用户手册(修订版3.3.1)。

    请注意第二个注释:

    在 CAN FD 模式下运行时、所需的消息 RAM 大小在很大程度上取决于通过 RXESC.F0DS、RXESC.F1DS、RXESC.RBDS 和 TXESC.TBDS 为 Rx FIFO0、Rx FIFO1、Rx 缓冲器和 Tx 缓冲器配置的元素大小。

     "字"的总数取决于为其指定的配置寄存器/位字段中的给定段类型(Filter11/29、RX FIFO[0:1]/缓冲器、TX 事件 FIFO/缓冲器)定义的元素数量。 每个段支持最大元素数量、因此字数上限、如果所有段都用了最大元素数量和最大字大小、则可以实现消息 RAM 中配置的最多4352个字。

    2)不可以、每个 MSGRAM 只能由其关联的 MCAN 外设访问: MCAN-A:MCAN-A MSGRAM 和 MCAN-B:MCAN-B MSGRAM。 但是、CPU 可以直接或通过消息接口寄存器访问 MCAN-[A:B] MSGRAM 空间。 请参阅以下从器件 TRM 中摘录:

    在正常操作期间、使用接口寄存器组执行对消息 RAM 的访问、CPU 无法直接访问消息 RAM。

    接口寄存器设置 IF1和 IF2提供从 CPU 到消息 RAM 的间接读取/写入访问。 IF1和 IF2寄存器组可以缓冲控制和要在消息对象之间传输的用户数据。

    第三个接口寄存器组 IF3可配置为在接收到 CAN 消息后消息对象已更新时自动从消息 RAM 接收控制和用户数据。 CPU 不需要启动从消息 RAM 到 IF3寄存器组的传输。

    消息处理程序可避免并发访问消息 RAM 和 CAN 帧接收/发送之间的潜在冲突。

    只能在调试模式下访问消息 RAM。 消息 RAM 基地址比 CAN 外设的基地址高0x1000。

    希望这有助于解决任何困惑、并乐于帮助回答可能出现的任何后续问题。

    此致、

    Zackary Fleenor