因工作需要,最近在测试FLASH,正好手头有NUC505,便用来进行测试。
测试了很多厂家的x25x系列的芯片,GIGADEVICE,WINBOND,EON,AMIC等,除第一个外,基本都出现了这样一个问题:在quad和dual 模式下读过程中,都会出现读取错误的情况。具体情况稍后会有说明。
我测试的思路如下:
1.读取ID
2.确定FLASH芯片是否完好。整个芯片全部写0X55,再全部写0XAA(细节不多做赘述)
3.往0x000-0xFF 地址写1,0x100-0x1FF地址写2...依次类推,写到0xfff,一共16个block(或者是扇区?)
4.将写进去的数据用单线读取的命令一次读出4096个数据。(指令是0x0b和0x03)
5.切换到DUAL模式或QUAD模式,读取flash数据,也是一次读出4096个数据。
前4步都正确,保证我数据写入正确,flash也正常工作,连线上应该也没问题(或许有)。就在第5步出现了问题。当我读取的地址内容是0X3时,它只能读出一个正确的数据,之后的内容都是0XFF。
也就是说按照我第5步的做法,从地址0X000开始,到读取的地址为0X200时,这一段的数据是256个1、256个2、1个3,之后的数据全部变成了0XFF。
有趣的是,当我只读取0X200-0X2FF这一段时,无论读取多少个地址,只有第一个是正确的数据,其余数据也为0XFF。读取除0X200-0x2ff之外的地址时,在0XD这两个数据存放的地址中,也出现了相同的现象。
请大神赐教,如果有不明白之处,请指出,我会进行补充。