硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3359|回复: 0
收起左侧

[CAN/FDCAN] STM32H7的CAN FD外设自带RAM空间分配

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2021-3-17 09:02:57 | 显示全部楼层 |阅读模式

CAN FD必须配置每条消息的字节数,以确定每条消息所需的内存大小。 CAN-FD上有效负载的增加可以更有效的将内存都利用起来,并允许更多消息要存储在分配的存储空间中。

总的专用RAM大小是2560个32bit数据。

(1)过滤区(11bit过滤和29bit过滤)
(2)接收区(Rx FIFO 0,Rx FIFO 1和Rx Buffer)
(3)发送区(Tx event FIFO,Tx Buffers)
(4)触发空间(Trigger memory)



FDCAN外设的所有部分都可以由用户配置。 所有部分的所有元素之和必须不能超过CAN消息RAM的总大小。 该RAM通过以下方式提高了灵活性和性能:从而有可能消除未使用的部分,并为其他部分扩展足够的内存。在CAN消息中以动态且连续的方式分配每个部分(按照上图顺序); 但是为了避免超出RAM的风险并且出于可靠性的原因,没有将特定的开始和结束地址分配给每个部分。

FDCAN外设可以配置三种传输机制:Tx buffer ,Tx queue 和 Tx FIFO并可以通过Rx buffer 和 Rx FIFO 接收。 它们配置有起始地址偏移量和要存储的存储元素。 起始地址是在配置中预定义的(0到2560),用户必须确保每个内存空间中的元素数量不会导致它们重叠。

注:消息的接收和发送意味着在RAM级别存储“元素”。 这个“元素”仅包含标识符,DLC,控制位(ESI,XTD,RTR,BRS,FDF),数据字段和特定的发送/接收位字段进行控制。 CAN消息的其余位会自动由硬件处理而不保存在RAM中 。

用于控制接收的特定位字段是滤波器索引,可接受的不匹配帧和Rx时间戳。用于传输的特定位字段是消息标记(message marker)和event FIFO控制位。无论Tx buffer, Tx FIFO, Tx queue 或 Rx buffer 中的每个元素分配的32bit的数量是多少,要计算保留:

(1)标头信息(两个保留的32bit),用于分配标识符,DLC字段,控制位和特定的发送/接收位字段。
(2)数据(足够的32bit数据个数)以包含每个数据字段的字节数。

下面的公式确定为每个元素分配的32bit的数量:
元素大小(以字为单位)=标头信息(2个字)+数据(数据字段/ 4)

其中数据字段是每条消息的数据字节数

如果数据字段的范围是0到8,则每个元素为数据分配2个字。下表详细介绍了必要的“元素”大小,具体取决于数据字段范围



有效使用CAN消息RAM的示例。 这个例子假设配置了FDCAN外设的应用程序:

(1)发送带有专用Tx buffer的32条消息(每个消息在数据字段中包含8个字节)。
(2)具有128个11位过滤器,用于接收消息。
(3)接收64条消息,其中每个消息在专用Rx buffers的数据字段中包含64个字节。
(4)接收64条消息,其中每个消息在Rx FIFO 0的数据字段中包含64个字节。



在此示例中,RAM中的分配按以下顺序进行:
(1)在ID-11位部分分配128个字。
(2)保留1152个字用于接收Rx FIFO 0部分中的元素。
(3)保留1152个字,用于接收Rx缓冲区中的元素。
(4)为发送缓冲区中发送的元素保留128个字。

由于采用了动态分配,并且不对未使用的段进行任何分配,因此整个内存大小有效利用了RAM:在此应用程序中分配了所有2560个字。

注意:配置后,分配的地址范围初始化为零

大多数STM32设备支持一个以上的FDCAN外设来满足所有应用程序要求。在这种情况下,重要的是要说RAM是在不同外设之间共享的。 用户可以划分各种外设上的RAM(每个外设的大小通过指示其起始偏移地址来选择)。下图显示了使用多个FDCAN实例的CAN消息RAM的示例。 这该示例假定用户将CAN消息RAM分为两个外设:第一个外设的大小为第二个外设的两倍。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-16 08:06 , Processed in 0.216350 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表