主题 : mini2440 nand flash 写入地址问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 76950
精华: 0
发帖: 12
金钱: 60 两
威望: 12 点
贡献值: 0 点
综合积分: 24 分
注册时间: 2012-09-01
最后登录: 2013-10-17
楼主  发表于: 2012-09-18 11:30

 mini2440 nand flash 写入地址问题

板子上的Nand Flash 为 K9F2G08U0B 。
传送地址需要5个周期:
假设i为要传送的地址,则传送地址的代码如下:
    NFADDR = i & 0xff;//列地址 0-7
    NFADDR = (i >> 8) & 0x0f;//列地址 8-11
    NFADDR = (i >> 12) & 0xff;//行地址 12-19
    NFADDR = (i >> 20) & 0xff;//行地址 20-27
    NFADDR = (i >> 28) & 0x1;//行地址28
这样写,程序不能运行,但是如果改成下面的就可以运行:

        NFADDR = i & 0xff;//列地址 0-7
    NFADDR = (i >> 8) & 0x07;//列地址 8-11
    NFADDR = (i >> 11) & 0xff;//行地址 12-19
    NFADDR = (i >> 19) & 0xff;//行地址 20-27
    NFADDR= (i >> 27) & 0x1;//行地址28

这是问什么呢???
K9F2G08U0B的一页为(2K+64)B,所以列地址为12位。
K9F2G08U0B一共有128K个页。所以列地址为17位。
但是在发出列地址的时候为什么仅仅将i右移11位就可以呢?难道读取的时候把那64b的额外空间忽略了?
[ 此帖被chj90220在2012-09-18 17:08重新编辑 ]
级别: 新手上路
UID: 76950
精华: 0
发帖: 12
金钱: 60 两
威望: 12 点
贡献值: 0 点
综合积分: 24 分
注册时间: 2012-09-01
最后登录: 2013-10-17
1楼  发表于: 2012-09-18 19:14
找到原因了,遇到同样问题的看下面的帖子吧。
http://bbs.embedsky.net/forum.php?mod=viewthread&tid=13469&highlight=