Nand flash编程技术

来源:互联网 发布:淘宝买家大尺度福利秀 编辑:程序博客网 时间:2024/05/17 07:20

        一、nand flash容量与接口

        1.容量

        nand flash按照面、块、页、字节进行存储空间的管理,以我接触过的两款芯片来说:

        K9K8G08U0A的存储容量为1024MB = 4(planes) * 2K(blocks) * 64(pages) * 2K(Bytes)

        oob区的大小为32MB = 256Mbit = 512K(pages) * 64(Bytes)

        (注:该flash中每一页包括2KB存储空间和64B的oob区信息)

        K9F2G08U0A的存储容量为2Gbit = 256MB = 2(planes) * 1K(blocks) * 64(pages) * 2K(Bytes)

        oob区的大小为8MB = 64Mbit = 128K(pages) * 64(Bytes)

        (注:该flash中每一页包括2KB存储空间和64B的oob区信息)

        2. 接口

        I/O[0-7]:数据、地址、状态和命令共同复用的输入输出口

        CLE:命令锁存使能

        ALE:地址锁存使能

        CE:芯片片选使能

        RE:读使能

        WE:写使能

        WP:写保护使能

        R/B:芯片“就绪/忙”信号

        Vcc:电源

        Vss:地

        N.C:悬空

        二、K9F2G08U0A功能框图、组织结构与支持的命令集



        三、操作步骤

        Nand flash相关寄存器初始化
        给出页地址,发送块擦除命令(0x60/0xd0),按块(128K)擦除
        给出将要写入数据的起始地址,发送写命令(0x80/0x10),数据被写入nand flash指定地址
        给出将要读取数据的起始地址,发送读命令(0x00/0x30),将从nand flash读取指定长度的数据

        四、说明
        通过给定列地址值,我们可以不按页对齐开始,而是从给定地址开始读取数据
        循环读取数据的长度也不必是整页的长度大小,而是根据实际长度来读取,如len = 100
        写入也是同理,不必整页对齐,但这样会降低读写效率
        擦除必须是从整数页开始擦,擦除空间必须是一个block的大小,比如128KB

1 0