你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 2209|回复: 0

【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第四十二章 外部SRAM实验

[复制链接]

50

主题

7

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2013-4-2 23:08:22 | 显示全部楼层 |阅读模式

<div style="padding-bottom: 5px; line-height: 1.5; background-color: rgb(255,255,255); margin: 0px; padding-left: 5px; padding-right: 5px; color: rgb(0,0,0); font-size: 12px; padding-top: 5px"><a name="_Toc342394325">42.1 IS62WV51216简介
IS62WV51216是ISSI(Integrated Silicon Solution, Inc)公司生产的一颗16位宽512K(512*16,即1M字节)容量的CMOS静态内存芯片。该芯片具有如下几个特点:
l  高速。具有45ns/55ns访问速度。
l  低功耗。
l  TTL电平兼容。
l  全静态操作。不需要刷新和时钟电路。
l  三态输出。
l  字节控制功能。支持高/低字节控制。
IS62WV51216的功能框图如图42.1.1所示:

图42.1.1 IS62WV51216功能框图

       图中A0~18为地址线,总共19根地址线(即2^19=512K,1K=1024);IO0~15为数据线,总共16根数据线。CS2和CS1都是片选信号,不过CS2是高电平有效CS1是低电平有效;OE是输出使能信号(读信号);WE为写使能信号;UB和LB分别是高字节控制和低字节控制信号;
战舰STM32开发板使用的是TSOP44封装的IS62WV51216芯片,该芯片直接接在STM32的FSMC上,IS62WV51216原理图如图42.1.2所示:

图42.1.2 IS62WV51216原理图

       从原理图可以看出,IS62WV51216同STM32的连接关系:
            A[0:18]接FMSC_A[0:18]
            D[0:15]接FSMC_D[0:15]
UB接FSMC_NBL1
LB接FSMC_NBL0
OE接FSMC_OE
WE接FSMC_WE
CS接FSMC_NE3
本章,我们使用FSMC的BANK1 区域3来控制IS62WV51216,关于FSMC的详细介绍,我们在第十八章已经介绍过,在第十八章,我们采用的是读写不同的时序来操作TFTLCD模块(因为TFTLCD模块读的速度比写的速度慢很多),但是在本章,因为IS62WV51216的读写时间基本一致,所以,我们设置读写相同的时序来访问FSMC。关于FSMC的详细介绍,请大家看第十八章和《STM32参考手册》。
IS62WV51216就介绍到这,最后,我们来看看实现IS62WV51216的访问,需要对FSMC进行哪些配置。步骤如下:
1)使能FSMC时钟,并配置FSMC相关的IO及其时钟使能。
    要使用FSMC,当然首先得开启其时钟。然后需要把FSMC_D0~15,FSMCA0~18等相关IO口,全部配置为复用输出,并使能各IO组的时钟。
2)设置FSMC BANK1 区域3的相关寄存器。
此部分包括设置区域3的存储器的工作模式、位宽和读写时序等。本章我们使用模式A、16位宽,读写共用一个时序寄存器。
3)使能BANK1区域3
最后,只需要通过FSMC_BCR寄存器使能BANK1,区域3即可。
通过以上几个步骤,我们就完成了FSMC的配置,可以访问IS62WV51216了,这里还需要注意,因为我们使用的是BANK1的区域3,所以HADDR[27:26]=10,故外部内存的首地址为0X68000000。      
<a name="_Toc342394327">42.3 软件设计
打开上一章的工程,首先在HARDWARE文件夹下新建一个SRAM的文件夹。然后新建sram.c和sram. h两个文件,将他们保存在SRAM文件夹下,并将这个文件夹加入头文件包含路径。
       打开sram.c文件,输入如下代码:
#include "sram.h"    
#include "usart.h"
//使用NOR/SRAM的 Bank1.sector3,地址位HADDR[27,26]=10
//对IS61LV25616/IS62WV25616,地址线范围为A0~A17
//对IS61LV51216/IS62WV51216,地址线范围为A0~A18
#define Bank1_SRAM3_ADDR    ((u32)(0x68000000)) 
//初始化外部SRAM
void FSMC_SRAM_Init(void)
{                                          
       RCC->AHBENR|=1CRH|=0XBBBBBBBB; //PORTE复用推挽输出  
       GPIOE->CRL&=0X0FFFFF00;
       GPIOE->CRL|=0XB00000BB;    
       GPIOF->CRH&=0X0000FFFF;
       GPIOF->CRH|=0XBBBB0000;     //PORTF复用推挽输出      
       GPIOF->CRL&=0XFF000000;
       GPIOF->CRL|=0X00BBBBBB;         
       GPIOG->CRH&=0XFFFFF0FF;
       GPIOG->CRH|=0X00000B00;     //PORTG复用推挽输出 PG10->NE3    
      GPIOG->CRL&=0XFF000000;
       GPIOG->CRL|=0X00BBBBBB; 
       //寄存器清零
       //bank1有NE1~4,每一个有一个BCR+TCR,所以总共八个寄存器。
       //这里我们使用NE3 ,也就对应BTCR[4],[5]。                             
       FSMC_Bank1->BTCR[4]=0X00000000;
       FSMC_Bank1->BTCR[5]=0X00000000;
       FSMC_Bank1E->BWTR[4]=0X00000000;
       //操作BCR寄存器       使用异步模式,模式A(读写共用一个时序寄存器)
       //BTCR[偶数]:BCR寄存器;BTCR[奇数]:BTR寄存器
<div style="margin: 5px 0px">       FSMC_Bank1->BTCR[4]|=1

《STM32开发指南》第四十二章 外部SRAM实验.rar

下载

575.77 KB, 下载次数: 8, 下载积分: ST金币 -1

实验37 外部SRAM实验.rar

下载

185.05 KB, 下载次数: 7, 下载积分: ST金币 -1

回复

使用道具 举报

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版