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