FMC与FSMC
MC和FSMC都是STM32微控制器中用于连接外部存储器的控制器,但FMC是FSMC的增强和扩展版本。
简单来说:FMC是FSMC的“超级集合”,功能更强大,支持的设备类型更广泛。
核心关系:演进与发展
FSMC (Flexible Static Memory Controller): 出现在较早的STM32产品中,特别是基于Cortex-M3内核的系列(如STM32F1系列)。
FMC (Flexible Memory Controller): 出现在更现代、性能更强的STM32产品中,主要是基于Cortex-M4、Cortex-M7等内核的系列(如STM32F4、STM32F7、STM32H7系列)。它继承了FSMC的所有功能,并增加了新的功能。
可以理解为:FMC = FSMC + 额外功能。
详细对比表
特性 FSMC (Flexible Static Memory Controller) FMC (Flexible Memory Controller) 支持的存储器类型 相对有限 非常丰富 • SRAM / PSRAM
• NOR Flash
• PSRAM / Cellular RAM
• 16位宽度的NAND Flash(部分型号)• 包含FSMC所有支持的类型
• SDRAM (这是最关键的区别)
• 更完善的NAND Flash支持
• 并行LCD接口(8080/6800模式)数据总线宽度 主要支持 8位 / 16位 支持 8位 / 16位 / 32位 (对32位宽度的NOR Flash和SDRAM支持更好) 存储块(Bank) 4个存储块(Bank1-4),通常:
• Bank1-2: NOR/PSRAM/SRAM
• Bank3-4: NAND/PC Card最多6个存储块(Bank1-6),分配更灵活:
• Bank1-2: NOR/PSRAM/SRAM
• Bank3: NAND Flash
• Bank4: PC Card
• Bank5-6: SDRAM (专属Bank)时钟与性能 时钟频率较低,与AHB总线时钟相关。 时钟频率更高,尤其是在高性能系列(如H7)上,可以支持SDRAM的高达100MHz+的时钟。 地址映射 将外部存储器映射到固定的4个256MB的地址空间。 地址映射方式类似,但因支持SDRAM,地址空间管理更复杂。 典型应用系列 STM32F1xx系列(如F103ZE)
STM32L1xx系列STM32F2xx, F4xx, F7xx, H7xx系列
最关键的区别:对SDRAM的支持
这是FMC相对于FSMC最革命性的升级。
FSMC:不支持SDRAM。你无法使用FSMC直接连接常见的SDRAM芯片(如W9825G6KH、IS42S16400J等)。这在需要大容量、低成本RAM的应用(如图形显示缓冲、音频数据处理)中是一个巨大的限制。
FMC:原生支持SDRAM。它提供了专用的SDRAM控制器(包括SDRAM时钟、行列地址、刷新控制等所有必要信号),可以轻松连接16位或32位宽度的SDRAM芯片,极大地扩展了STM32的内存能力。