STM32 FSMC (Flexible static memory controller) 灵活静态内存控制器介绍

这篇具有很好参考价值的文章主要介绍了STM32 FSMC (Flexible static memory controller) 灵活静态内存控制器介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 介绍FSMC

说到STM32的FSMC(Flexible Static Memory Controller),这个玩意儿可真是STM32家族的“多面手”。想象一下,如果STM32是个热衷于DIY的工程师,那FSMC就是他的瑞士军刀,无论是连接SRAM、PSRAM、NOR/NAND Flash还是LCD模块,FSMC都能应对自如,简直就是连接外部存储和记忆界的“桥梁”。

FSMC的灵活性主要体现在它支持多种存储器类型和访问模式,这就像是它可以说多国语言,无论你来自哪个存储器国家,它都能和你愉快地交流。而且,FSMC能够让STM32以最高效的方式访问这些外部设备,这就像是它拥有VIP通道,能够迅速通过安检进入存储器的心脏区域。

具体来说,FSMC能让你配置各种访问参数,比如数据宽度(可以是8位或16位),存储器类型(SRAM、NOR Flash等),还有访问模式(直接模式、间接模式)。这就像是你在玩一个高级定制的游戏,你可以根据外设的特性和你的需求,调整FSMC的设置,以达到最优的访问速度和性能。

不过,FSMC也有它的复杂性,配置起来就像是在玩一个需要高度策略的游戏,每个选项都需要精心考虑。你得了解你的外部设备,知道它的语言和习惯,然后通过FSMC的配置,来告诉STM32如何与之有效交流。这就需要你深入阅读数据手册,可能还要做一些试验,来找到最佳配置。

总之,FSMC就像是STM32的“通讯专家”,能够让STM32轻松地扩展存储和连接各种外设。但要想完全驾驭它,你可能需要像学习外语一样,花一些时间和精力来深入了解它。别担心,一旦你熟悉了FSMC,你就能打开一个全新的可能性世界,让你的STM32项目更加强大和灵活!

2. FSMC特点

FSMC模块能够与同步和异步存储器以及16位PC内存卡进行接口。其主要目的是:将AHB事务转换为适当的外部设备协议,满足外部设备的访问时序要求。所有外部存储器与控制器共享地址、数据和控制信号。每个外部设备通过唯一的芯片选择来访问。FSMC一次只对一个外部设备进行访问。

FSMC具有以下主要特点:

  • 与静态内存映射设备接口,包括:
    • 静态随机访问存储器(SRAM)
    • NOR Flash 存储器/OneNAND Flash 存储器
    • PSRAM(4个内存Bank)
  • 具有ECC硬件检查最多8 K字节数据的两个 NAND Flash 存储区
  • 支持16位 PC 卡兼容设备
  • 支持对同步设备(NOR Flash 和 PSRAM)进行突发模式访问
  • 8位或16位宽数据总线
  • 每个内存Bank独立芯片选择控制
  • 每个内存Bank独立配置
  • 可编程定时以支持各种不同类型的设备,特别是:
    • 可编程等待状态(最多15个)
    • 可编程总线回转周期数(最多15个)
    • 可编程输出使能和写使能延迟时间(最多15个)
    • 独立读取和写入时序和协议,以支持各种记忆体和时序变化。
  • 用于PSRAM 和 SRAM 设备的写使能和字节通道选择输出。
  • 将32位宽 AHB 事务转换为连续16位或8位对外部16位或8位装置进行访问。
  • A Write FIFO,长度为2字(STM32F42x and STM32F43x长度为16字),每一个词都是32比特宽,仅仅保存了数据而没有地址.因此这样可以缓冲AHB 写突发事务. 这样就可以向慢速度记忆体中写入并且迅速释放AHB用于其他操作.只有一个突发同时被缓冲:如果新出现了一个AHB 突发或者单次传输在之前
  • 外部异步等待控制

定义外部设备类型和相关特性的FSMC寄存器通常在启动时设置,并且在下一次复位或上电之前不会改变。然而,可以随时更改这些设置。

3. Block示意图

FSMC由四个主要模块组成:

  • AHB接口(包括FSMC配置寄存器)

  • NOR Flash/PSRAM控制器

  • NAND Flash/PC卡控制器

  • 外部设备接口。

图434显示了该模块的框图。

stm32 fsmc,STM32 CubeMX实战,芯片概念,stm32,嵌入式硬件,单片机

4. AHB接口

AHB从设备接口使得内部CPU和其他总线主设备能够访问外部静态存储器。AHB事务被转换为外部设备协议。特别地,如果选择的外部存储器是16位或8位宽度,则在AHB上的32位宽度事务会被分割成连续的16位或8位访问。FSMC芯片选择(FSMC_NEx)在执行带有扩展模式的D模式下除了进行连续访问时不会切换。

FSMC在以下情况下生成AHB错误:

  • 当读取或写入未启用的FSMC存储器时
  • 当在FSMC_BCRx寄存器中FACCEN位被复位时,读取或写入NOR Flash存储器
  • 当输入引脚FSMC_CD(卡片存在检测)为低电平时,读取或写入PC卡存储器

