搜索
bottom↓
回复: 22

SPI FLASH W25X16 读写问题细究

[复制链接]

出0入0汤圆

发表于 2013-1-15 18:06:09 | 显示全部楼层 |阅读模式
本帖最后由 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,没问题,读写一致。
望有经验的朋友指点一二,谢谢!!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2013-1-15 18:24:48 | 显示全部楼层
刚才脑子突然开窍了,发现了问题,现总结一下,希望对有同样困惑的朋友有所帮助。

问题的根源在地址上!
一开始我写的是
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字节,就不会出现地址溢出的问题了……

出0入0汤圆

发表于 2013-1-15 20:51:03 | 显示全部楼层
这种问题您不觉得应该去看官方网站发布的数据手册更妥当吗?

出0入0汤圆

发表于 2013-1-16 05:51:31 来自手机 | 显示全部楼层
本帖最后由 o0pingu0o1 于 2013-1-16 05:53 编辑

w25x或w25q可以以单个字节为单位写。可以单个字节为单位读。没听过什么256的倍数开始写。

出0入0汤圆

 楼主| 发表于 2013-1-16 14:21:56 | 显示全部楼层
o0pingu0o1 发表于 2013-1-16 05:51
w25x或w25q可以以单个字节为单位写。可以单个字节为单位读。没听过什么256的倍数开始写。 ...

那你是怎么单个字节读写的呢?能发函数发上来探讨一下吗

出0入0汤圆

 楼主| 发表于 2013-1-16 14:22:52 | 显示全部楼层
o0pingu0o1 发表于 2013-1-16 05:51
w25x或w25q可以以单个字节为单位写。可以单个字节为单位读。没听过什么256的倍数开始写。 ...

datasheet我有……现在已经弄明白了,谢谢关注

出0入0汤圆

发表于 2013-4-2 08:55:05 | 显示全部楼层
不知道怎么读写w25x32,学习中。。。。。。。

出0入0汤圆

发表于 2013-7-5 16:59:33 | 显示全部楼层
515135896 发表于 2013-1-16 14:22
datasheet我有……现在已经弄明白了,谢谢关注

能否分享下,单字节读写心得?

出0入0汤圆

 楼主| 发表于 2013-7-18 18:42:54 | 显示全部楼层
aozima 发表于 2013-1-15 20:51
这种问题您不觉得应该去看官方网站发布的数据手册更妥当吗?

您说的是。我也看过他的数据手册,可能是理解的好不到位吧,以后会继续努力的!

出0入0汤圆

 楼主| 发表于 2013-7-18 18:44:41 | 显示全部楼层
cumtgao 发表于 2013-7-5 16:59
能否分享下,单字节读写心得?

其实读写是单字节还是整页应该都是无所谓的,只要你的地址别超出本页就行

出0入0汤圆

发表于 2013-11-14 00:33:20 | 显示全部楼层
515135896 发表于 2013-1-15 18:24
刚才脑子突然开窍了,发现了问题,现总结一下,希望对有同样困惑的朋友有所帮助。

问题的根源在地址上!

楼主能否分享一下源码,最近也正在弄SPI Flash,想借鉴参考一下,谢谢!

出0入0汤圆

发表于 2013-11-30 00:32:45 来自手机 | 显示全部楼层
STM32的SPI例程里有驱动程序,其实你按照手册里的步骤操作就能驱动成功

出0入0汤圆

发表于 2013-12-3 10:36:22 | 显示全部楼层
楼主,遇到个问题,一直读到忙,不知是啥问题

出0入0汤圆

发表于 2013-12-3 10:55:11 | 显示全部楼层
flash的写操作是一写写一页的。无论是从一页的哪个地址开始,会一直写到该页结束的位置。
所谓的单字节读写也是从那个地址开始写到一页结束。只不过后面的写的全是FF罢了。

出0入0汤圆

发表于 2013-12-3 11:11:28 | 显示全部楼层
我刚好也在调这个,也遇到这个情况了,你只要先擦除后再写就可以了,从哪个地址开始写都可以,擦除有三个命令:1、sector erase (擦除4K),2、block erase (擦除64K),3、chip erase (擦除芯片)。

出0入0汤圆

发表于 2013-12-11 09:43:08 | 显示全部楼层
先學習囉

出0入0汤圆

发表于 2014-2-25 15:40:03 | 显示全部楼层
好经验! 值得仔细品味。

出0入0汤圆

 楼主| 发表于 2014-6-9 17:21:10 | 显示全部楼层
rerainings 发表于 2014-5-10 21:36
不知道你这个读的速度如何

没有测试过,但是通过SPI总线的速度,应该能大致推算一下吧

出0入0汤圆

发表于 2014-8-23 09:47:35 | 显示全部楼层
没有测试过,但是通过SPI总线的速度,应该能大致推算一下吧

我的能读ID但是不能写入数据,楼主能指导下吗

出0入0汤圆

发表于 2015-5-24 18:32:26 | 显示全部楼层
虽然不懂,但学习了

出0入0汤圆

发表于 2016-2-28 15:42:58 | 显示全部楼层
学习中!多多谢大家分享!

出0入0汤圆

发表于 2016-8-4 14:05:06 | 显示全部楼层
SPI总线的速度是否是在初始化时的波特率
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 12:33

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表