STM32之FMC—扩展外部 SDRAM

文章目录

一、FMC外设介绍

STM32自带的FSMC功能,就是专门为这类存储器设计的,在STM32上,有一些引脚被专门设计成地址线,还有一些被专门设计成数据线,还有一些被设计成控制线,然后这些地址线和数据线对应着固定的地址,只要外部的DRAM等存储器将对应的数据线连接到STM32这些对应的引脚上,引脚功能设置为复用模式,通过配置FSMC ,可以直接给上面那个固定的地址赋值 ,其他操作STM32都会自动给你完成,就可以把数据存储到SDRAM

配置好直接赋值就行,就像操作内部RAM,其他的STM32内部外设自动操作。
极大的方便了我们的程序编写,其实这就好比软件IIC SPI 跟硬件IIC SPI 一样 我们不需要关心协议本身的时序,这些都由STM32内部来设置,我们只需要发送和读取数据就可以,STM32跟外部存储器通信,使用硬件方式就是FMC,这样就很容易理解了
FSMC 连接好外部的存储器并初始化后,就可以直接通过访问地址来读写数据 其中这部分在内存中有着固定的存储地址,存储单元是映射到 STM32 的内部寻址空间的;在程序里,定义一个指向这些地址的指针,然后就可以通过指针直接修改该存储单元的内容,FSMC 外设会自动完成数据访问过程,读写命令之类的操作不需要程序控制。

FSMC 把整个 存储区域分成了 4 个 Bank 区域,NOR 及 SRAM 存储器只能使用 Bank1 的地址,在每个 Bank 的内部又分成了 4 个小块,每个小块有相应的控制引脚用于连接片选信号FSMC_NE1/2/3/4

具体是选择那个小快,由地址线(ADDR[27:26])寻址确定

二、SDRAM 控制原理

STM32 控制器芯片内部有一定大小的 SRAM 及 FLASH 作为内存和程序存储空间,但当程序较大,内存和程序空间不足时,就需要在 STM32 芯片的外部扩展存储器了。

STM32F429 系列芯片扩展内存时可以选择 SRAM 和 SDRAM,由于 SDRAM 的"容量/价格"比较高,即使用 SDRAM 要比 SRAM 要划算得多。

给 STM32 芯片扩展内存与给 PC 扩展内存的原理是一样的,只是 PC 上一般以内存条的形式扩展,内存条实质是由多个内存颗粒(即 SDRAM 芯片)组成的通用标准模块,而STM32 直接与 SDRAM 芯片连接。

MT48LC4M32B2 的SDRAM 芯片内部结构框图,以它为模型进行学习。

1、SDRAM关键参数

a、容量、分区

标准的 SDRAM 一般都是 4 个 BANK,这个芯片也不例外,芯片的总容量:1Mbit x 32bit x 4bank = 128Mbit 。

每个 BANK 由 4096rows x 256columns x 32bits 组成。这个比较重要,配置的时候要用到,也就是 12 行 8 列。

片选采用的 SDNE0,那么 SDRAM 的首地址是 0xC000 000,控制 16MB 的空间。

b、引脚

SDRAM 使用

像使用内部 SRAM 一样使用 SDRAM

2、SDRAM芯片IS42S16400J

IS42S16400J是一款64Mb的SDRAM芯片,常用于嵌入式系统。在STM32中使用需配置FSMC为SDRAM模式,包括预充电、初始化和时序设置。文章详细介绍了SDRAM的引脚定义、命令如自我刷新、自动刷新、激活、预充电等。

IS42S16400J是一种高速同步动态随机存储器(SDRAM),64Mb的存储容量,采用4个bank,每个bank大小为16Mb,总线宽度为16位,工作电压为3.3V。它是一种常用的存储器芯片,广泛应用于嵌入式系统、通信设备、计算机等领域。

同步:指其时钟频率域CPU总线的系统时钟频率相同;

动态:指SDRAM存储阵列需要不断的刷新来保持数据不丢失;

随机:指数据不是线性依次存储,而是自由的指定地址进行数据的读写;

3、SDRAM 控制引脚说明

控制逻辑

SDRAM 内部的"控制逻辑"指挥着整个系统的运行,外部可通过 CS、WE、CAS、RAS 以及地址线来向控制逻辑输入命令,命令经过"命令器译码器"译码,并将控制参数保存到"模式寄存器中",控制逻辑依此运行。

地址控制

SDRAM 包含有"A"以及"BA"两类地址线,A 类地址线是行(Row)与列(Column)共用的地址总线,BA 地址线是独立的用于指定 SDRAM 内部存储阵列号(Bank)。在命令模式下,A 类地址线还用于某些命令输入参数。

SDRAM 的存储阵列

要了解 SDRAM 的储存单元寻址以及"A"、"BA"线的具体运用,需要先熟悉它内

部存储阵列的结构

SDRAM 内部包含的存储阵列,可以把它理解成一张表格,数据就填在这张表格上。

和表格查找一样,指定一个行地址和列地址,就可以精确地找到目标单元格,这是

SDRAM 芯片寻址的基本原理。这样的每个单元格被称为存储单元,而这样的表则被称为

