STM32外设使用(八) FSMC

注:该帖为自己在使用stm32时的问题总结贴,如有错误欢迎大家指正出来,一起交流学习

目录

一、简介

二、在stm32中的结构

三、驱动液晶屏代码示例

四、碰到过的问题


一、简介

FSMC(Flexible Static Memory Controller,静态存储控制器):灵活的静态存储器控制器。可用于Stm32芯片控制 NOR FLASH、PSRAM和NAND FLASH存储芯片

STM32的FSMC真是一个万能的总线控制器,不仅可以控制SRAM,NOR FLASH,NAND FLASH,PC Card,还能控制LCD,TFT.

一般越是复杂的东西,理解起来就很困难,但是使用上却很方便,如USB。

FSMC功能是类似 51 单片机的存储器映射功能,能管理多个外部不同种类的存储设备,具有方便,简单,快捷的优点。

 

FSMC的主要作用:

  1. 将AHB传输信号转换到适到的外设协议;
  2. 满足访问外部设备对时序的要求;

FSMC的主要功能:

       ●  具有静态存储器接口的器件包括:

        ─ 静态随机存储器(SRAM)

        ─ 只读存储器(ROM)

        ─  NOR闪存

        ─  PSRAM(4个存储器块)

       ●  两个NAND闪存块,支持硬件ECC并可检测多达8K字节数据

       ●  16位的PC卡兼容设备

       ●  支持对同步器件的成组(Burst)访问模式,如NOR闪存和PSRAM

       ●  8或16位数据总线

       ●  每一个存储器块都有独立的片选控制

       ●  每一个存储器块都可以独立配置

       ●  时序可编程以支持各种不同的器件:

        ─ 等待周期可编程(多达15个周期)

        ─ 总线恢复周期可编程(多达15个周期)

        ─ 输出使能和写使能延迟可编程(多达15周期)

        ─ 独立的读写时序和协议,可支持宽范围的存储器和时序

       ●  PSRAM和SRAM器件使用的写使能和字节选择输出

       ●  将32位的AHB访问请求,转换到连续的16位或8位的,对外部16位或8位器件的访问

       ●  具有16个字,每个字32位宽的写入FIFO,允许在写入较慢存储器时释放AHB进行其它操作。在开始一次新的FSMC操作前,FIFO要先被清空。

       通常在系统复位或上电时,应该设置好所有定义外部存储器类型和特性的FSMC寄存器,并保持它们的内容不变;当然,也可以在任何时候改变这些设置

二、在stm32中的结构

FSMC结构框图:

 STM32外设使用(八) FSMC_第1张图片

 

 

AHB接口:

AHB接口为内部CPU和其它总线控制设备访问外部静态存储器提供了通道。AHB操作被转换到外部设备的操作。当选择的外部存储器的数据通道是16或8位时,在AHB上的32位数据会被分割成连续的16或8位的操作(具体操作规则见参考手册)。AHB时钟(HCLK)是FSMC的参考时钟。

 

FSMC的地址映像:

       ●  存储块1用于访问最多4个NOR闪存或PSRAM存储设备。这个存储区被划分为4个NOR/PSRAM区并有4个专用的片选。

       ●  存储块2和3用于访问NAND闪存设备,每个存储块连接一个NAND闪存。

       ●  存储块4用于访问PC卡设备

       每一个存储块上的存储器类型是由用户在配置寄存器中定义的。

 STM32外设使用(八) FSMC_第2张图片

三、驱动液晶屏代码示例

四、碰到过的问题

 

 

你可能感兴趣的:(stm32)