假设我要从Nand Flash中的第5000字节处开始读取1024个字节到内存的0x30000000处,我们这样调用read函数nf_read(5000, 0x30000000,1024); 我们来分析5000这个src_addr。根据
column_addr=src_addr%512;
page_address=(src_addr>>9);
我们可得出
column_addr=5000%512=392
page_address=(5000>>9)=9
于是我们可以知道5000这个地址是在第9页的第392个字节处,于是我们的nf_read函数将这样发送命令和参数
column_addr=5000%512;
page_address=(5000>>9);
NF_CMD=0x01; //从2nd half开始读取
NF_ADDR= column_addr &0xff; // 1st CycleNF_ADDR=page_address&0xff; // 2nd.Cycle
NF_ADDR=(page_address>>8)&0xff; // 3rd.Cycle
NF_ADDR=(page_address>>16)&0xff; // 4th.Cycle
NF_ADDR= column_addr &0xff;这句的&0Xff是什么作用呀?保留低8位不变化,屏蔽其它位(也没有可屏蔽多的位了,呵呵)? 直按NF_ADDR= column_addr不行吗?
[ 此贴被maidilong在2008-06-27 21:31重新编辑 ]