STM32F1_FSMC读写外部SRAM

发布者:梦幻之光最新更新时间:2017-09-15 来源: eefocus关键字:STM32F1  FSMC  读写外部SRAM 手机看文章 扫描二维码
随时随地手机看文章

前言

今天总结“STM32F103  FSMC读写外部SRAM”,主要使用FSMC来控制外部SRAM,对SRAM进行读写的操作。本文章提供的工程对SRAM读写从操作类似于对FLASH读写操作。

关于STM32的FSMC(灵活的静态存储器控制器)这一部分内容比较实用,在实际应用中也是比较重要的(对于需要实用FSMC来说)。运用FSMC来控制外接器件比运用软件模拟来控制效率要高的多,而且操作简单。

也许对于初学者来说,对FSMC不了解,或不感兴趣。因为FSMC在实际开发中主要用于外扩RAM和ROM,初学者对于RAM和ROM的需求不高,基本上内部资源都够了。对于喜欢使用LCD屏的人应该了解FSMC,因为FSMC控制LCD也是一种很好的方式,市面上很多开发板上的LCD屏都兼容FSMC。

下载

今天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。

 

今天的软件工程下载地址(360云盘):

https://yunpan.cn/cSrN5SYtDcyBA  访问密码 47fb

 

STM32F10x的资料可以在我360云盘下载:

https://yunpan.cn/crBUdUGdYKam2   访问密码 ca90

 

内容讲解

工程概要说明: 提供工程是对外部SRAM读写,可以当做缓存(如:一个BUF)来使用,但并不是芯片的RAM(运行内存),只是对SRAM进行读写操作。

程序运行流程:上电写入外部SRAM数据“0 - 262143”(刚好是1M空间,4字节空间一数据),再通读读函数读出其数据,通过串口打印出来。这里每读一次串口打印一次数据,LED变化一次。(请观测现象)

 

提供的工程以简单为原则,详细中文注释,方便自己方便大家。

 

关于“STM32F103  片内FLASH编程” 我把重要的几点在下面分别讲述:

一、时钟


该函数位于bsp.c文件下面;

开启FSMC和需要使用引脚的时钟。

 

二、FSMC引脚配置


该函数位于fsmc.c文件下面;

使用了FSMC的引脚都须配置为“GPIO_Mode_AF_PP”,否则不能使用(感兴趣的可以试试)。对于NE3就是:NOR/PSRAM3,我测试的工程是使用FSCM存储块1(下图)的NOR/PSRAM3。所以我测试工程里面的地址是“0x68000000”,其实这个地址有讲究的,请看最后重点。

 

 

三、FSMC配置


该函数位于fsmc.c文件下面;

这里的配置和你的SRAM有一点的关联(速度、数据宽度等)。

 

三、外部SRAM写数据



该函数位于fsmc.c文件下面;

对1M的SRAM写数据(为了测试),方便下面读操作。

 

四、外部SRAM读数据

 


该函数位于fsmc.c文件下面;

对1M的SRAM读数据,通过串口打印出来写入的数据,每读一次,打印一次,中间有个延时,所以整个读取的过程时间比较长。

这个地址可以修改,或者选择一段来读取测试也行。希望看到的人都亲自修改程序来测试一下,方便记忆和巩固。

 

五、今天的重点

A.关于地址的问题,今天提供的工程外部SRAM地址是“0x68000000”(宏定义在fsmc.h里),善于发现问题和动手的人会发现一个问题,我将这个地址改为“0x68100000”或“0x68200000”测试的效果都一样。我告诉你答案,效果确实是一样的,原因就在于外部SRAM容量“SRAM_EXT_SIZE”大小是1M,而“0x00100000”刚好是1M,这里的地址溢出部分刚好抵消了,所以为什么修改地址也是一样的效果。但地址必须在存储块1的NOR/PSRAM3区域。

B.今天是自己通过标准库来配置的FSMC,其实在“system_stm32f10x.c”文件里面有使用寄存器直接配置FSMC的源代码,感兴趣的朋友可以看一下,今天使用标准库配置其实也是希望大家数据各个参数的功能作用。其实,希望大家在熟悉配置之后还是使用“system_stm32f10x.c”里的配置,毕竟这是官方提供的,它这样配置效率也比较高。

 

说明

今天提供的软件工程基于STM32F103大容量芯片,中等及小容量芯片没有FSMC功能,自然也不能使用。其实只要适当修改工程的部分配置,STM32F1有FSCM功能的芯片都适用。


关键字:STM32F1  FSMC  读写外部SRAM 引用地址:STM32F1_FSMC读写外部SRAM

上一篇:STM32F1_片内FLASH编程
下一篇:STM32F1_外部SRAM作为运行内存

推荐阅读最新更新时间:2024-03-16 15:37

