当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]FSMC:灵活的静态存储控制器,能够与同步或异步存储器和16位PC存储器卡连接,STM32的FSMC接口支持包括SRAM、NAND FLASH、NOR FLASH和PSRAM等存储器。

一,FSMC简介

FSMC:灵活的静态存储控制器

能够与同步或异步存储器和16位PC存储器卡连接

STM32的FSMC接口支持包括SRAM、NAND FLASH、NOR FLASH和PSRAM等存储器

STM32 407和103是不支持SD RAM的,429,439支持SD RAM操作

二,FSMC驱动LCD原理

FSMC驱动外部SRAM(LCD被当做SRAM)

SRAM控制包含:

地址线(如A0~A25)

数据线(如D0~D15)

写信号(WE,即WR)

读信号(OE,即RD)

片选信号(CS)

若SRAM支持字节控制,还有UB/LB信号。

上一节提到的TFTLCD信号,RS、D0~D15、WR、RD、CS、RST和BL等

其中真正操作LCD时用到的就只有:

数据&命令:RS

数据线:D0~D15

写信号:WR

读信号:RD

片选信号:CS

操作时序和SRAM控制类似,唯一不同是TFTLCD有RS信号,但是没有地址信号

TFTLCD通过RS信号来决定传送是数据还是命令,可以理解为一个地址信号

将RS接到FSMC地址线A10(A0-A25随意),TFTLCD就被当做一个SRAM使用

这样TFTLCD成为只有一个地址的SRAM设备,从而实现FSMC驱动TFTLCD

三,FSMC存储块

STM32的FSMC支持8/16/32位数据宽度,我们使用的LCD为16位,所以设置选择16位

FSMC的外部设备地址映像:STM32的FSMC将外部存储器划分为固定大小为256M字节的四个存储块

如图:

FSMC分为4块,每块256M字节又被划分为4*64,即四个片选

NOR / PSRAM使用块1,共256M

NAND闪存使用块2,3,共512M

PC卡使用块4,共256M

所以我们使用NOR PSRAM驱动TFTLCD

四,存储块1(Bank1)寄存器介绍

STM32的FSMC存储块1(Bank1)用于驱动NOR FLASH/SRAM/PSRAM

Bank1被分为4个区,每个区管理64M字节空间,每个区都有独立的寄存器对所连接的存储器进行配置。

Bank1的256M字节空间由28根地址线(HADDR[27:0])寻址。 这里HADDR,是内部AHB地址总线

HADDR[25:0]来自外部存储器地址FSMC_A[25:0],而HADDR[26:27]对4个区进行寻址。

如下图所示:

说明:

HADDR[27:26]是不可手动配置的,当选择所在区后会自动赋值

注意:

1,当Bank1接 8位宽度存储器时:HADDR[25:0] -> FSMC_A[25:0]

2,当Bank1接16位宽度存储器时:HADDR[25:1] -> FSMC_A[24:0]

由于内部每个地址对应一个字节,外部设备16位宽,FSMC的一个地址对应两个字节

即:

0000对应FSMC_A[0]=0 (2字节)

0010对应FSMC_A[0]=1 (2字节)

0100对应FSMC_A[1]=1 (2字节)

所以对应关系需要除以2,内部右移一位对齐

此时最低位没用,访问最低位需要使用UB/LB

不论外部接8位/16位宽设备,FSMC_A[0]永远接在外部设备地址A[0]

五,存储块1(Bank1)模式A读写时序

STM32的FSMC存储块1支持的异步突发访问模式

包括模式1,模式A~D等多种时序模型,驱动SRAM一般使用模式1或模式A

我们使用模式A驱动LCD(当做SRAM使用),模式A支持读写时序分开设置

上一篇说的LCD时序,我们知道,LCD的读写耗时是不同的.写快读慢

这里采用模式A,针对不同的速度,做不同的设置

模式A读时序:

模式A写时序:

ILI9341时序-读写高低电平最小持续时间:

