板子上的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重新编辑 ]