stm32专题二十:FSMC结构体分析
FSMC结构体: 控制FSMC使用SRAM存储器时主要是配置时序寄存器以及控制寄存器,利用ST标准库的SRAM时序结构体以及初始化结构体可以很方便地写入参数。 时序结构体配置: SRAM初始化结构体配置: 硬件连接: 操作的时候,就直接进行指针操作,向相应的地址写入和读出就行了,非常简单。 sram.c #include ./sram/sram.h /** * @brief 初始化控制SRAM的IO * @param 无 * @retval 无 */ static void SRAM_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitSt
[单片机]
stm32专题二十:<font color='red'>FSMC</font>结构体分析
STM32F407vet6使用FSMC驱动LCD屏
我的方法也特别简单。高手勿喷。 首先,你得稍微了解一下FSMC的基本原理,就是说它是怎么用的,怎么配置,为什么能这么用。这个东西可以看看STM32F4的参考手册。这里不具体说了。(其实是因为我也不是太懂 ) 我使用的是野火开发板的屏,因为想用开发板提供的程序直接移植。(小白就只能干这种事)因为买的最小系统板是100脚封装的,所以在使用上有点小问题了。我在网上查了好多关于怎么在100引脚的板子上用FSMC上驱动LCD,没有找到合适的答案,既然自己运气好点,调出来了,那么就分享一下。即使不能帮到看到的人,起码能给遇到和我相同问题的人一点安慰!慢慢调,能调出来的! FSMC的数据线D0-D15,100封装的也有,直接连上就好
[单片机]
STM32F407vet6使用<font color='red'>FSMC</font>驱动LCD屏
STM32F1笔记(十三)SPI
SPI:Serial Peripheral interface,串行外围设备接口。 SPI接口一般使用4条线通信: MISO主设备数据输入,从设备数据输出。 MOSI主设备数据输出,从设备数据输入。 SCLK时钟信号,由主设备产生。 从图中可以看出,主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。寄存器通过MOSI信号线将字节传送给从机,从机也将自己的移位寄存器中的内容通过MISO信号线返回给主机。这样,两个移位寄存器中的内容就被交换。外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来
[单片机]
<font color='red'>STM32F1</font>笔记(十三)SPI
STM32-FSMC-NOR FLASH
一、基本概念(详细内容见st网站stm32应用笔记AN2784) 1. FSMC配置 控制一个NOR闪存存储器,需要FSMC提供下述功能: ●选择合适的存储块映射NOR闪存存储器:共有4个独立的存储块可以用于与NOR闪存、SRAM和PSRAM存储器接口,每个存储块都有一个专用的片选管脚。 ●使用或禁止地址/数据总线的复用功能。 ●选择所用的存储器类型:NOR闪存、SRAM或PSRAM。 ●定义外部存储器的数据总线宽度:8或16位。 ●使用或关闭同步NOR闪存存储器的突发访问模式。 ●配置等待信号的使用:开启或关闭,极性设置,时序配置。 ●使用或关闭扩展模式:扩展模式用于访问那些具有不同读写操作时序的存储器。 因为NOR闪存/SRA
[单片机]
STM32F1_FSMC读写外部SRAM
前言 今天总结“STM32F103 FSMC读写外部SRAM”,主要使用FSMC来控制外部SRAM,对SRAM进行读写的操作。本文章提供的工程对SRAM读写从操作类似于对FLASH读写操作。 关于STM32的FSMC(灵活的静态存储器控制器)这一部分内容比较实用,在实际应用中也是比较重要的(对于需要实用FSMC来说)。运用FSMC来控制外接器件比运用软件模拟来控制效率要高的多,而且操作简单。 也许对于初学者来说,对FSMC不了解,或不感兴趣。因为FSMC在实际开发中主要用于外扩RAM和ROM,初学者对于RAM和ROM的需求不高,基本上内部资源都够了。对于喜欢使用LCD屏的人应该了解FSMC,因为FSMC控制LCD也是一种很好的方式
[单片机]
STM32F1_<font color='red'>FSMC</font><font color='red'>读写</font><font color='red'>外部</font><font color='red'>SRAM</font>
STM32F1/F7使用HAL库DMA方式输出PWM详解
什么是PWM? 核心提示:文章目录一. STM32的DMA PWM原理1. DMA简介2. DMA方式输出PWM是怎么回事3. HAL库DMA配置PWM的几个函数二. STM32CubeMx配置 DMA PWM三. 波形调试过程分析一. STM32的DMA PWM原理最开始疑惑过STM32如何才能实现精确数量的脉冲输出从而控制步进电机,直到做WS2812B灯珠的驱动程序时才知道原来有DMA-PWM模式。使用DMA输出PWM可以精确控制脉冲数量,且可以精确控制脉冲周期与占空比,更重要的是使用DMA传输不消耗CPU资源。 文章目录 一. STM32的DMA PWM原理1. DMA简介2. DMA方式输出PWM是怎么回事3. HAL库D
[单片机]
STM32F407 FSMC 驱动液晶显示
前端时间对液晶屏很感兴趣,驱动了好多屏,这里主要讲下用FSMC方式驱动16位并口屏幕的方法,因为STM32 FSMC功能的限制,最多只能驱动16位并口,18位,24位的可以用端口模拟的方式或者牺牲颜色数量用16位FSMC驱动。 配置Cubemx 注意选择的A6用于区分指令和数据和后面的地址计算有关系, 时序的话一开始可以用默认的(最大值)调通了再慢慢改小,看看极限是多少。 自己编写TFT的驱动 液晶按照挂载的区域和A6引脚来计算地址 #define Bank1_LCD_CMD ((uint32_t) 0X60000000) #define Bank1_LCD_DATA ((uint32_t) 0X60000080)
[单片机]
STM32F407 <font color='red'>FSMC</font> 驱动液晶显示
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved