第11课-NAND FLASH

本文详细介绍了NAND FLASH的操作原理,包括读ID、读数据等操作,并通过S3C2440芯片展示了NAND FLASH的初始化、时序控制。此外,还探讨了NAND FLASH的数据读取、擦除和烧写过程,以及如何实现从NAND FLASH启动。
摘要由CSDN通过智能技术生成

注:以下内容学习于韦东山老师arm裸机第一期视频教程


一.NAND_FLASH操作原理

    1.1 NAND FLASH是一个存储芯片

        那么: 这样的操作很合理"读地址A的数据,把数据B写到地址A"

        问1. 原理图上NAND FLASH和S3C2440之间只有数据线,

             怎么传输地址?

        答1.在DATA0~DATA7上既传输数据,又传输地址

             当ALE为高电平时传输的是地址,

        问2. 从NAND FLASH芯片手册可知,要操作NAND FLASH需要先发出命令

             怎么传入命令?

        答2.在DATA0~DATA7上既传输数据,又传输地址,也传输命令

             当ALE为高电平时传输的是地址,

             当CLE为高电平时传输的是命令

             当ALE和CLE都为低电平时传输的是数据

        问3. 数据线既接到NAND FLASH,也接到NOR FLASH,还接到SDRAM、DM9000等等

             那么怎么避免干扰?

        答3. 这些设备,要访问之必须"选中",

             没有选中的芯片不会工作,相当于没接一样

        问4. 假设烧写NAND FLASH,把命令、地址、数据发给它之后,

             NAND FLASH肯定不可能瞬间完成烧写的,

             怎么判断烧写完成?

        答4. 通过状态引脚RnB来判断:它为高电平表示就绪,它为低电平表示正忙

        问5. 怎么操作NAND FLASH呢?

        答5. 根据NAND FLASH的芯片手册,一般的过程是:

             发出命令

             发出地址

             发出数据/读数据

                      NAND FLASH                                    S3C2440

        发命令    选中芯片                   

                      CLE设为高电平                              NFCMMD=命令值     

                      在DATA0~DATA7上输出命令值

                      发出一个写脉冲

                    

        发地址    选中芯片                                       NFADDR=地址值

                      ALE设为高电平

                      在DATA0~DATA7上输出地址值

                      发出一个写脉冲

        发数据    选中芯片                                       NFDATA=数据值

                      ALE,CLE设为低电平

                      在DATA0~DATA7上输出数据值

                      发出一个写脉冲

        读数据    选中芯片                                       val=NFDATA

                      发出读脉冲

                      读DATA0~DATA7的数据


        1.2用UBOOT来体验NAND FLASH的操作:


        1.2.1  读ID

                                                   S3C2440                       u-boot

            选中                           NFCONT的bit1设为0   md.l 0x4E000004 1; mw.l 0x4E000004  1

            发出命令0x90                   NFCMMD=0x90         mw.b 0x4E000008 0x90

            发出地址0x00                    NFADDR=0x00          mw.b 0x4E00000C 0x00

            读数据得到0xEC                 val=NFDATA             md.b 0x4E000010 1

            读数据得到device code      val=NFDATA             md.b 0x4E000010 1

            退出读ID的状态                 NFCMMD=0xff           mw.b 0x4E000008 0xff

                
        1.2.2 读内容: 读0地址的数据

            使用UBOOT命令:

            nand dump 0

            Page 00000000 dump:

                    17 00 00 ea 14 f0 9f e5  14 f0 9f e5 14 f0 9f e5

                                                           S3C2440                 u-boo

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值