【FSMC控制器(灵活的静态存储控制器)与SRAM】

FSMC

NOR/PSRAM控制器与SRAM引脚连接

IS61LV25616SRAM,其寻址范围为256K,每个地址空间的数据存储大小为16bit,也就是两个字节。所以IS61LV25616SRAM的容量为256K* 2 = 512K个字节。

外部器件地址映射(NOR/PSRAM)

从FSMC的角度,外部存储器被划分为4个固定大小的存储区域,每个存储区域的大小为256MB。Bank1

存储区域1(Bank1),可连接多达4个NOR Flash或PSRAM存储器器件,带4个专用片选信号Bank2、Bank3

存储区域2(Bank2)和3(Bank3)用于连接NAND Flash器件,每个存储区域一个器件

Bank4

存储区域4(Bank4)用于连接PC卡设备。

HADDR与FSMC地址信号线

HADDR总线是转换到外部存储器的内部AHB总线,FSMC每个BANK的大小是256M,由28根HADDR[27:0]总线进行寻址。

HADDR[27:26]:用于确定片选。

HADDR[25:0]包含外部存储器地址,由于HADDR为字节地址,地址空间存储的数据大小是字节,如果外部存储器SRAM的数据宽度也刚好为字节时,HADDR的地址数据和外部SRAM的地址数据就正好是一一对应的关系。

倘若外部存储器SRAM的数据宽度是16bit,同样,我们向0x6800 0000地址进行数据写入时,就是在向外部SRAM的地址0写数据。我们向0x6800 0001地址进行数据写入时,就是在向外部SRAM的地址1写数据。

我们向0x6800 0000地址进行数据写入时,就是在向外部SRAM的地址0写数据。我们向0x6800 0001地址进行数据写入时,就是在向外部SRAM的地址1写数据。这样会造成内存空间浪费。

把HADDR[25:0]右进行移动1位。将HADDR[25:0]进行移位这一操作,在初始化FSMC时,如果设置了外部SRAM的数据宽度为16位,则FSMC在向外部SRAM发地址时,会自HADDR[25:0] >> 1。

同样以0x68000000地址为例,0x6800 0000地址进行数据写入时,将它分解成二进制是0110 10000000 0000 0000 0000 0000 0000,在外部SRAM看来,10000000 00000000 0000 0000 0000,也就是地址0;0x6800 0001地址进行数据写入时,将它分解成二进制是0110 1000 0000 0000 0000 0000 00000001,在外部SRAM看来,1000 0000 00000000 0000 0000 0001仍然是地址0。

通过NBL信号线来确定写入的高/低位

NOR/PSRAM控制器访问模式

FSMC的NOR/PSRAM控制器有三类寄存器,片选控制寄存器(FSMC_BCRx)、片选时序寄存器(FSMC_BTRx)、写入时序寄存器(FSMC_BWTRx)。x的范围是1 -4。

FSMC的模式

扩展模式

扩展模式简单来说,就是存储器的读和写入是否需要不同的时序参数,若读数据和写入数据所需要的时序参数相差太大,则需要使能扩展模式。扩展模式由FSMC_BCRx寄存器下的EXTMOD位控制。

模式1读时序分析

ADDSET,叫做地址建立时间,为发出地址信号到给出有效数据的时间,需要ADDSET个HCLK时钟周期。

DATAST,数据阶段的持续时间,读使能信号接收到给出有效数据时间。

BUSTURN,总线周转阶段持续时间。

ADDSET,接收到地址信号到给出有效数据的时间,也就是这里的tAA;

DATAST,读使能信号接收到给出有效数据时间,就该是tDOE。

模式1写时序分析

例:IS61LV25616读/写时序参数

读时序参数:

ADDSET tAA:Max = 10ns。DATAST tDOE:Max = 4ns。

写时序参数:

ADDSET tSA:Min = 0ns;DATAST tPWE1:Min = 8ns;

模式1下,读/写的时序参数皆为FSMC_BTRx寄存器所设置的时序参数ADDSET由FSMC_BTRx寄存器下的ADDSET位进行设置,设置范围0 --15个HCLK;DATAST由FSMC_BTRx寄存器下的DATAST进行设置,设置范围1 --255个HCLK。

使用168MHz的AHB总线时钟,其一个HCLK时钟周期大约为5.95ns。所以读时序参数的ADDSET的可设置的合理范围为1~15,DATAST的为2~255;写时序参数的ADDSET的可设置合理范围为0 ~ 15,DATAST的为2~255。

使用模式1访问IS61LV25616

模式A读时序分析

相关推荐
bai5459364 小时前
STM32 CubeIDE 使用串口中断模式
stm32·单片机·嵌入式硬件
qq_401700414 小时前
基于TMI6263BH芯片USB2.0 3.0电源控制与限流保护原理图
单片机·嵌入式硬件
fanged5 小时前
STM32(4)--时钟树
stm32·单片机·嵌入式硬件
List<String> error_P5 小时前
STM32启动流程及相关概念
单片机·嵌入式硬件
__万波__5 小时前
STM32L475蜂鸣器实验
stm32·单片机·嵌入式硬件
qq_401700415 小时前
经典78M05 LDO经典应用电路
单片机·嵌入式硬件
田甲7 小时前
基于STM32L051和HDC2080的低功耗温湿度计
单片机·嵌入式硬件·温湿度计·hdc2080
List<String> error_P8 小时前
STM32 GPIO HAL库常用函数
stm32·单片机·hal库
乡野码圣8 小时前
【RK3588 Android12】设备树DTS进阶
嵌入式硬件
小痞同学9 小时前
【铁头山羊STM32】HAL库 5.SPI部分
stm32·单片机·嵌入式硬件