这个AHB错误的影响取决于尝试进行读写访问的AHB主设备:

  • 如果是带有FPU的Cortex®-M4 CPU,将会生成一个硬件故障中断。

  • 如果是DMA,则会产生DMA传输错误,并自动禁用相应的DMA通道。

AHB时钟(HCLK)是FSMC的参考时钟。

4.1 Supported memories and transactions

General transaction rules

所请求的AHB事务数据大小可以是8位、16位或32位,而访问的外部设备具有固定的数据宽度。这可能导致传输不一致。因此,必须遵循一些简单的事务规则:

  • AHB事务大小和内存数据大小相等时,在这种情况下没有问题。

  • AHB事务大小大于内存大小时,在这种情况下,FSMC将AHB事务分割成较小的连续内存访问,以满足外部数据宽度。

  • AHB事务大小小于内存大小时,异步传输可能与外部设备类型有关

    • 对于具有字节选择功能(SRAM、ROM、PSRAM)的设备进行异步访问。

      • FSMC通过其字节通道NBL[1:0]允许写入操作来访问正确的数据。
      • 允许读取操作。读取所有内存字节并丢弃无用字节。在读取操作期间保持NBL[1:0]低电平。
    • 对于没有字节选择功能(NOR和NAND Flash 16位)的设备进行异步访问。
      当请求对16位宽Flash存储器进行字节访问时会出现这种情况。显然,不能以字节模式访问该设备(只能从/向Flash存储器读取/写入16位词),因此:

    • 不允许写入操作

    • 允许读取操作。读取所有内存字节并丢弃无用字节。在读取操作期间将NBL[1:0]设置为0.

Configuration registers

FSMC可以通过寄存器集进行配置。详细描述了NOR Flash/PSRAM控制寄存器的内容,请参见第36.5.6节。详细描述了NAND Flash/PC卡寄存器的内容,请参见第36.6.8节。

5. 外部设备地址映射

从FSMC的角度来看,外部存储器被分为4个固定大小的256兆字节的Bank(参见图435):

  • Bank1用于寻址最多4个NOR Flash或PSRAM存储器设备。该Bank被分成4个NOR/PSRAM子Bank,每个子Bank有4个专用芯片选择信号,如下所示:

    • Bank1 - NOR/PSRAM 1

    • Bank1 - NOR/PSRAM 2

    • Bank1 - NOR/PSRAM 3

    • Bank1 - NOR/PSRAM 4

  • Bank2和3用于寻址NAND Flash设备(每个Bank一个设备)

  • Bank4用于寻址PC卡设备

对于每个Bank,要使用的存储器类型由配置寄存器中用户定义。

stm32 fsmc,STM32 CubeMX实战,芯片概念,stm32,嵌入式硬件,单片机

5.1 NOR/PSRAM地址映射

HADDR[27:26]位用于根据表216中的显示选择四个内存Bank之一。

stm32 fsmc,STM32 CubeMX实战,芯片概念,stm32,嵌入式硬件,单片机

HADDR[25:0]包含外部存储器的地址。由于HADDR是字节地址,而存储器是按字寻址的,根据存储器数据宽度,实际发给存储器的地址会有所变化,如下表所示。

stm32 fsmc,STM32 CubeMX实战,芯片概念,stm32,嵌入式硬件,单片机

将NOR Flash/PSRAM的支持进行封装

不支持同步存储器的Wrap burst模式。必须将存储器配置为未定义长度的linear burst模式。

5.2 NAND/PC Card地址映射

在这种情况下,有三家Bank可供选择,每个Bank都被划分为表218中所示的内存空间。

stm32 fsmc,STM32 CubeMX实战,芯片概念,stm32,嵌入式硬件,单片机

对于NAND Flash存储器,常见和属性内存空间被细分为三个部分(见下表219)位于较低的256 K字节中:

  • 数据部分(在常见/属性内存空间中的前64 K字节)
  • 命令部分(在常见/属性内存空间中的第二个64 K字节)
  • 地址部分(在常见/属性内存空间中接下来的128 K字节)

stm32 fsmc,STM32 CubeMX实战,芯片概念,stm32,嵌入式硬件,单片机

应用软件使用3个部分来访问NAND Flash存储器:

  • 发送命令到NAND Flash存储器:软件必须将命令值写入命令部分的任何内存位置。
  • 指定要读取或写入的NAND Flash地址:软件必须将地址值写入地址部分的任何内存位置。由于地址可能是4或5字节长(取决于实际内存大小),需要连续多次写入地址部分以指定完整的地址。
  • 读取或写入数据:软件从数据部分的任何内存位置读取或写入数据值。

由于NAND Flash存储器自动递增地址,因此无需递增数据部分的地址以访问连续的内存位置。文章来源地址https://www.toymoban.com/news/detail-833609.html

