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,要使用的内存类型是用户在配置寄存器中定义的。

这个银行是

  

  

31. Flexible static memory controller (FSMC)的更多相关文章

  1. STM32F103X datasheet学习笔记---Flexible static memory controller (FSMC)

    1.前言 FSMC模块能够与同步或异步存储器和16位PC存储器卡接口,它的主要作用是: 将AHB传输信号转换到适当的外部设备协议 满足访问外部设备的时序要求 所有的外部存储器共享控制器输出的地址.数据 ...

  2. Java知多少(31)static关键字以及Java静态变量和静态方法

    static 修饰符能够与变量.方法一起使用,表示是“静态”的. 静态变量和静态方法能够通过类名来访问,不需要创建一个类的对象来访问该类的静态成员,所以static修饰的成员又称作类变量和类方法.静态 ...

  3. Memory Controller

    1.S3C6410 地址空间 For memory at the table details 2. SDRAM图解 3. SDRAM 芯片容量计算: L_BANK 数目 * 一个 L_BANK 中的单 ...

  4. 19.2 MEMORY CONTROLLER

    在存储控制器的BANKCONTROLREGISTER(BANKCONn: GCS6-nGCS7)表中:中文翻译各个寄存器的位出现错误: 原文中正确的表述见下图:

  5. FSMC(STM32)

    (一)FSMC:Flexible Static Memory Controller,可变(灵活)静态存储控制器 小容量产品是指闪存存储器容量在1 6K至32K 字节之间的STM32F101xx.STM ...

  6. stm32f10x.h文件分析理解

    今天再看过半年前自己写的这篇发现自己当时理解有误,stm32f10x.h与库开发并未存在太大关系,只是一个最为重要的寄存器地址到寄存器结构体变量的映射. stm32f10x.h 这个头文件是STM32 ...

  7. 嵌入式单片机STM32应用技术(课本)

    目录SAIU R20 1 6 第1页第1 章. 初识STM32..................................................................... ...

  8. 第26章 FMC—扩展外部SDRAM

    本章参考资料:<STM32F76xxx参考手册2>.<STM32F7xx规格书>.库帮助文档<STM32F779xx_User_Manual.chm>. 关于SDR ...

  9. 第26章 FMC—扩展外部SDRAM—零死角玩转STM32-F429系列

    第26章     FMC—扩展外部SDRAM 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...

随机推荐

  1. 异步编程与scrapy

    https://python-parallel-programmning-cookbook.readthedocs.io/zh_CN/latest/chapter1/index.html https: ...

  2. Oracle 用户概念与基本操作

    目录 目录 Oracle的用户 通过系统用户来登陆SQLPlus system和sys的区别 查看登陆的用户 启用和锁定一个用户 启用用户 锁定用户 创建用户 修改用户 删除用户 角色权限 常用的用户 ...

  3. asp.net 随笔

    20190625 网站发布后,添加文件,必须重启iis的应用程序池和网站才能使用添加的文件.

  4. Mysql create constraint foreign key faild.trouble shooting method share

    mysql> create table tb_test (id int(10) not null auto_increment primary key,action_id int(10) not ...

  5. HDU 3746 Cyclic Nacklace (KMP找循环节)

    题目链接:HDU 3746 Sample Input 3 aaa abca abcde Sample Output 0 2 5 Author possessor WC Source HDU 3rd & ...

  6. java8 Date LocalDate LocaDateTime 互相转化

    java 8中 java.util.Date 类新增了两个方法,分别是from(Instant instant)和toInstant()方法 // Obtains an instance of Dat ...

  7. 元类,sqlalchemy查询

    import sqlalchemy from sqlalchemy.ext.declarative import declarative_base #创建连接实例 db = sqlalchemy.cr ...

  8. 纯css设置元素过渡效果

    1.首先,先设置一个div,待会我们使用css3给这个div设置过渡效果. 2.然后给div设置宽高和背景,这里我就设置成200像素,深粉色. 3.接着开始设置transition属性,通过这个属性就 ...

  9. python获取沪股通、深股通、港股通每日资金流向数据

    接口:moneyflow_hsgt 描述:获取沪股通.深股通.港股通每日资金流向数据,每次最多返回300条记录,总量不限制. 注:tushare模块下载和安装教程,请查阅我之前的文章 输入参数 名称  ...

  10. LLppdd's class meeting!

    LLppdd's class meeting! Time Limit: 1 s Memory Limit: 256 MB 题目背景 LLppdd 有一个可爱团结的班级,他们会定期举行班会活动...比如 ...