• 31. Flexible static memory controller (FSMC)


    31.1 FSMC main features

    FSMC块能够与同步和异步内存和16位PC存储卡。其主要目的是:

    • 将AHB事务转换为适当的外部设备协议
    • 满足外部设备的访问定时要求

    所有外部存储器与控制器共享地址、数据和控制信号。每个外部设备通过一个唯一的芯片选择来访问。FSMC一次只能访问一个外部设备。

    FSMC具有以下主要特点:

    • 静态内存映射设备接口,包括:
      • 静态随机存取存储器(SRAM)
      • NOR 闪存/OneNAND闪存
      • PSRAM(4个内存库)
    • 两个 NAND闪存库,带有ECC硬件,可以检查最多8千字节的数据
    • 16位PC卡兼容设备
    • 支持对同步设备的突发模式访问(NOR Flash和PSRAM)
    • 8位或16位宽的数据总线
    • 独立的芯片选择控制每个存储库
    • 每个内存库的独立配置
    • 可编程时序,以支持广泛的设备,特别是:
      • 可编程等待状态(最多15个)
      • 可编程总线转变周期(最多15个)
      • 可编程输出使能和写入使能延迟(最多15次)
      • 独立读写时序和协议,从而支持最广泛各种各样的内存和时序
    • 写使能和字节巷选择输出用于PSRAM和SRAM设备
    • 将32位宽的AHB事务传输转换为连续的16位或8位访问外部16位或8位设备
    • 一个写FIFO, 2个字长,每个字32位宽,只存储数据,不存储地址。因此,这个FIFO只缓冲AHB写突发事务。可以用它往慢速内存中写入从而快速释放AHB为其他操作。只有一次一个突发事件被缓冲:如果一个新的AHB突发事件或单个事务发生在操作正在进行中,FIFO已经排干。FSMC将插入等待状态,直到当前内存访问完成。
    • 外部异步等待控制

     定义外部设备类型和相关特征的FSMC寄存器通常是在启动时设置,直到下一次复位或开机时才更改。然而,它是可以随时更改设置。  

    31.2  Block diagram

    FSMC由四个主要模块组成:

    • AHB接口(包括FSMC配置寄存器)
    • NOR Flash/PSRAM控制器
    • NAND闪存/PC卡控制器
    • 外部设备接口

    框图如图397所示

     31.3 AHB接口

    AHB从接口允许内部cpu和其他总线主外围设备访问外部静态内存。

    AHB事务被转换为外部设备协议。如果所选外部内存为16或8位宽,AHB上32位宽的事务被拆分进入连续的16位或8位访问。FSMC芯片选择(FSMC_NEx)不会在连续的访问之间翻转,除非工作在模式D中启用扩展模式。

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

    • 读取或写入未启用的 FSMC bank时
    • 当 FSMC_BCRx 寄存器中 FACCEN 位复位时读写NOR闪存库。
    • 当输入管脚 FSMC_CD(卡存在检测)为低时,读写PC卡时。

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

    • 如果是 Cortex-M3 CPU,将产生硬中断故障
    • 如果是 DMA,则会生成一个DMA传输错误,并且相应的DMA通道自动禁用。

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

     31.3.1 支持的内存及事务

    一般事务规则

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

    • AHB事务数据和内存大小相等: 在这种情况下没有问题。
    • AHB事务数据大于内存大小:在这种情况下,FSMC将AHB事务分割成更小的连续内存访问以满足外部数据宽度。
    • AHB事务数据小于内存大小:异步传输是否一致取决于外部类型设备。
      • 具有字节选择功能的设备(SRAM,ROM,PSRAM)的异步访问:
        • FSMC 允许写事务通过它的字节通道 NBL[1:0] 访问正确的数据。
        • 允许读取事务。所有内存字节都是读的,无用的被丢弃的。NBL[1:0]在读取事务期间保持低位。

      • 异步访问没有字节选择功能的设备(NOR和NAND Flash 16位)。
        当请求对16位宽的闪存进行8位字节访问时,就会出现这种情况。显然,内存不能以字节模式访问设备(只能访问16位)因此:

        • 不允许写事务
        • 允许读事务所有的字节都是可读的,无用的字节被丢弃。NBL[1:0]在读取事务期间设置为0。

    31.4 外部设备地址映射

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

    • Bank 1  用于 地址多达4个NOR 闪存或PSRAM内存设备。该bank分为为4个 NOR/PSRAM 子bank与4个专用芯片的选择,如下:
      •  Bank 1 - NOR/PSRAM 1

      •  Bank 1 - NOR/PSRAM 2

      •  Bank 1 - NOR/PSRAM 3

      •  Bank 1 - NOR/PSRAM 4

    对于每个bank,要使用的内存类型是用户在配置寄存器中定义的。



       

      

  • 相关阅读:
    软件测试的策略是什么?
    软件产品质量特性是什么?
    软件质量保证体系是什么 国家标准中与质量保证管理相关的几个标准是什么?他们的编号和全称是什么?
    简述什么是静态测试、动态测试、黑盒测试、白盒测试、α测试 β测试
    mac上的GNU gcc报错:dyld: Library not loaded: /usr/local/opt/isl/lib/libisl.22.dylib的解决办法
    两行信息量大的shell代码
    mac上的less使用扩展正则表达式比如
    设置mac默认使用GNU工具,比如使用GNU cat而不是BSD cat
    macos 10.15/Catalina 用不了gdb
    vscode的coderunner插件介绍
  • 原文地址:https://www.cnblogs.com/qiyuexin/p/10409893.html
Copyright © 2020-2023  润新知