资讯
HOME
资讯
正文内容
fsmc nand 程序 一文读懂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,也就是自动向右移了一位。

相关问答

问:很多人说到的 MC FS 代表什么意思?

MC=MovieClip。动画片断。FS=FSCOMMAND,是FLASH的一个非常重要的一个命令集合。MC=MovieClip。动画片断。FS=FSCOMMAND,是FLASH的一个非常重要...

stm32怎么判断是f1还是f4?

F1采用CrotexM3内核,F4采用CrotexM4内核。F1最高主频72MHz,F4最高主频168MHz。F4具有单精度浮点运算单元,F1没有浮点运算单元。F4的具备增强的DSP指令...

英语翻译国家:意大利城市:米兰街道:VIADELLAMOSCOVA门牌号:16...

[回答]nazione:Italiacittà:Milanovia:viadellaMoscovanumero:16codicediavviamentopostale:20121

会51单片机,如何快速学习使用STM32单片机?

...对于自学者来说,尤其是从51单片机转过来的自学者来说,习惯了51单片机操作寄存器配置,学习stm32固件库是比较不习惯和困难的,尤其是对于C语言的指针和结构体理...

fs 100c和 fs 800 mc 的区别?

1.产品定位:FS100C和FS800MC都是摄像机,但FS100C更偏向于专业级用户,而FS800MC更适合家庭和个人用户。2.传感器:FS100C采用Super35mmCMOS传感器,而FS...

stm32为什么要配置系统时钟?

首先,stm32的性能强大,时钟频率快。片上资源丰富,io口多,有i2c,spi,sdio,fsmc,rtc等等。库函数丰富,方便操作。再加上移植了ucos和freertos等操作系统和...首.....

【热量单位焦耳怎么定义和力学中焦耳等于1N乘M一样吗】作业帮

[回答]在和我好好理解理解什么是能量.当我有能量时,我可以做一些事,比如说举起石头等等.也就是说能量就是我们做事情的根本.而能量并不会消失,我...实质...

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

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

怎么下载MCDU?

模拟飞行中的默认机都没有MCDU。建议使用FS2004然后再安装Pss的空客系列,这样就有MCDU了。模拟飞行中的默认机都没有MCDU。建议使用FS2004然后再安装Pss的空...

请问KG表示千克吗?那它与公斤的关系是什么?

================================补充一个:初中物理学过功是W=Fs,单位是N·m,也是焦耳,功和能的单位为什么一样?因为kg·m²/s²=kg·m·m/s²=kg...

 李响个人资料  卢娜洛夫古德 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

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

热线

188-0000-0000
专属服务热线

微信

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