根据ILI9341时序读写高低电平最小持续时间来配置模式A的读写时序

六,FSMC相关寄存器介绍

对于NOR FLASH/PSRAM控制器-存储块1,可通过FSMC_BCRx、FSMC_BTRx和FSMC_BWTRx寄存器设置(其中x=1~4,对应4个区)。

通过这3个寄存器,可以设置FSMC访问外部存储器的时序参数,拓宽了可选用的外部存储器的速度范围。

1,SRAM/NOR闪存片选控制寄存器(FSMC_BCRx)

FSMC_BCRx

EXTMOD:

扩展模式使能位,控制是否允许读写不同的时序,需设置为1

WREN:

写使能位。我们要向TFTLCD写数据,需设置为1

MWID[1:0]:

存储器数据总线宽度。00,表示8位数据模式;01表示16位数据模式;10和11保留。

我们的TFTLCD是16位数据线,需设置WMID[1:0]=01。

MTYP[1:0]:

存储器类型。00表示SRAM、ROM;01表示PSRAM;10表示NOR FLASH;11保留。

我们把LCD当成SRAM用,需设置MTYP[1:0]=00。

MBKEN:

存储块使能位。需设置为1

2,SRAM/NOR闪存片选时序寄存器(FSMC_BTRx)-读时序控制

FSMC_BTRx

ACCMOD[1:0]:

访问模式。00:模式A;01:模式B;10:模式C;11:模式D。

我们使用模式A,需设置为00

DATAST[7:0]:

数据保持时间,等于: DATAST(+1)个HCLK时钟周期,DATAST最大为255。

对于ILI9341相当于RD低电平持续时间,最大355ns

对于STM32F1,一个HCLK=13.8ns (1/72M),设置为15,相当于16个HCLK=220.8,加上STM32F1的FSMC性能较低一些,配置为15即可

对于STM32F4,一个HCLK=6ns(1/168M) ,设置为60(360)。

ADDSET[3:0]:

地址建立时间。表示:ADDSET+1个HCLK周期,ADDSET最大为15。

对ILI9341来说,这里相当于RD高电平持续时间,为90ns。

STM32F1的FSMC性能较低,即便设置为0,RD也有190ns高电平,所以设置为1

STM32F1设置为15

注意:

如果未设置EXTMOD位,则读写共用FSMC_BTRx时序寄存器

3,SRAM/NOR闪存写时序寄存器(FSMC_BWTRx)-写时序控制

FSMC_BWTRx

ACCMOD[1:0]:

访问模式。00:模式A;01:模式B;10:模式C;11:模式D。

DATAST[7:0]:

数据保持时间,等于: DATAST(+1)个HCLK时钟周期,DATAST最大为255。

对ILI9341来说,其实就是WR低电平持续时间,为15ns,不过ILI9320等则需要50ns。

考虑兼容性,对STM32F1一个HCLK=13.8ns (1/72M),设置为3(4*13.8=55.2);

对STM32F4,一个HCLK=6ns(1/168M) ,设置为9(9*6=54)。

ADDSET[3:0]:

地址建立时间。表示:ADDSET+1个HCLK周期,ADDSET最大值为1111 = 15。

对ILI9341来说,这里相当于WR高电平持续时间,为15ns。

考虑兼容ILI9320,STM32F1即便设置为1,WR也有100ns高电平,所以设置为1。

而对STM32F4,则设置为8(9*6=54)

七,寄存器组合说明

ST官方库寄存器定义中并没有FSMC_BCRx、FSMC_BTRx、FSMC_BWTRx等单独寄存器

而是将他们进行了一些组合。规律如下:

FSMC_BCRx和FSMC_BTRx,组合成BTCR[8]寄存器组,他们的对应关系如下:

BTCR[0]对应FSMC_BCR1,BTCR[1]对应FSMC_BTR1

BTCR[2]对应FSMC_BCR2,BTCR[3]对应FSMC_BTR2

