上午又犯精神病了,现在来整理一下SRAM:)
STM32F407ZGT6自带了192K的SRAM,好了,习惯性的先来解释一下SRAM拿来干嘛用。
之前的flash章已经阐明了我的F4的代码是存储在flash中的,在keil中也查看了,是从flash主存储器中的扇区0开始存储的(所以若是要将flash模拟成EEPROM存储数据的话,最好是从扇区11,也就是最后一个扇区开始存起,防止将原来的代码段给覆盖了,什么,你要问为什么不能覆盖?覆盖了的话原来的代码段就消失了,原本好好的一整段程序就被截肢了,自行脑补resident evil7里的玛格丽特。。说正经的就是程序会跑到某一步就不走了,嗯:)。好了,bb完flash之后,那么SRAM又是什么呢?
SRAM:Static Random Access Memory,静态随机存取存储寄存器,和flash不同的是,SRAM掉电了的话,之前存储在SRAM里的数据就消失了,保不住。所以SRAM不能用来给我们存储数据用,只能用来当作高速缓存。除了SRAM,还有一种DRAM,同样也是掉电易失,相比于SRAM,DRAM每隔一段时间,要刷新充电一次,否则内部的数据即会消失,SRAM则不需要刷新充电(在系统上电之后SRAM中的数据是不会丢失的,DRAM则是就算系统上电之后还得不一会儿的刷新充电一下数据才得以保存),所以相对来说,SRAM的速度要比DRAM快,但是SRAM的物理体积较大,同容量的RAM,SRAM要比DRAM的物理体积大好多。
有时候系统自带的SRAM可能会出现不够用的情况,比如说跑GUI。。那么就得再外挂一片SRAM,这里以IS62WV51216为例,说一下怎样挂载并使用这片1M的SRAM:)
IS62WV51216:16bit宽512K,16*512K=1M字节,SRAM。功能框图如下:
显然,A0~A18为地址线,共19根地址线,相对应的,就有1M的字节可供寻址了。
沿着图往下看,VDD供电,GND接地,IO07和IO815一共16根数据线,支持16bit数据传输。
CS2为高电平有效的片选端,CS1为低电平有效的片选端,OE为低电平有效的输出使能端,WE为低电平有效的写使能端,UB为低电平有效的高字节控制信号,LB为低电平有效的低字节控制信号。
F4有FSMC模块,可以用FSMC来驱动这片SRAM。
首先查看原子哥F4板子上有关SRAM的原理图: