STM32 FSMC:FSMC(Flexible Static Memory Controller):翻译为:灵活的静态存储管理器。
可管理的存储类型包括:
- NOR FLASH 和 SRAM
- NAND FLASH
- PC Card(PC卡,不知道是什么东西)
具体功能是将外部的存储设备映射为内部地址,可以用程序访问这些地址,间接地,由 FSMC 自动产生相应时序,从而访问外部的存储设备。
有点像位带操作,但是位带操作主要用于访问外设。
具体映射如下:
从图中可以看出,FSMC的地址映射的整体范围为:0x6000 0000~0x9FFF FFFF地址单元,共1GB大小。
地址范围根据存储器类型分成4块(Bank1~4),本试验主要将LCD 的 ILI9341 的 GRAM 当成 NOR FLASH 来模拟通信,因此,主要用到用于 NOR/PSRAM 的 Bank1。
用于 NOR/PSRAM 的 Bank1又分成4块,具体用到哪一块需要根据硬件的连接确定(复用的GPIO :FSMC_NEx(x=1~4)。本例中 PD7 复用为FSMC_NE1, 连接了 ILI9341 的片选引脚,因此使用的块为 FSMC Bank1 NOR/PSRAM 1。
FSMC 中,不同存储器类型有不同且相互独立控制寄存器,对于 NOR/PSARM 的访问,用专用的控制寄存器,即 FSMC_BCR 和 FSCM_BWTR两种寄存器,这两种寄存器又根据上述的4块的划分,每种包括4个。
另外,需要注意的是,FSMC 属于挂载在 AHB 上的外设,使用的时候需要初始化相应的时钟。
由于 FSMC 访问 NOR/SRAM 的B模式的时序与 8080 时序相似程度很高,因此 STM32 的 FSMC 可以用来模拟 8080 时序,达到控制 LCD 的目的:下图是它们的对比。
但是我不清楚,为什么访问 ILI9341 的 GRAM 不用地址线(取而代之的是 D/CX 即数据/命令选择线, 本例中,将 PD11 复用为 FSMC_A16,通过将A16置高,表示传输数据; A16置低,表示传输命令)
对于存储器来说,向指定地址写数据,既需要数据,也需要指定地址,但 8080 时序没有地址的概念。
一个猜想是对于 ILI9341 来说,数据之中包含了地址。
标签:8080,FLASH,FSMC,时序,地址,NOR From: https://www.cnblogs.com/FBsharl/p/17284453.html