BTCR[4]对应FSMC_BCR3,BTCR[5]对应FSMC_BTR3

BTCR[6]对应FSMC_BCR4,BTCR[7]对应FSMC_BTR4

FSMC_BWTRx则组合成BWTR[7],他们的对应关系如下:

BWTR[0]对应FSMC_BWTR1,

BWTR[2]对应FSMC_BWTR2,

BWTR[4]对应FSMC_BWTR3,

BWTR[6]对应FSMC_BWTR4,

BWTR[1]、BWTR[3]和BWTR[5]保留

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在嵌入式系统和底层驱动开发中,C语言因其高效性和可控性成为主流选择,但缺乏原生单元测试支持成为开发痛点。本文提出一种基于宏定义和测试用例管理的轻量级单元测试框架方案,通过自定义断言宏和测试注册机制,实现无需外部依赖的嵌入...

关键字: C语言 嵌入式系统 驱动开发

在Linux设备驱动开发中,等待队列(Wait Queue)是实现进程睡眠与唤醒的核心机制,它允许进程在资源不可用时主动放弃CPU,进入可中断睡眠状态,待资源就绪后再被唤醒。本文通过C语言模型解析等待队列的实现原理,结合...

关键字: 驱动开发 C语言 Linux

June 24, 2025 ---- 近期市场对于NVIDIA RTX PRO 6000系列产品的讨论声量高,预期在需求支撑下,整体出货将有不俗表现。然而,TrendForce集邦咨询资深研究副总吴雅婷认为,该系列产品受...

关键字: 存储器 供应链 边缘AI

在人工智能训练、实时图形渲染与科学计算领域,存储器带宽已成为制约系统性能的核心瓶颈。HBM3与GDDR7作为当前显存技术的两大巅峰之作,分别通过三维堆叠与信号调制技术的突破,为不同应用场景提供了差异化解决方案。本文从架构...

关键字: 存储器 HBM3

传统存储器技术逼近物理极限,铁电场效应晶体管(FeFET)凭借其独特的极化翻转机制与非易失性逻辑特性,成为突破冯·诺依曼架构瓶颈的关键技术。FeFET通过将铁电材料集成至晶体管栅极,实现了存储与逻辑功能的深度融合,其物理...

关键字: FeFET 存储器

数字化转型与人工智能技术驱动,数据中心存储架构正经历从传统磁盘阵列向全闪存与新型内存技术的深度变革。全闪存阵列(AFA)凭借亚毫秒级延迟与高IOPS性能重塑存储性能基准,而持久化内存(PMEM)则通过填补DRAM与SSD...

关键字: 数据中心 存储器

AI算力与数据中心规模持续扩张,存储器纠错码(ECC)技术已成为保障数据完整性的核心防线。从硬件加速架构到算法优化,ECC技术正通过多维度创新,将内存错误率降低至每万亿小时1次以下,为关键任务系统提供接近零故障的可靠性保...

关键字: 存储器 ECC

存储器供应链安全已成为国家战略的核心命题,从晶圆代工到封装测试,中国存储器产业正通过关键环节的技术突破与生态重构,走出一条从“受制于人”到“自主可控”的替代之路。这条路径不仅关乎产业安全,更承载着数字经济时代的技术主权。

关键字: 存储器 国产化替

AI算力需求爆炸式增长,存储器封装技术正经历从2.5D到3D异构集成的范式变革。这种变革不仅重构了芯片间的物理连接方式,更对散热设计与信号完整性提出了全新挑战。本文从封装架构演进、散热机制创新与信号完整性保障三个维度,解...

关键字: 存储器 散热

数据成为核心生产要素的时代,存储器安全技术已成为保障数字资产隐私与完整性的关键防线。从早期基于硬件的加密引擎到现代可信执行环境(TEE)的生态构建,存储器安全技术经历了从单一防护到体系化协同的演进。本文从硬件加密引擎、存...

关键字: 存储器 TEE
关闭