nand flash学习笔记一

Nand flash

原理图上有data0-data7 8个引角

容量为256M*8bit ,所以地址位应该有28,原理图上只有data0-data7,所以需要发出多次地址信号

1命令、地址、数据复用

2地址多次发出

Nand flash与内存不同,不能直接读写,要先发出命令,再发出地址,再读写数据

CLE 为高电平 data0-data7传输的是命令

ALE 为高电平 data0-data7传输的是地址

CLEALE两者都为低电平时,data0-data7传输的为数据

nWE=0,为低电平时,表示写

Nand flash 读取信息

查看K9F2G08U0A数据手册:

Function  1st Cycle  2nd Cycle   Acceptable Command during Busy

Read       00h      30h

nand flash学习笔记一_第1张图片

查看6410芯片手册

nand flash学习笔记一_第2张图片

1初始化nandflash控制器:时间参数/使能片选引角

  Nand flash          /         s3c6410

        nCE                    nCS2_NAND(Xm0CSn2/GPO0)

命令/地址/读数据

 发送命令:把命令写到NFCMMD寄存器

 发送地址:把地址写到NFADDR寄存器

 发送数据把数据写到NFDATA寄存器

 读数据NFDATA寄存器

Openjtag 操作nand flash

1id

  (1) 初始化:

     查看芯片手册

MEM_SYS_CFG 0x7E00_F120 R/W Configure memory subsystem  0x0000_0080

Xm0CSn[2] 

----1- SROMC CS2 

----0-OneNANDC CS0  

---- 0- NFCON CS0 

 设置MEM_SYS_CFG=0,让Xm0CSn[2]用作nand flash的片选信号

 Mdw 0x7E00F120

//memmory write word

 Mww 0x7E00F120  0 

  查看芯片手册 

  NFCONF  0x70200000  R/W  NAND Flash Configuration register  0xX000100X 

 设置时间参数

 Mww 0x70200000 0x8000777e

  (2) 发送使能信号

  查看芯片手册

  NFCONT 0x70200004  R/W NAND Flash control register  0x000100C6

 

Soft Lock  [16]  Soft Lock configuration 

0: Disable lock    1: Enable lock

Reg_nCE0  [1]  NAND Flash Memory Xm0CSn2 signal control 

0: Force Xm0CSn2 to low(Enable chip select) 

1: Force Xm0CSn2 to High(Disable chip select) 

Note: This value is only valid while MODE bit is 1 

MODE  [0]  NAND Flash controller operating mode 

0: NAND Flash Controller Disable (Dont work) 

1: NAND Flash Controller Enable 

   NFCONT(0x70200004) [0]  = 1  /* 使能nand flash控制器 */

   NFCONT(0x70200004) [1]  = 0  /* xm0csn[2]输出0 */

   NFCONT(0x70200004) [16] = 0  /* soft lock */

   

   mdw 0x70200004   /* 0x100c6 */

   mww 0x70200004  0xc5
(3) 发送读id命令

查看芯片手册:

NFCMMD 0x70200008 R/W NAND Flash command set register  0x00 

查看K9F2G08U0A数据手册:

Read ID 90h -

   //复位

  Mwb  0x70200008 0xff

 //0x90写到NFCMMD( 0x70200008)

 Mwb  0x70200008 0x90

(4) 发出地址0

 NFADDR  0x7020000C R/W  NAND Flash address set register  0x0000XX00

 //把把0写到NFADDR()

 Mwb 0x7020000C 0

(5) 读数据

 NFDATA 0x70200010  R/W NAND Flash data register  0xXXXX

 Mdb 0x70200010

读数据

 (1). 初始化

   mww 0x7E00F120   0   /* xm0csn[2]配置为nand flash的片选信号 */

   mww 0x70200000 0x8000777e   /* 设置时间参数 */

 (2) 发出片选信号

   mww 0x70200004  0xc5

(3) 发出复位信号

   mwb 0x70200008 0xff

(4) 发出读命令

   mwb 0x70200008 0

(5)发出地址

   mwb 0x7020000C 0

   mwb 0x7020000C 0

   mwb 0x7020000C 0

   mwb 0x7020000C 0

   mwb 0x7020000C 0

(6) 发出0x30命令

   mwb 0x70200008 0x30

(7) 读数据

   mdb 0x70200010   



你可能感兴趣的:(nand flash学习笔记一)