• S3C2440与NAND FLASH(K9F1208)的接线分析


    NAND FLASH的接线方式和NOR FLASH,SDRAM都不一样。以TQ2440开发板用的K9F1208为例,分析NAND FLASH的接线方式。

    K9F1208结构如下图:

    点击看大图

    K9F1208位宽是8位。

    一页: 512byte + 16byte 最后16byte是用于存储校验码和其他信息用的,不能存放实际的数据。

    一个块有32 page:(16k+512)byte

    K9F1208有4096个块:(64M+2M)byte,总共有64Mbyte可操作的芯片容量

    NAND FLASH以页为单位读写数据,以块为单位擦除数据。

    S3C24440和K9F1208的接线图如下:

    下图是S3C2440的NAND FLASH引脚配置:

    当选定一个NAND FLASH的型号后,要根据选定的NAND FLASH来确定S3C2440的NCON,GPG13,GPG14,GPG15的状态。

    下图是S3C2440中4个脚位状态的定义:

    点击看大图

    K9F1208的一页是512byte,所以NCON接低电平,GPG13接高电平。

    K9F1208需要4个寻址命令,所以GPG14接高电平

    K9F1208的位宽是8,所以GPG15接低电平。

    NAND FLASH寻址

    对K9F1208来说,地址和命令只能在I/O[7:0]上传递,数据宽度是8位。

    地址传递分为4步,如下图:

    点击看大图

    第1步发送列地址,既选中一页512BYTE中的一个字节。512byte需要9bit来选择,这里只用了A0-A7,原因是把一页分成了2部分,每部分256字节。通过发送的读命令字来确定是读的前256字节还是后256字节。

    当要读取的起始地址(Column Address)在0~255内时我们用00h命令,当读取的起始地址是在256~511时,则使用01h命令。

    一个块有32页,用A9-A13共5位来选择一个块中的某个页。

    总共有4096个块,用A14-A25共12位来选择一个块。

    K9F1208总共有64Mbyte,需要A0-A25共26个地址位。

    例如要读NAND FLASH的第5000字节开始的内容。把5000分解成列地址和行地址。

    Column_address = 5000%512 = 392

    Page_address = (5000>>9) = 9

    因为column_address>255,所以用01h命令读

    发送命令和参数的顺序是:

    NFCMMD = 0x01;从后256字节开始读

    NFADDR = column_address & 0xff;取column_address的低8位送到数据线

    NFADDR = page_address & 0xff;发送A9-A16

    NFADDR = (page_address >>8) & 0xff; 发送A17-A24

    NFADDR = (page_address >> 16) & 0xff;发送A25

    上面的NFCMMD,NFADDR.是S3C2440的NAND FLASH控制寄存器。读取的数据会放在NFDATA中。

  • 相关阅读:
    HDU4452——模拟——Running Rabbits
    URAL1711——模拟——Code Names
    URAL1721——匈牙利算法——Two Sides of the Same Coin
    Codeforces Round #FF (Div. 1)——A贪心——DZY Loves Sequences
    Codeforces Round #326 (Div. 2)
    URAL 7077 Little Zu Chongzhi's Triangles(14广州I)
    Codeforces Round #325 (Div. 2)
    位运算 UEST 84 Binary Operations
    LCA UESTC 92 Journey
    Codeforces Round #324 (Div. 2)
  • 原文地址:https://www.cnblogs.com/hnrainll/p/2065489.html
Copyright © 2020-2023  润新知