当前位置: 首页 > news >正文

STM32之FMC—扩展外部 SDRAM

文章目录

  • 一、FMC外设介绍
  • 二、SDRAM 控制原理
    • 1、SDRAM关键参数
      • a、容量、分区
      • b、引脚
      • SDRAM 使用
    • 2、SDRAM芯片IS42S16400J
    • 3、SDRAM 控制引脚说明
    • 控制逻辑
    • 地址控制
    • SDRAM 的存储阵列
    • SDRAM 的命令
      • 预充电
      • 刷新
    • W9825G6KH:
      • W9825G6KH引脚
  • 三、STM32F429 FMC
  • 四、其他文章
    • 打开DMA2D

一、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*(213)*(29)*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 位地址标记)/

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dfb74417aeea40958563fc625698d3be.png
① 速度等级:当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


http://www.mrgr.cn/news/28316.html

相关文章:

  • linux下编译安装memcached
  • 【Three.js基础学习】24. shader patterns
  • git撤销、回退某个commit的修改
  • 使用pdfjs加载多页pdf并实现打印
  • 【Fermat】费马小定理
  • MySQL —— MySQL逻辑架构与查询过程
  • SpringBoot 消息队列RabbitMQ 消息可靠性 数据持久化 与 LazyQueue
  • Java读取寄存器数据的方法
  • 53. 最大子数组和
  • 微信视频号导出视频软件
  • Python 课程12-Python 自动化应用
  • 【思博伦】史上最详细思博伦测试仪使用教程精讲(三)!图解超赞超详细!!!
  • 二叉树OJ题——另一棵树的子树
  • 【Linux篇】TCP/IP协议(笔记)
  • asp.net core调用wps实现word转pdf的方法
  • A+B P1001 A+B Problem
  • 20240916 每日AI必读资讯
  • 认知杂谈68《燃爆!兄弟萌不可错过的人生开挂宝典》
  • OJ在线评测系统 后端项目初始化 Springboot项目通用模版讲解
  • 2025秋招LLM大模型多模态面试题(七)- 思维链CoT
  • 【我的 PWN 学习手札】Unsortedbin Attack
  • 【苍穹外卖】总结
  • Leetcode 找到字符串中所有字母异位词
  • 研究生招生宣传(2024秋)
  • 12 数组——27. 移除元素 ★
  • 1. TypeScript基本语法