jz2440 nand flash

本文介绍了NAND Flash的基本概念及其在嵌入式系统中的应用。详细解释了NAND Flash的物理结构,包括其页和块的概念,并阐述了与NAND Flash交互的时序要求及初始化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1: flash 的介绍

常用的flash有nor  flash和nand  flash两种。主要区别:由于norflash的接口与ram完全相同,所以程序可以直接在norflash上运行,无需把程序拷贝到内存中运行,nand flash 要把程序拷贝到内存中运行。norflash的读操作效率非常高,但是擦擦和写的效率非常的低。另外norflash的存储空间一般很小。nandflash的擦除和写的效率非常高。一般而言,norflash 用于程序存储,nandflash用于数据存储。
对于flash 存储器件要考虑3点。1:位反转,2:坏块, 3: 可擦除次数。

2:nandflash的物理结构

flash 引脚

I/O0~I/O7 数据输入和数据输出。从地址和数据都用IO口来传递。

CLE :命令锁使能,高电平有效,当CLE为高电平时,IO口传输的是命令
ALE : 地址使能, 高电平有效,当ALE为高电平时, IO口传输的是地址
当CLE和ALE都为低电平时候传输的是DATA
CE : 当CE为低电平时,片选使能
RE:读使能,低电平有效
wE: 写使能,低电平有效
WP: 写保护,低电平有效
R/B# :就绪/输出忙信号
VCC: 电源
VSS: 接地

NC: 不接


nand flash 存储单元结构图:

1:如图所示一页中main区的容量512B,16表示spare区容量(用于读写数据操作的时候存放校验码)

2:每个块里包含很多页,老的flash页的大小是256M, 512M,这类称作small block, 地址周期只有4个。常见的nand flash页的大小正常是2K,这成为big  block, 地址周期有5个。这个芯片每页512M属于小页

3:芯片写操作是以页为单位的,擦除是以块为单位的。nand flash 擦除就是把数据全变为1

4:由于nandflash 无法像norflash直接运行程序,所以一般用nandflash作为存储芯片的时候一般会在内部集成4K的ram.在启动的时候硬件会自动从nandflash 拷贝4K的空间到ram上,然后在ram上从0地址开始运行,再把NANDFLASH的程序拷贝到内存中去运行。

nand flash和2410或者2440的连接图如下:



具体引脚的含义上面已经描述过在此就不在赘述。

nand flash控制器介绍:

CPU访问nand flash时候,需要先发出命令,然后再发出地址,最后才是数据的读写。这一系列的过程需要各个使能信号来分辨是命令还是地址还是数据.nand flash提供了NFCONF, NFCMD,NFADDR,NFDATA,NFSTAT,NFECC等6个寄存器。

代码分析:






 由图中可以知道TACLS = TCLS - TWP  = 15 - 15 = 0

 根据寄存器中描述的计算公式:Duration =  HCLK x TACLS =>  0ns = 10ns x TACLS  => TACLS = 0

TWRPH0 的时间是 twp ,查 时间表 得到 15ns 
    根据寄存器中描述的计算公式:Duration =  HCLK x ( TWRPH0 + 1 )  =>  15ns = 10ns x (TWRPH0 + 1)  => TWRPH0 = 0.5 ,由于他的取值范围是 (0~7) ,并且,时间表中的时间是最小能识别的时间,那我们取TWRPH0 = 1

TWRPH1 的时间是 tclh = 5ns
    根据寄存器中描述的计算公式:Duration =  HCLK x ( TWRPH1 + 1 ) => 5ns = 10ns x (TWRPH1 + 1) => TWRPH1 = 0 即能满足
nand flash的初始化:
void nand_init(void)
{
   #define TACLS 0
   #define TWRPH0  3
   #define TWRPH1  0
    NFCONF = (TACLS<<12)|(TWRPH0<<8)|(TWRPH1<<4);  //设置时序
    NFCONT = (1<<4)|(1<<1)|(1<<0);   //使能nand flash控制器,初始化ECC,禁止片选
  }