到了这里,关于STM32 FSMC (Flexible static memory controller) 灵活静态内存控制器介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【STM32】FSMC接口的复用和非复用

    在阅读《零死角玩转STM32—F103指南者》,以及《STM32F10x-中文参考手册》关于FSMC一章节的时候,对于在控制 NOR/SRAM 的时候使用到的引脚,在提到NOR器件的时候提到了地址复用和非复用接口,一时间没明白是什么东西。 非复用模式 :16位数据线及26位地址线分开始用。推荐在14

    2024年02月09日
    浏览(41)
  • FPGA与STM32_FSMC总线通信实验

    FSMC是STM32系列采用的一种新型存储器扩展技术。在外部存储器扩展方面具有独特的优势,可根据系统的应用需要,方便进行不 同类型大容量静态存储器的扩展。 FSMC的特点: (1)支持不同位宽的异步读写操作。 (2)不同的BANK在映射地址空间中是独立的,可用于扩展不同的

    2024年02月05日
    浏览(43)
  • 【STM32】FSMC—扩展外部 SRAM 初步使用 1

    基于野火指南者《零死角玩转 STM32F103—指南者》的学习 STM32F103系列 1.详细功能参看《STM32F10x参考手册》,这边是概述 是一个外设,挂载在AHB总线下。 可以用于驱动包括 SRAM 、 NOR FLASH 以及 NAND FLSAH 类型的存储器,不能驱动如 SDRAM 这种动态的存储器 STM32F429 系列的控制器中,

    2024年02月20日
    浏览(40)
  • STM32复习笔记(五):FSMC连接外部SRAM

    目录 Preface: (一)原理相关 (二)CUBEMX配置 (三)轮询方式读写 (四)DMA方式读写 STM32F4有一个FSMC(Flexible Static Memory Controller,可变静态存储控制器),可以用来驱动8080接口的TFT LCD,我之前就写过一篇blog,是用FSMC来驱动4.3寸液晶屏;此外,还可以用FSMC来连接外部的各

    2024年02月03日
    浏览(45)
  • Rust - 接口设计建议之灵活(flexible)

    你写的代码包含契约 契约: 要求:代码使用的限制 承诺:代码使用的保证 设计接口时(经验法则): 避免施加不必要的限制,只做能够兑现的承诺 增加限制 或 取消承诺: 重大的语义版本更改 可导致其他代码出问题 放宽限制 或 提供额外的承诺: 通常是向后兼容的 Rus

    2024年02月08日
    浏览(39)
  • LCD—STM32液晶显示(2.使用FSMC模拟8080时序)

    目录 使用STM32的FSMC模拟8080接口时序 FSMC简介 FSMC NOR/PSRAM中的模式B时序图 用FSMC模拟8080时序 重点:HADDR内部地址与FSMC地址信号线的转换(实现地址对齐)         ILI9341的8080通讯接口时序可以由STM32使用普通I/O接口进行模拟,但这样效率太低,STM32提供了一种特别的控制方

    2024年02月17日
    浏览(47)
  • STM32 FSMC接口驱动4.3寸TFT LCD屏

    STM32的FSMC接口是并行总线接口,可以用于驱动存储芯片如FLASH/SRAM等,也可以用于驱动并口LCD屏。 这里以STM32F103VET6开发板连接4.3寸TFT LCD屏,将正点原子的参考代码,移植到STM32CUBEIDE开发环境,实现TFT LCD屏的显示。 TFT LCD模块的管脚连接: 其中: LCD_CS是总线片选, WR/CLK是写使

    2024年02月10日
    浏览(49)
  • STM32CubeMX教程23 FSMC - IS62WV51216(SRAM)驱动

    开发板(正点原子stm32f407探索者开发板V2.4) STM32CubeMX软件(Version 6.10.0) 野火DAP仿真器 keil µVision5 IDE(MDK-Arm) ST-LINK/V2驱动 XCOM V2.6串口助手 使用STM32CubeMX软件配置STM32F407开发板的 FSMC实现以轮询或DMA的方式读写IS62WV51216(SRAM)芯片 关于FSMC的内容读者可阅读“STM32CubeMX教程

    2024年01月24日
    浏览(46)
  • STM32CubeMX教程22 FSMC - 8080并行接口TFT-LCD驱动

    开发板(正点原子stm32f407探索者开发板V2.4) STM32CubeMX软件(Version 6.10.0) 野火DAP仿真器 keil µVision5 IDE(MDK-Arm) ST-LINK/V2驱动 XCOM V2.6串口助手 使用STM32CubeMX软件配置STM32F407开发板 FSMC接口驱动8080并行接口TFT-LCD显示 ,具体为使用FSMC Bank 1-NOR/PSRAM4,片选信号为NE4(PG12),TFT-L

    2024年01月23日
    浏览(52)
  • 基于STM32F103ZET6使用STM32CubeMX配置FSMC模块驱动LCD屏(基于正点原子历程)

    在学习STM32的过程中,刚好学到了LCD屏,我使用的是STM32F103ZET6,屏幕是正点原子的。但是在我自己新建工程点亮显示LCD屏时遇到了很多问题。解决之后分享在此,希望能帮助到遇到此困惑的朋友。 想要快速驱动LCD屏请直接跳转到CubeMX配置 FSMC全名叫可变静态存储控制器(Fle

    2024年02月15日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包