圈圈我用你的(21IC DIY U盘的实验板上实现“真”U盘的功能)里面的nandflash驱动程序怎么我读和写的扇区数据不一致呢?我的是1G的flash,块是128个page(256k),五个周期(2个column,3个row地址)的,我的数据线是模拟IO口实现,能正确的读取到ID号, 这个是写地址部分的(4个字节地址): //注意:该FLASH的地址中间有5bit必须置0 //并将高16位左移5位 //Addr=((Addr<<5)&(~0xFFFF))|(Addr&0x07FF);(圈圈的) coladdr = Addr&0x07FF;(我的) rowaddr = (Addr>>11); 其他地址也按照上面格式我改变成我的了,程序其他部分没改变。
FlashInit(); FlashReadId(buf); FlashReadOneSector(0,buf,0); flashinit()后,读取第一个扇区居然读取到的是0x0055AAFF........(这个是坏块部分的数据) 用格式化程序也没用,读取到的数据还是0x0055AAFF........ 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 for(i=0;i<100;i++) { k = i*512; FlashWriteOneSector(k,buf,0); FlashReadOneSector(k,testbuf1,0); FlashReadOneSector(0,testbuf2,0); }
我上面测试读写数据,但i到达5的时候,FlashReadOneSector(0,testbuf2,0);读取到的数据就为0xff了,后面继续读就规律性的一次正确,一次0xff这样交替,不知道怎么回事。圈圈指点一下??????
|