嵌入式单片机基础篇(二十)之FSMC

本文详细介绍了STM32的FSMC(灵活静态存储控制器)功能,包括FSMC的结构、外部设备分类、地址映像、存储块配置、访问模式、时序参数设置以及寄存器配置,特别是如何将FSMC应用于驱动TFTLCD。FSMC支持多种访问模式,如模式A,适合驱动读写速度需求不同的设备,通过独立的读写时序控制提高效率。
摘要由CSDN通过智能技术生成

FSMC详解

1、FSMC简介:
FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和 16 位 PC 存储器卡连接,STM32 的 FSMC 接口支持包括 SRAM、NAND FLASH、NOR FLASH 和 PSRAM 等存储器。
2、FSMC 的框图:
在这里插入图片描述
从上图我们可以看出,STM32 的 FSMC 将外部设备分为 3 类:NOR/PSRAM 设备、NAND设备、PC 卡设备。他们共用地址数据总线等信号,他们具有不同的 CS 以区分不同的设备, TFTLCD 可以用 FSMC_NE4 做片选,其实就是将 TFTLCD 当成 SRAM 来控制。
3、FSMC 的外部设备地址映像
STM32 的 FSMC将外部存储器划分为固定大小为 256M 字节的四个存储块,如图所示:
在这里插入图片描述

FSMC 总共管理 1GB 空间,拥有 4 个存储块(Bank)
4、 FSMC 存储块 1(Bank1)
STM32 的 FSMC 存储块 1(Bank1)被分为 4 个区,每个区管理 64M 字节空间,每个区都有独立的寄存器对所连接的存储器进行配置。Bank1 的 256M 字节空间由 28 根地址线(HADDR[27:0])寻址。
这 里 HADDR 是内 部 AHB 地址总 线,其 中 HADDR[25:0]来自外部存储器地址FSMC_A[25:0],而 HADDR[26:27]对 4 个区进行寻址。
在这里插入图片描述
说明:
(1)当Bank1接的是16位宽度存储器的时候:HADDR[25:1]–>FSMC_A[24:0]
(2)当Bank1接的是8位宽度存储器的时候:HADDR[25:0]–>FSMC_A[25:0]
(3)不论外部接8位/16位宽设备,FSMC_A[0]永远接在外部设备地址A[0]
注意:
(1)TFTLCD使用的是 16 位数据宽度,所以 HADDR[0]并没有用到,只有 HADDR[25:1]是有效的,对应关系变为:HADDR[25:1]→ FSMC_A[24:0],相当于右移了一位
(2)HADDR[27:26]的设置,是不需要我们干预的,比如:当你选择使用 Bank1 的第三个区,即使用 FSMC_NE3 来连接外部设备的时候,即对应了 HADDR[27:26]=10,我们要做的就是配置对应第 3 区的寄存器组,来适应外部设备即可。
5、STM32 的 FSMC 各 Bank 配置寄存器如表所示:
在这里插入图片描述
对于 NOR FLASH 控制器,主要是通过 FSMC_BCRx、FSMC_BTRx 和 FSMC_BWTRx 寄存器设置(其中 x=1~4,对应 4 个区)。通过这 3 个寄存器,可以设置 FSMC 访问外部存储器的时序参数,拓宽了可选用的外部存储器的速度范围。
6、FSMC存储块1 支持的访问模式
STM32的FSMC存储块1 支持的异步突发访问模式包括:模式1、模式A~D等多种时序模型,驱动SRAM时一般使用模式1或者模式 A,这里使用模式A来驱动LCD(当SRAM用)
(1)模式A读时序图
在这里插入图片描述
(2)模式A写时序图

在这里插入图片描述
FSMC 的 NOR FLASH 控制器支持同步和异步突发两种访问方式。
(3)选用同步突发访问方式时,FSMC 将 HCLK(系统时钟)分频后,发送给外部存储器作为同步时钟信号 FSMC_CLK。
此时需要的设置的时间参数有 2 个:
1,HCLK 与 FSM

  • 10
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值