OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 16117|回复: 18

很平凡读取SPIflash的数据寿命会缩短吗

[复制链接]

45

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
334
金钱
334
注册时间
2013-5-22
在线时间
13 小时
发表于 2013-10-31 10:24:44 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

302

帖子

2

精华

高级会员

Rank: 4

积分
727
金钱
727
注册时间
2011-11-22
在线时间
10 小时
发表于 2013-10-31 10:29:38 | 显示全部楼层
不会的,无限读。
都是有插除编程次数的
世界如此美好,好好珍惜每一天吧!
回复 支持 反对

使用道具 举报

45

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
334
金钱
334
注册时间
2013-5-22
在线时间
13 小时
 楼主| 发表于 2013-10-31 10:49:48 | 显示全部楼层
SST25VF016B 读取速度能到多少M 我到36M时就死掉了
回复 支持 反对

使用道具 举报

19

主题

302

帖子

2

精华

高级会员

Rank: 4

积分
727
金钱
727
注册时间
2011-11-22
在线时间
10 小时
发表于 2013-10-31 14:07:58 | 显示全部楼层
速度你找找手册啊,你那什么读的,stm32硬件spi好像没这么快的
世界如此美好,好好珍惜每一天吧!
回复 支持 反对

使用道具 举报

22

主题

436

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2012-8-6
在线时间
2 小时
发表于 2013-10-31 14:11:36 | 显示全部楼层
回复【4楼】dzng11:
---------------------------------好牛逼的头像啊
往事随风!
回复 支持 反对

使用道具 举报

45

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
334
金钱
334
注册时间
2013-5-22
在线时间
13 小时
 楼主| 发表于 2013-11-1 08:47:57 | 显示全部楼层
回复【4楼】dzng11:
---------------------------------
hse  2分频就能到36
回复 支持 反对

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2013-11-1 09:01:34 | 显示全部楼层
回复【6楼】wangyuyuwang:
---------------------------------
SPI最高不能超过18M,72M要4分频。DataSheet上有说明,你看看。
回复 支持 反对

使用道具 举报

45

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
334
金钱
334
注册时间
2013-5-22
在线时间
13 小时
 楼主| 发表于 2013-11-1 12:59:43 | 显示全部楼层
那如果要有读SDCARD的速度不是实现不了吗
回复 支持 反对

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2013-10-27
在线时间
23 小时
发表于 2013-11-20 09:50:04 | 显示全部楼层
回复【楼主位】wangyuyuwang:
---------------------------------
楼主,你对Flash的读写操作,被中断打断的话,数据是否有错?我最近的一个项目中就出现频繁读写Flash时,数据出现错误现象。本来想读写Flash的时候关闭中断,但是写数据时间都是毫秒级的,这个时间会影响中断执行的。
回复 支持 反对

使用道具 举报

4

主题

117

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2013-8-20
在线时间
0 小时
发表于 2013-11-20 10:23:17 | 显示全部楼层
回复【7楼】ricefat:
---------------------------------
我用过36M的,一点没问题啊,SPI1,读的是W25Q64
回复 支持 反对

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2013-11-21 09:05:55 | 显示全部楼层
回复【10楼】lanny_cn:
---------------------------------
我也用过,但确实不稳定。刷SPI接口的屏经常跑飞。官方规定最大不能超过18M是有道理的。
回复 支持 反对

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2013-11-21 09:13:25 | 显示全部楼层
回复【9楼】liuxuefei11:
---------------------------------
Flash时序对波形的上升沿,下降沿以及高低电平保持时间有最低要求的,另外flash执行指令时候是有反应时间的,需要等待或是查询忙状态。最后如果涉及毫秒级读写Flash这种做法本身就是不对的,flash写寿命也就是1万次左右,超过就可能出现坏块。正常的做法应该在RAM中缓存一定量的数据整体写入,减少对Flash的写入次数
回复 支持 反对

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2013-10-27
在线时间
23 小时
发表于 2013-11-21 09:33:41 | 显示全部楼层
回复【12楼】ricefat:
---------------------------------
我的意思是这样,你在一次写入数据到Flash中去,在写数据的过程中,如果被中断打断后,写入的数据是肯定会出错的。问题是还不能吧在写Flash的时候关闭中断,这样中断的实时性又得不到保障。此时如何来协调这个冲突呢?我觉得DMA应该可以解决,DMA直接将数据搬到SPI的发送寄存器,在中断的时候SPI的始终并没有停止工作,CPU还不会打断,各位大侠,你们说呢
回复 支持 反对

使用道具 举报

4

主题

117

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2013-8-20
在线时间
0 小时
发表于 2013-11-21 09:47:20 | 显示全部楼层
回复【11楼】ricefat:
---------------------------------
是不是与你PCB布线有关系?布得不好,干扰一大,频率一高,是容易串数据
w25q64好像说是80M嘛?最高,不过没时间测过
回复 支持 反对

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2013-11-21 10:30:14 | 显示全部楼层
回复【13楼】liuxuefei11:
---------------------------------
中断处理完成后会回到打断前的代码行继续运行,按理说是不会出现写入错误的。
另外Flash属于慢速储存设备,频繁写入本身就会拖慢系统速度——大部分时间都浪费在等待flash反应上。
DMA只能保证在写入或是读取的同时不耽误中断,但是在下一次进行DMA请求时能否保证DMA已经完成上一次的数据搬运还不好说,还需要加入DMA传输完成中断来确定数据已经搬运完毕。
DMA只有在大数据量,几百、几K或是几十K的数据搬运才能体现出优势。如果只有几个字节还不如按字节走,还可以省掉查询DMA完成中断的时间。

说一个我的项目中的解决办法,跟你的情况不是完全相同,但是可能会有帮助,在RAM中开辟两个缓存,buffer1和2,采集的数据先填buffer1,满了以后DMA到SD卡。在DMA的过程中数据采集继续,但是数据存入buffer2,等buffer2满了以后就可以再将数据DMA到SD卡,采集的数据反过来再去填buffer1。调整好buffer的大小,可以使数据采集以及存储过程都不中断,或是中断时间很短。
回复 支持 反对

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2013-11-21 10:32:28 | 显示全部楼层
回复【14楼】lanny_cn:
---------------------------------
跟这个无关,w25q64设计80M,但是STM32的Datasheet上规定了自身SPI时钟速度不得大于18M,说明STM32设计上超过这个时钟会不稳定。
回复 支持 反对

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2013-10-27
在线时间
23 小时
发表于 2013-11-21 11:07:35 | 显示全部楼层
回复【15楼】ricefat:
---------------------------------
这个办法好,就是乒乓缓冲法。我以前在串口接收GPS的数据中就是这么干的。
回复 支持 反对

使用道具 举报

4

主题

117

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2013-8-20
在线时间
0 小时
发表于 2013-11-21 11:40:07 | 显示全部楼层
回复【16楼】ricefat:
---------------------------------
哦,明白了,原来是STM32这头,等有空了找个高频率验证验证
回复 支持 反对

使用道具 举报

7

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
745
金钱
745
注册时间
2016-1-20
在线时间
78 小时
发表于 2016-4-22 16:52:57 | 显示全部楼层
正在纠结这个问题  谢谢了!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-16 22:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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