快讯
HOME
快讯
正文内容
nand 16位 fsmc 一文读懂FSMC模块的使用方法
发布时间 : 2024-11-24
作者 : 小编
访问数量 : 23
扫码分享至微信

一文读懂FSMC模块的使用方法

FSMC模块 是STM32系列微控制器的一个外设,它可以实现与外部存储器或显示器的连接和控制。FSMC模块的全称是灵活的静态存储控制器(Flexible Static Memory Controller),它支持SRAM、ROM、PSRAM、NOR Flash、NAND Flash、PC Card等存储器类型,以及80位或16位并口TFT LCD等显示器类型。

FSMC模块的主要特点有:

它具有高度的灵活性和可编程性,可以根据不同的外部设备类型和需求,配置不同的访问时序和参数,以实现最优化的性能和效率。它具有高度的集成度和兼容性,可以将多个外部设备共享地址、数据和控制信号,但有各自的片选信号。FSMC模块一次只能访问一个外部设备,但可以通过软件切换来实现多个设备的管理。它具有高速度和高可靠性的优势,可以利用内部时钟HCLK来同步外部设备的信号时序,以提高信号质量和系统稳定性。

FSMC模块的主要组成部分有:

AHB接口:用于将内部CPU和其他主总线外设的访问请求转换为适合外部设备的协议和信号。NOR Flash/PSRAM控制器:用于驱动异步或同步的NOR Flash或PSRAM存储器,支持多种访问模式和时序参数。NAND Flash/PC卡控制器:用于驱动NAND Flash或PC卡存储器,支持ECC校验和FIFO缓冲区等功能。外部设备接口:用于输出地址、数据和控制信号到外部设备,支持多种数据宽度和复用模式。

FSMC模块的使用方法有:

配置FSMC模块的相关寄存器,如FSMC_BCRx、FSMC_BTRx、FSMC_BWTRx等,以设置外部设备的类型、数据宽度、访问模式、时序参数等。连接FSMC模块的相关引脚,如FSMC_Ax、FSMC_Dx、FSMC_NEx等,到外部设备的对应引脚,注意引脚功能设置为复用模式。通过FSMC模块的地址映射空间,如0x60000000~0x6FFFFFFF等,来读写外部设备的数据,注意地址线和数据线之间的对应关系

STM3嵌入式-FSMC地址映射

本章学习目标:

1,了解FSMC模式

1.2 FSMC 简介

引脚数在 100 脚以上的 STM32F103 芯片都带有 FSMC 的接口,而什么是 FSMC 呢?FSMC 即灵活的静态存储控制器,FSMC 的接口支持包括 SRAM、NAND FLASH、NOR FLASH、 PSRAM 等存储器。说白了呢,就是可以当操作 SRAM、NAND FLASH、NOR FLASH 和 PSRAM 等存储器的时候,我们不必自己操作 IO 口模拟这些存储器的操作时序了,使用 FSMC 模块可以直接帮我们读写这些存储器。而 NOR FLASH 主要使用的信号线主要有:

FSMC信号名称

从 FSMC 的角度看,可以把外部存储器划分为固定大小为 256M 字节的四个存储块,每个存储块分4个段,如下图:

FSMC外部存储器

每段的存储空间为64MB,刚好对应地址线[A0,A25] 。四个段我们是通过FSMC_NE[X]来选择,在硬件设计时连接到外部设备的片选引脚。举个例子:假设我们用的是FSMC_NE4连接到外部存储器的片选引脚,那么该存储段在STM32中的地址范围是0x6C000000 到 0x6FFFFFFF 的区域,也就是说当我们对地址0x6C000000 到 0x6FFFFFFF 的区域进行操作的时候, FSMC模块就可以自动帮我们操作外部存储器,相当于把外部存储器挂在了单片机的地址总线上面了。

1.3:0x6C000000 到 0x6FFFFFFF之间的区域又是如何映射的呢

在了解这个问题之前我们先了解一下,TFT-LCD 8080 模式。

8080接口 模式

如图所示,我们把FSMC_NE4连接到8080接口中的CS,把地址线FSMC_A10连接到RS上。我们知道当RS为高电平的时候对显示屏传送数据,反之则传送命令。也就是说当我们要向显示屏传输数据的时候只要地址线 A10 输出为 1,就可以了;而当我们要写入命令的时候,正好相反,地址线 A10 输出为 0。我们例程上面使用结构定义的方式,我们定义一个结构体:

