STM32 外扩 SRAM

STM32F103ZET6 自带了 64K 字节的 SRAM,对一般应用来说,已经足够了,不过在一些对内存要求高的场合,STM32 自带的这些内存就不够用了。比如跑算法或者跑 GUI 等,就可能不太够用

IS62WV51216 简介

IS62WV51216 是 ISSI(Integrated  Silicon  Solution,  Inc)公司生产的一颗 16 位宽 512K(512*16,即 1M 字节)容量的 CMOS 静态内存芯片。该芯片具有如下几个特点:

l 高速。具有 45ns/55ns 访问速度。

l 低功耗。

l TTL 电平兼容。

l 全静态操作。不需要刷新和时钟电路。

l 三态输出。

l 字节控制功能。支持高/低字节控制。

看看实现 IS62WV51216 的访问,需要对 FSMC进行哪些配置。 这里就做一个概括性的讲解。步骤如下:

1)使能 FSMC 时钟,并配置 FSMC 相关的 IO 及其时钟使能

要使用 FSMC,当然首先得开启其时钟。然后需要把 FSMC_D0~15,FSMCA0~18 等相关IO 口,全部配置为复用输出,并使能各 IO 组的时钟。

使能 FSMC 时钟的方法:

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE);

对于其他 IO 口设置的方法前面讲解很详细,这里不做过多的讲解。

2)设置 FSMC BANK1 区域 3

此部分包括设置区域 3 的存储器的工作模式、位宽和读写时序等。我们使用模式 A、16 位宽,读写共用一个时序寄存器。使用的函数是:

void FSMC_NORSRAMInit(FSMC_NORSRAMInitTypeDef* FSMC_NORSRAMInitStruct)

3)使能 BANK1 区域 3

使能 BANK 的方法跟前面 LCD 实验也是一样的,这里也不做详细讲解,函数是:

void FSMC_NORSRAMCmd(uint32_t FSMC_Bank, FunctionalState NewState);

通过以上几个步骤,我们就完成了 FSMC 的配置,可以访问 IS62WV51216 了,这里还需要注意,因为我们使用的是 BANK1 的区域 3,所以 HADDR[27:26]=10,故外部内存的首地址为 0X68000000。

时间: 2024-10-03 07:26:44

STM32 外扩 SRAM的相关文章

stm32f103vct6外扩sram芯片

STM32F103是一款高性价比.多功能的单片机,配备常用的32位单片机片外资源,基于ARM Cortex-M3的32位处理器芯片,片内具有256KB FLASH,48KB RAM ( 片上集成12Bit A/D.D/A.PWM.CAN.USB.SDIO.FSMC等资源).是应用的较为广泛的一款单片机,内置48KB RAM在产品设计过程中如需要外扩SRAM存储器,采用一款由VTI科技公司推出的VTI7064专用STM32单片机外扩的串口SRAM,电源电压范围从4.5V到5.5V,其典型电压值为5

STM32F407 外扩SRAM

字节控制功能.支持高/低字节控制. 看看实现 IS62WV51216 的访问,需要对 FSMC进行哪些配置. 这里就做一个概括性的讲解.步骤如下: 1)使能 FSMC 时钟,并配置 FSMC 相关的 IO 及其时钟使能. 要使用 FSMC,当然首先得开启其时钟.然后需要把 FSMC_D0~15,FSMCA0~18 等相关IO 口,全部配置为复用输出,并使能各 IO 组的时钟. 使能 FSMC 时钟的方法: RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENAB

STM32 使用片外外扩内存调试

紧接上一篇,如果程序改来改去还是太大对不进STM32的内存怎么办?只能用下载到flash然后调试了吗?其实还可以下载到外扩的SRAM里,这样就几乎能搞定所有的普通程序了.唯一的缺点是在这种情况下,程序会跑得比较慢,whatever,能调试才是正道. 板子还是红牛默认配置,这货带了256x16bit的SRAM一片,接在FSMC上,下面介绍怎么配置成使用这片外扩SRAM进程程序调试. 首先要知道一点,红牛这个SRAM的基址是0x68000000,于是我们就把ROM的基址设置成这个.RAM就保持0x2

外部SRAM实验,让STM32的外部SRAM操作跟内部SRAM一样(转)

源:外部SRAM实验,让STM32的外部SRAM操作跟内部SRAM一样 前几天看到开源电子论坛(openedv.com)有人在问这个问题,我特意去做了这个实验,这样用外部SRAM就跟用内部SRAM一样,不用自己去申请内存,也不用考虑什么内存地址,一切让编译器自己去解决. 废话不多说,我直接拿原子哥的战舰开发板库函数版的外部SRAM实验来修改.在库函数的system_stm32f10x.c这个初始化文件当中其实就已经有外部SRAM的初始化,我们只要增加“#define DATA_IN_ExtSRA

FlexBus外扩PSRAM 应用实例详解

前段时间项目遇到瓶颈,片内RAM空间不足,想要解决这个问题要么换更大RAM的MCU,要么就外扩PSRAM.可惜所用的K21最大就128Kb,没有更大的了,所以只有选择外扩.方案选择主要有两个问题需要考虑:1.PSRAM的数据位数:2.是否使用锁存器.由于IO口资源有限,同时为保证片外PSRAM的速度.最终的方案选择:16位数据的PSRAM,地址数据复用,两个锁存器切换数据地址方案.由于在网上没有找到先例,所以硬件接法有很多不确定.现在分享给坛子里的小伙伴们,欢迎指教,大牛勿喷喔. 相信看这篇文章

AM335X开发板外扩GPIO资源如何使用?

米尔MYD-AM335X-J开发板J11端子的外扩GPIO怎么才能使用,对应的GPIO定义或者引脚是多少?米尔技术支持回答:这个只需要配置一个设备树即可.参照下面的方式利用TI的pinmux工具进行配置.配置完之后就可以使用sysfs控制gpio了.具体的管脚定义可以结合底板的原理图和01-Documents\UserManual\Chinese\MYC_J335X PIN List.pdf 来确定.&am33xx_pinmux {pinctrl-names = "default&quo

[00005]-[2015-08-11]-[00]-[STM32 Flash和SRAM]

STM32 CPU 内部有SRAM和FLASH 两个都可以跑程序,都可以定义变量,一般我们将程序烧写在Flash上面,起始地址0x8000000,而且对于Flash而言,每次写入都是以页为单位写入的 如果在这上面定义变量,变量的赋值操作会变得很麻烦,同时Flash相对于SRAM速度会比较慢,(虽然有DMA帮忙),但是不建议在FLash上面定义变量,所以编译器一般默认定义变量都是 在SRAM上面,也就是0x20000000,开始的地址......

Altium Designer——异形焊盘阻焊层外扩

首先放置两个焊盘 放置多边形覆铜 双击敷铜之后选择Solder Mask Expansion下的rule,这样就能进行开窗了. 外扩大小可根据PCB板厂和设计需求在设计规则中进行修改 原文地址:https://www.cnblogs.com/cosnux/p/9128712.html

FSMC stm32

1.FSMC机制 FSMC(Flexihie Static Memory Controller,可变静态存储控制器)是STM32系列中内部集成256 KB以上FlaSh,后缀为xC.xD和xE的高存储密度微控制器特有的存储控制机制.之所以称为"可变",是由于通过对特殊功能寄存器的设置,FSMC能够根据不同的外部存储器类型,发出相应的数据/地址/控制信号类型以匹配信号的速度,从而使得STM32系列微控制器不仅能够应用各种不同类型.不同速度的外部静态存储器,而且能够在不增加外部器件的情况下