首页 >> 大全

S3C2440—8.读写SDRAM

2023-08-30 大全 31 作者:考证青年

文章目录 三.读写SDRAM

SDRAM: ,同步动态随机存储器,同步是指内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写

一.内部结构

原理图如下:

存储逻辑结构:

可以看出SDRAM的内部是一个阵列,就像表格一样,其寻址方式是按照块、行、列来的,即先选定SDRAM芯片,然后发出块信号确定那一块,再发出行信号确定哪一行,再发出列信号确定哪一列。

CPU对SDRAM的访问可以分为以下几步:

看起来很简单,但是我们要考虑到,不同规格SDRAM对应着不同的寻址方式,因为不同的SDRAM可能行列数不一样,对时序要求不一样,所以在访问SDRAM之前,我们要配置存储控制器中的一些寄存器来匹配SDRAM!!!

二.相关寄存器

存储控制器一共有13个寄存器,6种寄存器,对BANK0~BANK5进行访问时,只需要配置和寄存器,但是对SDRAM访问,不仅仅需要对这俩个寄存器进行配置,还需要额外配置4个寄存器。

下面以访问SDRAM为例子介绍一下这些寄存器(按照芯片手册中的顺序来介绍):

读写障碍_写关于读书的作文_

位宽&等待控制寄存器

所以,寄存器要或运算的值为:

BANK控制寄存器,用来控制外接设备的访问时序的,BANK0~BANK5默认

对于SDRAM的访问,我们需要配置的就是图中阴影部分的:

所以,寄存器要或运算的值为:

刷新控制寄存器,用来控制SDRAM的刷新模式和刷新频率。我们知道,SDRAM中的存储阵列需要不断的刷新来保证数据不丢失,所以就要配置刷新控制寄存器。

所以,寄存器要或运算的值为:

写关于读书的作文_读写障碍_

MRSR

SDRAM模式设置寄存器

只有CL的值是可以修改的,查询芯片手册:

可知,CL可以是或者是,保险起见,值为:011

所以,MRSR寄存器要或运算的值为:

/**********************************************************************************************************************/

综上所述,对SDRAM初始化的代码为:

void SDRAM_Init(void)
{/* 对BANK6进行配置 以访问SDRAM */BWSCON   |= 0x02000000;//对SDRAM使用数据掩码、不使用WAIT信号、设置BANK6位宽32bitBANKCON6 = 0x00018005;//BANK6外接SDRAM、行列信号间延迟3clocks、设置列地址位数REFRESH  = 0x008c07a3;//配置刷新模式及刷新计数值BANKSIZE = 0x000000b1;//设置BANK6大小为64MBMRSRB6   = 0x00000030;//设置CL为3clocks
}

三.读写SDRAM

对SDRAM进行配置之后,进行读写操作,看看写进去的值和读出来的值是否统一。

测试就直接写在main.c中吧:

#include "s3c2440_soc.h"
#include "uart.h"void SDRAM_Init(void)
{/* 对BANK6进行配置 以访问SDRAM */BWSCON   |= 0x02000000;//对SDRAM使用数据掩码、不使用WAIT信号、设置BANK6位宽32bitBANKCON6 = 0x00018005;//BANK6外接SDRAM、行列信号间延迟3clocks、设置列地址位数REFRESH  = 0x008c07a3;//配置刷新模式及刷新计数值BANKSIZE = 0x000000b1;//设置BANK6大小为64MBMRSRB6   = 0x00000030;//设置CL为3clocks
}int SDRAM_Test(void)
{/* BANK6 基地址0x30000000 */volatile unsigned char *p = (volatile unsigned char *)(0x30000000);int n;/* 写入20Byte数据 */for( n=0;n<20;n++ ){*(p+n) = 0xbb;}for( n=0;n<20;n++ ){if( 0xbb != *(p+n) )return 0;}return 1;
}int main(void)
{SDRAM_Init();uart0_init();if( SDRAM_Test() )puts("OK!!!\n");elseputs("NOT OK!!!\n");return 0;}

代码亲测可以。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了