0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32F1_ FSMC读写外部SRAM

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-04-08 10:02 次阅读

前言

今天总结“STM32F103FSMC读写外部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功能,自然也不能使用,只要修改flash.h文件一个宏(页大小就可以)。其实只要适当修改工程的部分配置,STM32F1有FSCM功能的芯片都适用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • sram
    +关注

    关注

    6

    文章

    742

    浏览量

    113905
  • STM32F10
    +关注

    关注

    0

    文章

    43

    浏览量

    15520
  • FSMC
    +关注

    关注

    0

    文章

    54

    浏览量

    37933
收藏 人收藏

    评论

    相关推荐

    请问一个大数组是不是不能同时跨用内外部SRAM

    0x2000001cData1stm32f4xx_hal.o(.data) SystemCoreClock0x20000020Data4system_stm32f4xx.o(.data) hsram10x20000024Data 80
    发表于 03-26 07:06

    FSMC模拟8080刷OLED从F1移植到F4后无法使用怎么解决?

    1STM32F103ZET6上配置的FSMC模拟8080用于刷新OLED(256*64),使用正常;2、移植至STM32F412RET6后无法使用,时钟、复用、
    发表于 03-19 07:16

    STM32实例教程,带你了解FSMC的功能和用法[‸]()

    PC 存储卡。STM32通过FSMC可以与SRAM、 ROM、 PSRAM、 NOR Flash和NANDFlash等存储器的引脚直接相连。STM32F1
    发表于 03-15 15:53

    关于雅特力AT32F403A XMC复用模式驱动SRAM芯片

    描述:AT32F403A引脚比较紧张,XMC(类似于STM32 FSMC)只支持复用模式,就是A0-A15和D0-D15都用一个引脚,如果要用,只能用锁存器将地址锁存,实现地址线和数据线的分离,目前
    发表于 01-04 10:46

    sram读写电路设计

    SRAM (Static Random Access Memory)是一种高速、随机访问的存储器,它以其快速的读写操作和不需要刷新的特点而受到广泛使用。本文将详细介绍SRAM读写电路
    的头像 发表于 12-18 11:22 675次阅读

    STM32F1系列MCU硬件电路FSMC接口设计

    FSMCSTM32F1提供的一个静态存储控制器,是MCU用来扩展存储器,可用来驱动SRAM、Nor Flash、NAND Flash。这里先简单讲解下这三种存储器的应用场合。
    发表于 09-27 14:33 1290次阅读
    <b class='flag-5'>STM32</b>F1系列MCU硬件电路<b class='flag-5'>FSMC</b>接口设计

    请问FSMC外扩SRAM数据之间是怎么传送的?

    FSMC外扩SRAM数据之间是怎么传送的?先保存在FSMC再传送外扩SRAM
    发表于 09-27 06:03

    使用MM32F3270 FSMC驱动外部NOR Flash

    使用MM32F3270 FSMC驱动外部NOR Flash
    的头像 发表于 09-21 17:37 544次阅读
    使用MM32F3270 <b class='flag-5'>FSMC</b>驱动<b class='flag-5'>外部</b>NOR Flash

    使用大容量STM32F10xxx的FSMC驱动外部的存储器

    电子发烧友网站提供《使用大容量STM32F10xxx的FSMC驱动外部的存储器.pdf》资料免费下载
    发表于 09-21 10:03 0次下载
    使用大容量<b class='flag-5'>STM32</b>F10xxx的<b class='flag-5'>FSMC</b>驱动<b class='flag-5'>外部</b>的存储器

    使用SRAM来代指对SRAM和PSRAM芯片的支持

    使用MM32F3270 FSMC驱动SRAM
    的头像 发表于 09-18 16:29 1063次阅读
    使用<b class='flag-5'>SRAM</b>来代指对<b class='flag-5'>SRAM</b>和PSRAM芯片的支持

    STM32F2系列概览

     高达1M字节的片上闪存  高达128K字节的内嵌SRAMFSMC:灵活的高速外部存储器接口  用于扩展片外存储器和外设
    发表于 09-13 08:27

    STM32 FSMC操作SRAM的步骤简析

    本次操作的SRAM的型号是IS62WV51216,是高速,8M位静态SRAM。它采用ISSI(Intergrated Silicon Solution, Inc)公司的高性能CMOS技术,按照512K个字(16)位进行组织存储单元。
    发表于 07-22 14:58 1178次阅读
    <b class='flag-5'>STM32</b> <b class='flag-5'>FSMC</b>操作<b class='flag-5'>SRAM</b>的步骤简析

    浅析STM32 FSMC操作LCD的过程

    FSMC称为灵活的静态存储器,它能够与同步或异步存储器和16位PC存储器卡连接,STM32F4的FSMC接口支持包括SRAM、NAND FLASH、NOR FLASH和PSRAM等存储
    发表于 07-22 14:46 2364次阅读
    浅析<b class='flag-5'>STM32</b> <b class='flag-5'>FSMC</b>操作LCD的过程

    微控制器的FSMC到底是咋回事?(下)

    摘要:上一篇文章我们具体讲解了FSMC的原理配置,这一章主要是关于使用FSMCSRAM初始化流程,以及使用STM32CubeMX对FSMC
    发表于 05-14 10:27 1462次阅读
    微控制器的<b class='flag-5'>FSMC</b>到底是咋回事?(下)

    【正点原子STM32战舰V4开发板免费试用】使用外部 SRAM 存放显示缓存

    800*480分辨率的屏幕需要的缓存较大,放在外部SRAM里面更为方便 用cubemx配置FSMC驱动SRAM 先打开战舰V4的原理图查看开发板上
    发表于 05-08 20:01