新闻中心

EEPW首页>嵌入式系统>设计应用> STM32的FSMC学习手记(一)

STM32的FSMC学习手记(一)

作者: 时间:2016-11-21 来源:网络 收藏
FSMC应用简介
FSMC全称“静态存储器控制器”, STM32可以通过FSMC与SRAM、ROM、PSRAM、Nor Flash和NandFlash存储器的引脚相连,从而进行数据的交换。

一、FSMC的特点:

1、 FSMC的一大特点是支持不同位宽的异步读写操作。
2、 FSMC的映射地址空间中,不同的BANK是独立的,可用于扩展不同类型的存储器。当FSMC同时使用多个外部存储器时,FSMC会通过 总线悬空延时时间参数,来防止访问冲突发生。
3、 支持代码从FSMC扩展的外部存储器中直接运行。不需要首先调入内部SRAM。

二、FSMC的结构组成:

如图所示,FSMC主要分为四部分:
1、 FSMC一端连接着AHB高速总线,与Cortex-M3内核相连接。
2、 FSMC内部实际上包括Nor Flash和Nand/PC Card两个控制器,支持两种不同的存储方式。
3、 外部设备接口。
4、 配置寄存器,用于选择FSMC的功能。

三、FSMC的映射空间

FSMC管理1GB的映射地址空间。可以划分为4个256M的BANK,每个BANK又划分为4个64M的子BANK,如下表所示。

FAMC对每个存储块分配一个唯一的片选信号NE[4:1]。

四、FSMC的初始化

在使用SRAM之前,我们需要对SRAM使用的FSMC BANK进行参数配置,使之与SRAM芯片的要求相符合。
FSMC所占用的引脚初始化
在STM32技术手册中,针对FSMC引脚的GPIO模式配置,已经进行了说明,具体FSMC总线配置方法如下。下表指的是整个FSMC接口的引脚初始化配置说明,应该根据实际初始化相关的引脚。

完成FSMC引脚初始化后,要配置 可编程存储器的参数,包括时序,是否支持非对齐访问和等待周期管理(只针对突发模式访问PSRAM和NOR闪存



p.FSMC_AddressSetupTime = 0; //地址建立时间
p.FSMC_AddressHoldTime = 0; //地址保持时间
p.FSMC_DataSetupTime = 2; //数据建立时间
p.FSMC_BusTurnAroundDuration = 0; //总线恢复时间
p.FSMC_CLKDivision = 0; // 时钟分频因子
p.FSMC_DataLatency = 0; //数据产生时间
p.FSMC_AccessMode = FSMC_AccessMode_A; //FSMC NOR控制器时序
存储器类型、RAM数据宽度、AM地址范围、用的FSMC BANK、FSMC工作模式的初始化等。

FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM3; //使用了FSMC的BANK1的子板块3
FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;//禁止地址数据线复用
FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM; //存储器类型为SRAM
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; //存储器数据宽度为16位
FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable; //关闭突发模式访问
//等待信号优先级,只有在使能突发访问模式才有效
FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
//关闭Wrapped burst access mode,只有在使能突发访问模式才有效
FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
//等待信号设置,只有在使能突发访问模式才有效
FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; //使能这个BANK的写操作
//使能/关闭等待信息设置,只在使能突发访问模式才有效
FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; //关闭Extend Mode
FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; //关闭Write Burst Mode
FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p; //读操作时序参数
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p; //写操作时序参数





关键词:STM32FSMC学习手

评论


技术专区

关闭