
本文共 1217 字,大约阅读时间需要 4 分钟。
以下内容整理自《STM32中文参考手册》、正点原子《STM32F1开发指南--库函数版》、野火《零死角玩转STM32F103霸道V2》,仅为个人学习方便所整理:
STM32控制器芯片内部配备一定大小的SRAM及FLASH作为内存和程序存储空间。当程序规模较大而内存和程序空间不足时,就需要在STM32芯片的外部扩展存储器。扩展内存通常采用SRAM和SDRAM存储器。需要注意的是,STM32F1系列芯片不支持扩展SDRAM(STM32F429系列则支持),它仅能通过FSMC外设扩展SRAM。由于引脚数量的限制,只有STM32F103ZE或以上型号的芯片才能支持外部SRAM扩展。
给STM32芯片扩展内存与给PC扩展内存的原理是一致的,但PC上扩展内存通常采用内存条形式,而内存条实际上是由多个内存颗粒(即SDRAM芯片)组成的通用标准模块。而STM32直接与SRAM芯片连接。
STM32F1系列芯片通过FSMC外设来管理扩展存储器。FSMC是Flexible Static Memory Controller的缩写,译为灵活的静态存储控制器。它可以驱动包括SRAM、NOR FLASH和NAND FLASH类型的存储器,但不能驱动SDRAM这种动态存储器。
FSMC的主要功能是将AHB传输信号转换为适当的外部设备协议,并满足访问外部设备的时序要求。所有外部存储器共享控制器输出的地址、数据和控制信号,每个外部设备通过片选信号加以区分。FSMC在任一时刻只访问一个外部设备。
FSMC包含四个主要模块:AHB接口(包含FSMC配置寄存器);NOR闪存和PSRAM控制器;NAND闪存和PC卡控制器;以及外部设备接口。FSMC框图如图1所示。
FSMC的控制引脚位于框图右侧。地址线FSMC_A和数据线FSMC_D是所有控制器共用的。NOR闪存和PSRAM接口的典型信号如表1~3所示,其中具有前缀“N” 的信号表示低有效信号。
FSMC存储器控制器部分需要注意的是,NOR/PSRAM/SRAM设备使用相同的控制器,而NAND/PC卡设备使用相同的控制器,不同的控制器有专用的寄存器用于配置其工作模式。具体来说,控制SRAM的有FSMC_BCR1/2/3/4控制寄存器、FSMC_BTR1/2/3/4片选时序寄存器以及FSMC_BWTR1/2/3/4写时序寄存器。每种寄存器都有4个,分别对应于4个不同的存储区域。FSMC_BCR控制寄存器用于配置存储器类型、数据线宽度及信号有效极性能参数。FSMC_BTR时序寄存器用于配置SRAM访问的时间延迟,如数据保持时间、地址保持时间等。FSMC_BWTR写时序寄存器与FMC_BTR寄存器控制的参数类似,用于控制写时序的时间参数。
FSMC的时钟控制逻辑部分需要注意的是,FSMC外设挂载在AHB总线上,时钟信号来自于HCLK(默认72MHz),控制器的同步时钟输出即由它分频得到。
发表评论
最新留言
关于作者
