1.FSMC的简介
1.1基本简介
1.1.1FSMC的简介
-
FSMC是(Flexible Static Memory Controller)的缩写,译为灵活的静态存储控制器。它可以用于驱动包括 SRAM、NOR FLASH以及NANDFLSAH类型的存储器,不能驱动如SDRAM这种动态的存储器而在STM32F429 系列的控制器中,它具有FMC外设,支持控制SDRAM存储器。
- FSMC的特点:
(1)所有外部存储器共享地址、数据和控制信号,但有各自的片选信号。FSMC 一次只能访问一 个外部器件。
(2)8或16位宽的数据总线
(3)每个存储区域有独立的片选控制
(4)每个存储区域可独立配置
-
FSMC的时序控制
(1)等待周期可编程(最多 15 个时钟周期)
(2)总线周转周期可编程(最多 15 个时钟周期)
(3)输出使能和写入使能延迟可编程(最多 15 个时钟周期)
(4)独立的读和写时序和协议,以支持各种存储器和时序
1.1.2FSMC的框图
- FSMC的时钟输入
(1)CPU和其它AHB总线主设备可通过该 AHB 从设备接口访问外部静态存储器。 AHB事务会转换为外部器件协议。
(2)尤其是当所选外部存储器的宽度为16位或8位时,AHB中的32位宽事务将被划分成多个连续的16或8位访问。片选将在每次访问时进行切换
(3)FSMC外设挂载在AHB总线上,时钟信号来自于HCLK,控制器的同步时钟输出就是由它分频得到。
- FSMC的通讯引脚
(1)N/#表示低电平有效;地址线FSMC_A和数据线FSMC_D是所有控制器都共用的
1.1.3FSMC的地址映射
(1)FSMC控制器对内核的地址映射
- 图中左侧的是Cortex-M3内核的存储空间分配,右侧是STM32 FSMC外设的地址映射。可以看到FSMC的NOR/PSRAM/SRAM/NAND FLASH以及PC卡的地址都在External RAM地址空间内。正是因为存在这样的地址映射,使得访问FSMC控制的存储器时,就跟访问STM32的片上外设寄存器一样(片上外设的地址映射即图中左侧的“Peripheral”区域)。
(2)外部器件地址映射
-
从FSMC的角度,外部存储器被划分为4个固定大小的存储区域,每个存储区域的大小为256 MB存储区域1可连接多达4个NOR Flash或PSRAM存储器器件。此存储区域被划分为4个NOR/PSRAM 区域,带4个专用片选信号。 存储区域2和3用于连接NAND Flash器件(每个存储区域一个器件) 存储区域4用于连接PC卡设备。对于每个存储区域,所要使用的存储器类型由用户在配置寄存器中定义
(3)Bank1内部片选信号地址的选择
- STM32F1/F4的FSMC存储块1(Bank1)被分为4个区,每个区管理64M字节空间,每个区 都有独立的寄存器对所连接的存储器进行配置。Bank1的256M字节空间可以通过 28 根地址线 (HADDR[27:0])寻址后访问。这里 HADDR 是内部 AHB地址总线,但是也会参加对外部存储器的寻址,其中HADDR[25:0]来自外部存储器地址FSMC_A[25:0],而 HADDR[26:27]对4个区进行寻址
-
当STM32访问0x68000000-0x6BFFFFFF地址空间时,会访问到 Bank1的第 3 小块区域,相应的 FSMC_NE3 信号线会输出控制信号
(4)存储器宽度
- 如果外部存储器的宽度为16位,FSMC将使用内部的HADDR[25:1]地址来作为对外部存储器的寻址地址FSMC_A[24:00]。 当 Bank1 接的是 8 位宽度存储器的时候:FSMC将内部的HADDR[25:0] 地址作为对外部存储器的寻址地址FSMC_A[25:0]。(后面的LCD驱动有大用)
- 无论外部存储器的宽度为16位还是8位,FSMC_A[0]都应连接到外部存储器地址A[0]
-
HADDR[25:0] 包含外部存储器地址。由于HADDR为字节地址,而存储器按字寻址,所以根据存储器数据宽度不同,实际向存储器发送的地址也将有所不同 ,如下表所示
(5)NAND/PC卡地址映射
- 对于NAND Flash 存储器,通用区和特性区存储空间分为三个部分,均位于低位256KB中
- 数据区域(通用/特性存储空间中的第一个 64 KB) 命令区域(通用/特性存储空间中的第二个 64 KB) 地址区域(通用/特性存储空间中的下一个 128 KB)
-
由于NAND Flash存储器会自动递增地址,所以在访问连续存储器位置时,无需递增数据区域的地址。
1.1.4NOR/PSRAM控制器
(1)寄存器
(2) 基本概念
不同的设备的最大最小数据建立的时间、地址保持时间 、地址建立时间、总线周转等是不同的
-
对于同步访问,FSMC只有在读/写事务期间才会向所选的外部器件发出时钟 (CLK)。HCLK时钟频率是该时钟的整数倍。每个存储区域的大小固定,均为 64 MB
-
NOR-Flash存储器采用16位字寻址。最大容量为512Mb(26 个地址线)
-
PSRAM存储器采用16位字寻址。最大容量为512Mb(26 个地址线)
(3)FSMC的信号名称
(4)模式1读取访问
- NBL[1:0] 在进行读取访问时为低电平
-
位于写入事务末尾的一个HCLK周期有助于确保NWE上升沿之后的地址和数据保持时间 。 由于存在此HCLK周期,DATAST值必须大于零 (DATAST > 0)。简单来说就是保证数据写入
(5)B/2模式
- 与模式1的不同之处在于设置扩展模式(模式 B)时的NWE切换与独立的读取和写入时序