存储阵列(Bank),目前设计的 SDRAM 芯片基本上内部都包含有 4 个这样的 Bank,寻址时

指定 Bank 号以及行地址,然后再指定列地址即可寻找到目标存储单元。

SDRAM 的命令

控制 SDRAM 需要用到一系列的命令,见表 26-2。各种信号线状态组合产生不同的控制命令。

预充电

SDRAM 的寻址具有独占性,所以在进行完读写操作后,如果要对同一个 Bank 的另

一行进行寻址,就要将原来有效(ACTIVE)的行关闭,重新发送行/列地址。Bank 关闭当前工作行,准备打开新行的操作就是预充电(Precharge)。

预充电可以通过独立的命令控制,也可以在每次发送读写命令的同时使用"A10"线

控制自动进行预充电。实际上,预充电是一种对工作行中所有存储阵列进行数据重写,并对行地址进行复位,以准备新行的工作。

独立的预充电命令时序见图 26-6。该命令配合使用 A10 线控制,若 A10 为高电平时,所有 Bank 都预充电;A10 为低电平时,使用 BA 线选择要预充电的 Bank。

刷新

SDRAM 要不断进行刷新(Refresh)才能保留住数据,因此它是 DRAM 最重要的操作。刷新操作与预充电中重写的操作本质是一样的。

但因为预充电是对一个或所有 Bank 中的工作行操作,并且不定期,而刷新则是有固定的周期,依次对所有行进行操作,以保证那些久久没被访问的存储单元数据正确。

刷新操作分为两种:"自动刷新"(Auto Refresh)与"自我刷新"(Self Refresh),发

送命令后 CKE 时钟为有效时(低电平),使用自动刷新操作,否则使用自我刷新操作。不论

是何种刷新方式,都不需要外部提供行地址信息,因为这是一个内部的自动操作。

W9825G6KH:

芯片有4个bank,每个bank13行,9列,数据位为16bit,所以整体大小为:4*(2^13)*(2^9)*16=32M。

板载一片SDRAM,型号为 W9825G6KH,大小为 32 MB。

W9825G6KH引脚

数据总线位宽使用了16bit:FMC D0 - FMC D15;

地址总线位宽使用了13bit:FMC A0 - FMC A12;

BANK选择信号线有两条:FMC BA0 和 FMC BA1;

时钟使能信号使用FMC SDCKE0,片选信号使能使用FMC SDME0,可以看出使用SDRAM区域1;

其它通用信号线:FMC SDNWE、FMC SDNCAS、FMC SDNRAS、FMC SDCLK;

数据掩码信号线使用 FMC NBL0 和 FMC NBL1,分别控制输出高8位还是低8位;

三、STM32F429 FMC

接口的 SDRAM控制器,具有如下特点:

两个 SDRAM 存储区域,可独立配置

支持 8 位、 16 位和 32 位数据总线宽度

支持 13 位行地址, 11 位列地址, 4 个内部存储区域: 4x16Mx32bit (256MB)、

4x16Mx16bit(128 MB)、 4x16Mx8bit (64 MB)

支持字、半字和字节访问

自动进行行和存储区域边界管理

多存储区域乒乓访问

可编程时序参数

支持自动刷新操作,可编程刷新速率

自刷新模式

读 FIFO 可缓存,支持 6 行 x32 位深度( 6 x14 位地址标记)/

① 速度等级:当CL=3时最高速度为166Mhz。因为STM32F767的HCLK=216Mhz,所以需要进行二分频,使SDRAM的时钟频率为108Mhz。

② 行地址宽度和列地址宽度:有A0-A12 总共13条行地址线,有A0-A8总共9条列地址线。

四、其他文章

使用RGB屏幕前提是配置好SDRAM,因为需要缓冲区是建立在SDRAM上面, 如何配置请看我这个文章https://blog.csdn.net/a2267542848/article/details/110944197

打开DMA2D

https://blog.csdn.net/as480133937/article/details/123740365

相关推荐
LN花开富贵1 小时前
stm32g431rbt6芯片中VREF+是什么?在电路中怎么设计?
笔记·stm32·单片机·嵌入式硬件·学习
qq21084629531 小时前
【stm32笔记】使用rtt-studio与stm32CubeMx联合创建项目
笔记·stm32·嵌入式硬件
CV金科1 小时前
蓝桥杯—STM32G431RBT6按键的多方式使用(包含软件消抖方法精讲)从原理层面到实际应用(一)
stm32·单片机·嵌入式硬件·蓝桥杯
2021.091 小时前
五、CAN总线
嵌入式硬件
luckyluckypolar1 小时前
STM32——输入捕获
stm32·单片机·嵌入式硬件·物联网
hong1616881 小时前
嵌入式硬件基础知识
嵌入式硬件
hai405871 小时前
单片机(Microcontroller)原理及应用
单片机·嵌入式硬件
jun7788952 小时前
嵌入式硬件基础知识
嵌入式硬件
Projectsauron3 小时前
STM32 芯片启动过程
stm32·单片机·芯片启动过程
CDialog3 小时前
arduino ide开发esp32-wroom-32E
单片机·嵌入式硬件