XFMC是什么?XFMC中文名称为扩展存储控制器接口,是MCU单片机外扩功能的一个重要接口。
XFMC 功能描述
扩展存储器接口(XFMC)用来访问各种片外存储器,可根据应用需要,方便地进行不同类型大容量静态存储器的扩展,能够在不增加外部接口的情况下同时扩展多种不同类型的静态存储器。所有的外部存储器共享 XFMC 控制器输出的地址、数据和控制信号,XFMC 通过一个唯一的片选信号来区分不同的外部设备。XFMC 在任一时刻只能访问一个外部设备。它的主要作用是:
将内核发送到 AHB 总线上的访问信号,转换为符合外部存储设备通信规则的信号,送到外部存储设备的相应管脚。
进行信号宽度和时序的调整,满足访问外部设备的时序要求
XFMC 具有下列主要功能:
支持外扩以下器件:
SRAM
PSRAM
ROM
NOR Flash
NAND Flash(SLC)
LCD(8080/6888)
支持两个 NAND 闪存块,硬件 1bit-ECC 可检测多达 8K 字节数据
支持对同步器件的成组(Burst)访问模式,如 NOR 闪存和 PSRAM
8 或 16 位数据总线
每一个存储器块都有独立的片选控制
通过时序编程可以支持各种不同的器件
根据外部存储器的数据宽度,将 32 位的 AHB 访问请求,自动转换为连续的 16 位或 8 位,实现和外部16 位或 8 位存储器件的通信将 32 位的 AHB 访问请求,转换到连续的 16 位或 8 位的,对外部 16 位或8 位器件的访问
PSRAM 和 SRAM 器件支持写使能和字节选择输出通常在系统复位或上电时,应该设置好所有配置外部存储器类型和特性的 XFMC 寄存器,以保证上电或者
复位后系统能够正常运行,也可以在任何时候改变这些配置。
框图
XFMC 由五个模块组成:
AHB 接口
XFMC 配置寄存器
NOR 闪存和 PSRAM 控制器
NAND 闪存控制器
外部设备接口
XFMC 框图如下:
AHB 接口
XFMC 的参考时钟为 AHB 时钟(HCLK)。AHB 接口为内部 CPU 和其它总线控制设备访问外部静态存储器提供了通道。XFMC 是 AHB 总线至外部设备协议的转换接口,32 位的 AHB 读写操作可以根据选择的外部存储器的数据通道是 16 还是 8 位被分割成连续的 16 或 8 位的操作。
XFMC 操作规则
在数据传输的过程中,请求 AHB 操作的数据宽度可以是 8 位、16 位或 32 位,而外部设备则是固定的数据宽度,所以 AHB 数据宽度和存储器数据宽度可能不相同,为了保证数据传输的一致性,XFMC 读写访问需要遵从以下规则:
当存储器数据宽度等于 AHB 访问的数据宽度,则无数据传输一致性的问题。
当存储器的数据宽度大于 AHB 访问的数据宽度,XFMC 则将 AHB 操作分割成几个连续的数据宽度的传输,以适应外部设备的数据宽度。
当存储器的数据宽度小于 AHB 访问的数据宽度:如果外部存储设备具有字节选择功能,如 SRAM、ROM、PSRAM,则可通过它的字节通道 BL[1:0]来访问对应的字节。否则禁止写操作,只允许读操作。XFMC 由一组寄存器进行配置。XFMC 寄存器章节详细描述了 NOR 闪存、PSRAM 控制器寄存器以及 NAND闪存寄存器。
外部设备地址映像
XFMC 把外部存储器划分为固定大小的三个 Bank,其中 Bank1 又分为 2 个区域,每个区域占 64M 字节(有效区域 16M 字节),总共 128M 字节。Bank2 和 Bnak3 大小分别为 256M,且都被分为 2 个 Section,分别是属性存储空间和通用存储空间,见下图 18-2。
Bank1 用于访问 NOR 闪存或 SRAM/PSRAM 存储设备。这个存储区被划分为 2 个 NOR/PSRAM 区并有 2 个专用的片选,所以 BANK1 最多可以访问两个外部存储设备。
Bank2 和 Bank3 用于访问 NAND 闪存设备,每个 Bank 可以连接一个 NAND 闪存。每一个 Bank 或区域上的存储器类型都能进行独立的配置,由用户在相应配置寄存器中定义。
NOR 和 PSRAM 地址映像
AHB 地址线 HADDR[27:26]用于两个区域的片选信号:
关注微信号,惊喜等你来
x