ST意法半导体
直播中

fdvcxhtg

9年用户 1106经验值
擅长:嵌入式技术
私信 关注
[问答]

STM32C092如果不使用CAN,内存可不可以拿出来用?

最近在看STM32C091与STM32C092,因为多出了FDCAN,所以少了6K的内存,如果不使用FDCAN,那这块内存是否可以拿出来用。

回帖(1)

h1654155275.5741

2025-4-27 17:15:52

在STM32C0系列中,STM32C092相比STM32C091多出的FDCAN外设确实会导致内存配置差异。以下是关键分析:




  1. SRAM容量差异

    根据ST的数据手册,STM32C091和C092的SRAM总容量是相同的(例如均为24KB)。但STM32C092的FDCAN模块需要固定保留一部分SRAM作为消息缓冲区(Message RAM),这部分内存的地址在硬件设计中被隔离,默认分配给FDCAN使用。因此,即使用户不启用FDCAN功能,这6KB的SRAM在物理上仍然存在,但需要通过软件配置才能释放为通用内存




  2. 如何释放FDCAN占用的SRAM  



    • FDCAN的Message RAM通常通过寄存器配置其起始地址和大小。如果用户不初始化FDCAN或将其消息缓冲区大小设为0,则这部分内存不会被占用,可被应用程序直接访问。  

    • 例如,在代码中不调用HAL_FDCAN_Init()或类似初始化函数,同时确保FDCAN相关的中断和时钟被禁用,即可避免SRAM保留。




  3. 验证方法  



    • 查看芯片参考手册中FDCAN章节的“Message RAM Allocation”部分,确认是否需要显式配置缓冲区。  

    • 通过链接脚本(Linker Script)调整内存分配,将FDCAN保留区域的地址纳入通用SRAM范围,确保编译器能利用该区域。




结论

若不使用FDCAN,STM32C092中被保留的6KB SRAM可通过软件配置释放为通用内存。但需注意以下两点:  



  • 确保FDCAN相关初始化代码被完全禁用。  

  • 在工程配置中(如链接脚本)明确包含FDCAN保留区的地址,避免内存冲突。


建议用户参考具体型号的参考手册,验证FDCAN消息缓冲区的配置方式,以充分利用可用内存。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分