【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读时序分析

相关推荐
项目題供诗1 小时前
51单片机入门(八)
单片机·嵌入式硬件·51单片机
羽获飞1 小时前
从零开始学嵌入式之STM32——9.STM32的时钟系统
stm32·单片机·嵌入式硬件
飞睿科技2 小时前
乐鑫智能开关方案解析:基于ESP32-C系列的低功耗、高集成设计
嵌入式硬件·物联网·esp32·智能家居·乐鑫科技
来自晴朗的明天3 小时前
13、NMOS 电源防反接电路
单片机·嵌入式硬件·硬件工程
17(无规则自律)4 小时前
深入浅出 Linux 内核模块,写一个内核版的 Hello World
linux·arm开发·嵌入式硬件
芯岭技术4 小时前
PY32MD310单片机:高性能、低功耗的32位电机控制微控制器
单片机·嵌入式硬件
wotaifuzao5 小时前
STM32 + FreeRTOS 的订阅通知组件架构
stm32·嵌入式硬件·架构·freertos·事件驱动·嵌入式架构
小龙报5 小时前
【51单片机】深度解析 51 串口 UART:原理、配置、收发实现与工程化应用全总结
c语言·开发语言·c++·stm32·单片机·嵌入式硬件·51单片机
Lester_110112 小时前
STM32 高级定时器PWM互补输出模式--如果没有死区,突然关闭PWM有产生瞬间导通的可能吗
stm32·单片机·嵌入式硬件·嵌入式软件
小李独爱秋14 小时前
“bootmgr is compressed”错误:根源、笔记本与台式机差异化解决方案深度指南
运维·stm32·单片机·嵌入式硬件·文件系统·电脑故障