STM32 FSMC简介(一)

以下内容整理自《STM32中文参考手册》、正点原子《STM32F1开发指南--库函数版》、野火《零死角玩转STM32F103霸道V2》,仅为个人学习方便所整理

1.STM32控制器芯片内部有一定大小的SRAMFLASH作为内存和程序存储空间,但当程序较大,内存和程序空间不足时,就需要在STM32芯片的外部扩展存储器了,扩展内存时一般使用SRAMSDRAM 存储器。STM32F1系列的芯片不支持扩展SDRAM (STM32F429系列支持),它仅支持使用FSMC外设扩展SRAM,由于引脚数量的限制,只有STM32F103ZE 或以上型号的芯片才可以扩展外部SRAM

STM32芯片扩展内存与给PC扩展内存的原理是一样的,只是PC上一般以内存条的形式扩展,内存条实质是由多个内存颗粒(SDRAM芯片)组成的通用标准模块,而STM32直接与SRAM芯片连接。

STM32F1系列芯片使用FSMC外设来管理扩展的存储器,FSMCFlexible Static Memory Controller的缩写,译为灵活的静态存储控制器。它可以用于驱动包括SRAMNOR FLASH以及NAND FLSAH类型的存储器,不能驱动如 SDRAM这种动态的存储器。

2.FSMC功能:将AHB传输信号转换到适当的外部设备协议;满足访问外部设备的时序要求。

所有的外部存储器共享控制器输出的地址、数据和控制信号,每个外部设备可以通过一个唯一的片选信号加以区分。FSMC在任一时刻只访问一个外部设备。

3.FSMC包含四个主要模块:AHB接口(包含FSMC配置寄存器)NOR闪存和PSRAM控制器;NAND闪存和PC卡控制器;外部设备接口。FSMC框图如图1

                                        

                                                                                         图1 FSMC框图

3.1通讯引脚:在框图的右侧是FSMC外设相关的控制引脚,控制不同类型存储器的时候会有一些不同的引脚,其中地址线FSMC_A和数据线FSMC_D是所有控制器都共用的。NOR闪存和PSRAM接口的典型信号如表1~3,其中具有前缀“N”的信号表示低有效信号。

                                                                             表1 非复用信号的NOR闪存接口

                                                      

                                                                             表2复用信号的NOR闪存接口

                                      

 

                                                                          表3 非复用信号的PSRAM接口

                                       

 

3.2存储器控制器:上面不同类型的引脚是连接到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寄存器控制的参数类似,它专门用于控制写时序的时间参数。

3.3时钟控制逻辑FSMC外设挂载在AHB总线上,时钟信号来自于 HCLK (默认72MHz),控制器的同步时钟输出就是由它分频得到。

  • 6
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
STM32 FSMC(Flexible Static Memory Controller)是STM32系列微控制器中的一个外设,它允许STM32与各种静态存储器进行数据交换。FSMC可以通过引脚连SRAM、ROM、PSRAM、Nor Flash和Nand Flash等存储器。 在STM32F407或STM32F417系列芯片中,都带有FSMC口。 要配置FSMC,具体的步骤和特性如下所示: 1. 配置FSMC引脚:根据具体的STM32型号和外部存储器的类型,选择合适的引脚进行连,并将这些引脚设置为FSMC模式。 2. 配置FSMC控制器:设置FSMC控制器的控制寄存器来配置存储器类型、数据宽度、时序等参数。 3. 配置存储器:根据外部存储器的要求,设置相应的存储器控制寄存器来配置存储器的时序和操作模式。 4. 初始化FSMC:根据存储器的特性和需求,编写初始化函数来设置FSMC控制器和存储器的寄存器值,以确保正确的数据交换和访问。 FSMC的特点包括: - 灵活性:通过FSMCSTM32可以连多种静态存储器,包括SRAM、ROM、PSRAM、Nor Flash和Nand Flash等。 - 高速数据交换:FSMC支持高速数据交换,可以实现快速的存储器读写操作。 - 多种操作模式:FSMC支持多种操作模式,包括异步模式和同步模式,以适应不同的存储器需求。 - 强大的时序配置:FSMC可以根据存储器的要求,灵活配置时序参数,以实现最佳的数据传输性能。 总之,STM32 FSMC是一种强大的外设,可以实现STM32与各种静态存储器之间的数据交换。通过配置FSMC引脚和控制器,并初始化FSMC,可以实现高速、灵活的存储器访问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [STM32 FSMC/FMC原理保姆级讲解(一)](https://blog.csdn.net/as480133937/article/details/123740365)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [【STM32FSMC概述](https://blog.csdn.net/dengjin20104042056/article/details/108449814)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值