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 和消息 RAM

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1512459/tms320f28p650dk-mcan-and-message-ram

器件型号:TMS320F28P650DK

工具/软件:

尊敬的 TI 支持团队:

我正在使用 TMS320F28P650DK9的 M-CAN 外设、有一个与标准消息 ID 过滤器和扩展消息 ID 过滤器的存储器分配相关的问题。

文档 SPRUIZ1B 指出 RAM 存储器分配为32位字地址、并且根据图示

图35-23、标准消息 ID 过滤器元素结构是32位宽

图35-24、扩展消息 ID 过滤器元素结构为64位宽。

 现在、我将介绍我的示例。

对于标准滤波器、我的设置是

   ST_stdFiltElem_0.sfid2 = 0x3FF;                       

   ST_stdFiltElem_0.sfid1 = 0x000;                       

   ST_stdFiltElem_0.sfec  = 0x5;    

   ST_stdFiltElem_0.sft   = 0x0;

 

对于扩展过滤器、设置为

   ST_extFiltElem_0.efid2 = 0x11223344;

   ST_extFiltElem_0.efid1 = 0x55667788;

   ST_extFiltElem_0.efec  = 0x1;

   ST_extFiltElem_0.eft   = 0x1;

 

如果我查看0x5 9000地址中的 RAM 存储器、就会看到这种内存

  • 为标准过滤器分配了两个32位字:请参阅红色方形
  • 为扩展过滤器分配了四个32位字:请参阅绿色方形

以下 drivelib 函数填充 RAM 存储器区域

 

MCAN_addStdMsgIDFilter (MCANA_DRIVER_BASE、0U、&st_stdFiltElem_0);

MCAN_addExtMsgIDFilter (MCANA_DRIVER_BASE、0U、&st_extFiltElem_0);

 

所以,我的问题是:根据 RAM 内存视图,它看起来有内存消耗, 或太多内存使用。

正确吗?

如果是、原因是什么?

此致、

Ettore

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

    尊敬的  Ettore:

    CAN (DCAN 和 MCAN)是一种字节可寻址外设、因为它们最初都设计用于连接 ARM 内核。 但 C28x CPU 本身就是一个16位处理器、这意味着28x CPU 生成的每个地址都指向一个存储16位的位置。 例如、闪存或 RAM 中的每个地址存储16位。 为了将字节可寻址模块连接到16位 CPU、设计了一个字节寻址桥接器。 您看到的结果由字节寻址桥导致。

    对此进行了进一步说明  28.2.2地址/数据总线桥接器   www.ti.com/lit/SPRUIW9第2817页。  该说明也适用于 MCAN 消息 RAM。

    28.2.2地址/数据总线桥接器

    CAN 模块使用特殊的寻址方案来支持字节访问。 建议只使用 HWREG_BP ()宏(使用_byte_peripheral_32 ()内在函数)对 CAN 寄存器进行32位访问。 如果要使用16位访问、则必须将低16位写入寄存器的地址、并且高16位必须写入寄存器的地址加2。 由于存在总线桥、CAN 模块寄存器空间通过 Code Composer StudioTm (CCS) IDE 存储器窗口的视图并不总是与实际寻址匹配。 当视图模式为32位或16位时、偶数地址会有效地重复;可以忽略奇数地址。 当视图模式为8位时、来自 CAN 模块内的偶数地址会复制到 CCS 存储器视图中的奇数地址中;不会显示模块中的奇数地址。