zoukankan      html  css  js  c++  java
  • OK6410 NandFlash硬件初体验

    参照韦东山的S3C6410裸机视频,对6410的DDR进行了讲解并初始化,下面将对NandFlash进行分析,我的OK6410的NandFlash大小为2G,目的在于对NandFlash有个了解,并为后面写NandFlash的Linux下的驱动做准备。

    一、 首先先来看看核心板的原理图

    image

    我们发现数据线才有8条,而并没有地址信号,所以该8条线一定是可以传数据,也可以传地址。而地址线肯定又不够,那么,地址肯定又是多次发出的。从datasheet可以看到它要发出5个周期的地址。那怎样分别是命令还是地址?

            CLE——Command Locked Enable 当该引脚输入为高电平,则发出的是命令

            ALE——Address Locked Enable  当该引脚输入为高电平,则发出的是地址

            当两个引脚输入为低电平时,8条总线上传输的是数据。

            CEn为片选信号,因为NandFlash与DDR共用数据线,因此需要选中是用DDR还是NandFlash

            WE和RE为是读还是写。

            RNB表示烧写状态,当该引脚输出为高电平时,表示已经烧写完成,进入ready状态;当为低电平,表忙状态。

          如何访问NandFlash?

         那就需要参照datasheet的参考时序:

    image

    因为6410内部集成NandFlash控制器,因此控制NandFlash就很简单,只需控制Nandflash控制器即可。步骤为:

    (1)初始化NandFlash控制器

         a. 发出片选信号——nCE

    (2)发出命令

        对于6410,因为有NandFlash控制器,只需把命令写到NFCMD寄存器,如果没有NandFlash控制器,需要进行以下步骤:

         a.先把数据驱动到data0~7数据线上

         b. 使CLE输出1

         c.使WE从0变为1

    (3)发出地址

         对于6410,因为有NandFlash控制器,只需把命令写到NFADDR寄存器,如果没有NandFlash控制器,需要进行以下步骤:

         a.先把地址驱动到data0~7数据线上

         b. 使ALE输出1

         c.使WE从0变为1

    (4)发数据

          对于6410,因为有NandFlash控制器,只需把命令写到NFDATA寄存器,如果没有NandFlash控制器,需要进行以下步骤:

          a.先把数据驱动到data0~7数据线上

          b. 使CLE输出0

          c. 使ALE输出0

          d.使WE从0变为1

    (5)读数据

          对于6410,因为有NandFlash控制器,只需把命令写到NFDATA寄存器,如果没有NandFlash控制器,需要进行以下步骤:

          a. 使RE输出0

          b. 等待tRAE

          c. NandFlash数据驱动到data0~7,6410便可以读数据

    下面看看NandFlash的访问周期:

    image

    其中,行地址表示访问哪一页,列地址表示访问哪个地址,上图中,3、4、5表示访问哪一页,1、2表示访问这页的哪个地址。

    现在知道怎样操作NandFlash了,从硬件上也知道它的结构,后面我们来写NandFlash驱动就更容易了!

  • 相关阅读:
    hdu 2819 Swap
    匈牙利算法
    hdu 1281 棋盘游戏
    hdu 2444 The Accomodation of Students(最大匹配 + 二分图判断)
    hdu 1045 Fire Net(最小覆盖点+构图(缩点))
    Python实现时钟
    挥之不去的DDOS
    随机数
    wchar_t的用法
    Visual Studio函数被警告安全,如何修改
  • 原文地址:https://www.cnblogs.com/lixiaoming90/p/2986163.html
Copyright © 2011-2022 走看看