void nand_select_chip(void)
{
     int i;
     NFCONT &= ~(1<<1);    //片选使能
    for(i=0; i<10; i++); 

}
void write_cmd(int cmd)
{
   unsigned long *p = (unsigned long *)NFCMD; 
   *p = cmd;  //写命令
}

/* 等待NAND Flash就绪 */
 void wait_idle(void)
{
    int i;
    volatile unsigned char *p = (volatile unsigned char *)NFSTAT;
    while(!(*p & BUSY))
        for(i=0; i<10; i++);
}


/* 取消片选信号 */
nand_deselect_chip(void)
{
    NFCONT |= (1<<1);
}

//读取数据
unsigned char read_data(void)
{
    volatile unsigned char *p = (volatile unsigned char *)NFDATA;
    return *p;
}


/* 发出地址 */
 void write_addr(unsigned int addr)
{
    int i;
    volatile unsigned char *p = (volatile unsigned char *)NFADDR;
    
    *p = addr & 0xff;
    for(i=0; i<10; i++);
    *p = (addr >> 9) & 0xff;
    for(i=0; i<10; i++);
    *p = (addr >> 17) & 0xff;
    for(i=0; i<10; i++);
    *p = (addr >> 25) & 0xff;
    for(i=0; i<10; i++);
}










 

• 电源电压 - 1.65V ~ 1.95V - 2.70V ~ 3.60V • 组织结构 - 存储单元阵列: (256M + 8M) x 8bit - 数据寄存器: (2K + 64) x 8bit • 自动的编程(写入)和擦除 - 页编程: (2K + 64)Byte - 块擦除: (128K + 4K)Byte • 页读取操作 - 页面大小 : (2K + 64)Byte - 随机读取 : 25µs(最大.) - 串行访问 : 25ns(最小.) (*K9F2G08R0A: tRC = 42ns(最小)) • 快速编程周期时间 - 页编程时间: 200µs(典型值) - 块擦除时间: 1.5ms(典型值) • 命令/地址/数据复用I/O端口 • 硬件数据保护 • - 编程/擦除在电源转换分离 可靠的CMOS浮栅技术 -耐力: 100K编程/擦除周期(有1bit/512Byte ECC) 数据保存时间: 10 年 • 命令式操作 • 带有1bit/528Byte EDC的智能Copy-Back编程 • 唯一的ID版权保护 • 封装 - K9F2G08R0A-JCB0/JIB0 : 无铅封装 63 - Ball FBGA I (10 x 13 / 0.8 mm 间距) - K9F2G08U0A-PCB0/PIB0 : 无铅封装 48 - Pin TSOP I (12 x 20 / 0.5 mm 间距) - K9F2G08U0A-ICB0/IIB0 52 - Pin ULGA (12 x 17 / 1.00 mm 间距) 本文档提供的为256Mx8bit的版本,K9F2G08X0A是2G-bit大小的NAND Flash存储器,带有64Mbit额外数据区(OOB区、冗余区)。此 NAND存储颗粒为固态存储市场应用提供了最具成本效益的解决方案。编程(写入)操作可以在200µs(典型值)对大小为(2K+64)Byte的页 进行写入,擦除操作可以在1.5ms(典型值)擦除大小为(128K+4K)的块。读取数据寄存器的数据周期时间为25ns(1.8v设备为42ns) 每字 节。I/O端口可以作为地址和数据输入/输出,也可以作为命令输入。芯片上的写控制器自动完成所有的编程和擦除功能包括脉冲重复、 并内部核查和数据余量(如有需要)。即使是写入操作频繁的系统,也可以通过K9F2G08X0A采用实时映射算法的ECC(错误纠正码)来加 强多达的100K编程/擦除周期的可靠性,K9F2G08X0A是一个用于大型非易失性存储应用的最佳解决方案,例如固态文件存储和其他用 于非易失性要求的便携式存储应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值