/* TFT 地址结构体 */ typedef struct

{

u16 TFT_CMD;

u16 TFT_DATA;

} TFT_TypeDef;

然后定义一个 TFT 的结构体,映射到(0x6C000000 | 0x000007FE)地址上面:

#define TFT_BASE ((uint32_t)(0x6C000000 | 0x000007FE))

#define TFT ((TFT_TypeDef *) TFT_BASE)

那么 TFT 这个结构体的 TFT_CMD 就映射在(0x6C000000 | 0x000007FE)这个地址上面, 这个时候, 地址线 A10 是为 0 的, 同时, TFT 这个结构体的 TFT_DATA 自动映射到了地址 0x6C000800 上面, 0x6C000800 也就是 (0x6C000000 | 0x000007FE) + 2,为什么加 2 呢?也因为我们定义的 TFT_CMD 是 16 位,在 FSMC 上面的地址对应的存储长度是 8 位,16 位也就 2 地址。

此时可能有同学会问:(0x6C000000 | 0x000007FE)把它转换成二进制后很容易发现刚好对应A10的是1,怎么会是零呢?注意我们定义的是16位模式。我们知道外部设备的内部AHB地址线每个地址对应一个字节单元。也就是如果模式是16位的那么最大可访问的32MB的地址空间对应地址线为A25-A1,也就是自动向右移了一位。

相关问答

stm32怎么判断是f1还是f4?

F4的ADC最大采样频率为2.4Msps,3路交替采样可到7.2Msps。F1只有12个DMA通道,F4有16个DMA通道。F4的每个DMA通道有4*32位FIFO,F1没有FIFO。F1的SPI...

变频器上ma和 mc 接线端子的作用?

MA,MB,MC一般就叫报警输出,MAMC为常开,MBMC为常闭.当变频器报警后此路输出动作(肯定是串联),不会影响变频器单独的复位重启.但动作后会影响设备正常工作,是作...

(焦)等效的是()A.N・mB.w/ mC .w・sD.N・s_作业帮

[最佳回答]A、由公式:W=Fs,W的单位:J,F单位:N,s单位:m,可知:1J=1N•m,即N•m与功的单位J等效,故A正确;B、W是功率单位,m是长度单位,Wm不可能表示J,故B错误;C、...

OSD全称是什么啊?-ZOL问答

OSD是on-screendisplay的简称,即屏幕菜单式调节方式。一般是按Menu键后屏幕弹出的显示器各项调节项目信息的矩形菜单,可通过该菜单对显示器各项工作指标包括色...

同一个项目分别用stm32和51单片机会有什么不同?

在项目开发过程中,我们经常会遇到需要单片机选型,所以我们常常会根据项目功能需求来选择合适的单片机品牌和型号。常见的51内核单片机和STM32单片机也会是我们...

在线的老铁帮个忙呗!!性价比高STM公司,STM排名怎么样大家...

[回答]STM32F103里面挑,你去www.stmcu.org看资料,淘宝看价格M3内核降低了系统存储要求,同时快速的中断处理能够满足控制领域的高实时性要求,使基于该内核...

用STM32挂接的最大 Nand Flash到多少?

看下STM32f103的FSMC寻址地址是从0x70000000到0x8FFFFFFF就是8*64M的nandflashbank2,bank3还支持SRAM看下STM32f103的FS...

飞思卡尔芯片命名规则?

MC9S12Dх256BхххE(1)(2)(3)(4)(5)(6)(7)(8)(9)(1)表示产品状态,共有MX,XC,PC,KMC,KXC等5种。其中MC表示完全合格品;XC表示部分合格品,...

aeroflyfsglobal怎么玩a320?

要在AeroflyFSGlobal中玩空客A320,您可以通过以下步骤来体验飞行:1.**启动模拟器**:确保您已经安装了AeroflyFSGlobal模拟器,并且在您的设备上运行它。.....

初二的物理公式的字母分别代表什么_作业帮

[回答]力1、压强:p=F/Sp表示压强,单位帕斯卡(简称帕,符号Pa)F表示压力,单位牛顿(N)S表示受力面积,单位平方米.2、液体压强和浮力:f=肉gh3、密度ρ=m/vρ...

 五洲风情  华为总裁张文林 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部