2440裸机-12-3内存控制器与SDRAM_分析NOR FLASH时序

转载:初识内存与SDRAM

1.分析读写NOR FLASH的读写时序

看一下S3C2440的数据手册中内存控制器这部分:
读时序:
在这里插入图片描述

写时序:

在这里插入图片描述

1.1为什么需要通过编程来控制读写时序呢?

因为2440可以接很多种不同型号的内存芯片,这些芯片的性能有差别,有些性能很强,只要我发出读信号,立马就可以读取内存数据,这样就可以把等待时间减少,加快内存读取速度,假如性能比较弱的话就需要去调整时间了,所以说根据外接不同的芯片需要设置不同的时序时间,而这个时间需要CPU和外接内存时序匹配才可以,所以还需要看外接内存NOR FLASH 的读取时序图。

1.2 S3C2440如何能读写NOR FALSH的数据?

答:使2440发出的读写时序,满足NOR FLASH 的读写时序

在这里使用NOR FALSH的芯片型号是:MX29LV160DBTI,查看他的数据手册。

先来看几个名词,时序图的交流特性:

在这里插入图片描述

1.2.1NOR FLASH 读时序

在这里插入图片描述

1.2.2 设计一个程序去读NOR FLASH

我们的目的是需要2440的读时序能满足NOR FALSH的读时序、

为了方便,我们让2440同时发出片选信号,读信号,和地址信号。保持至少70ns的时间,也就是设置下图的Tacc大于70ns,

其他的都可以默认设置为0,即可满足nor flash的读取要求.
在这里插入图片描述

1.2.3 程序具体配置

第一步,设置BANKCON0寄存器(NOR FLASH 接在片选0)

在这里插入图片描述

在这里插入图片描述
第二步,位宽寄存器:采用默认设置
因为bank0为只读,通过OM[1:0]引脚硬件配置
在这里插入图片描述
在这里插入图片描述

1.2.4 代码(在UART程序上添加)

main.c

        /* main.c */
        
        #include "my_printf.h"
        #include "uart.h"
        #include "SetTacc.h"
 
        int main()
        {
            char c;
            
            Uart0Init();
            puts("Enter the value of tacc:");
 
            while (1)
            {
                c = getchar();    
                if(c == '\n')
                    putchar('\r');
                if(c == '\r')
                    putchar('\n');
                putchar(c);  /* 回显输入语句 */
 
                if (c >= '0' && c <= '7')
                    SetTacc(c - '0');    /* 根据输入设置Tacc的值,当输入0-4时Tacc<8clock,程序无法工作 ;c-'0'是是类型转换*/
                else
                    printf("Error val,tacc should betwen 0-7");
            }
            
            return 0;
        }
        
        /* SetTacc.c */
        
        #include "s3c2440_soc.h"
 
        void SetTacc(int val)
        {
            BANKCON0 = val << 8;    
        }

SetTacc.h


#ifndef _SETTACC_H
#define _SETTACC_H

void SetTacc(int val);

#endif

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值