STM3嵌入式FSMC地址映射

STM3嵌入式FSMC地址映射

想必现在有很多小伙伴对于STM3嵌入式FSMC地址映射这方面的内容都很感兴趣,此刻老赵也是在网络上收集了一些关于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外部存储器

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

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

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

8080接口 模式

typedef struct

{

u16 TFT_CMD;

u16 TFT_DATA;

} TFT_TypeDef;

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

那么 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,也就是自动向右移了一位。


比丘资源网 » STM3嵌入式FSMC地址映射

提供最优质的资源集合

立即查看 了解详情