本帖最后由 515135896 于 2013-1-15 18:09 编辑
最近在研究spi flash w25x16,有几个问题想请交一下有经验的朋友;
1.这款spi flash 每页有256字节对吗?
2.在进行页编程时,每次最多可以写256字节对吗?
3.我在读我写进去的东西时(实际写了256字节,分别是0x00,0x01,0x02,0x03,0x04,0x05…………0xff),而读出来的是0x00,0x01,0x02,0x03,0x04,0x05…………0xfa,0xfb,0xfc,0xfd,0xff0xff,为什么倒数第二个字节是0xff而不是0xfe? 错在哪里呢?
4.我再测试时(实际写了255字节,分别是0x00,0x01,0x02,0x03,0x04,0x05…………0xfc,0xfd,0xfe),而读出来的是0x00,0x01,0x02,0x03,0x04,0x05…………0xfa,0xfb,0xfc,0xfd,0xff。
这个0xff又出现了,按理说应该是0xfe的啊……?
5.我再测试时(实际写了254字节,分别是0x00,0x01,0x02,0x03,0x04,0x05…………0xfd),而读出来的是0x00,0x01,0x02,0x03,0x04,0x05…………0xfa,0xfb,0xfc,0xfd,没问题,读写一致。
望有经验的朋友指点一二,谢谢!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
问题的根源在地址上!
一开始我写的是
M25P16_Page_Program(2,256,buff);
这表示从初始地址为02h的位置写入256字节,而这对于w25x16来说是不允许的,这就是问题的根源。
之后我把程序改为
M25P16_Page_Program(0,256,buff);
一切正常,读写一致。
现在来想想为什么?
w25x16的写入需要以页为单位,每页有256字节,即每次需写入256字节,在进行写入的过程中,地址不能溢出本页,而刚开始我的初始地址是02h,却要写入256字节(或者255字节),地址范围溢出本页,产生错误,读出来的是错误的0xff。这也正是我在测试写入254字节没有产生错误的原因,因为254+02h没有正好达到本页最后一个位置,没有溢出。
所以,在对w25x16进行写入时,最好从00h,100h,200h……等等256的整数倍地址开始写,且每次写入的字节小于等于256字节,就不会出现地址溢出的问题了……
那你是怎么单个字节读写的呢?能发函数发上来探讨一下吗
datasheet我有……现在已经弄明白了,谢谢关注
一周热门 更多>