OpenEdv-开源电子网

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

求助:fatfs真的不支持掉电保护?

[复制链接]

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2012-3-30
在线时间
7 小时
发表于 2015-11-9 11:33:37 | 显示全部楼层 |阅读模式
5金钱
       最近,做项目用stm32+SD保存串口数据,发现有个文件问题,我的设备会随时断电,需要前面记录数据保存,数据记录频率大概60次/秒,每次1K数据,发现这问题,用f_snyc函数,倒是可以解决了;但是发现如果F_snyc函数如果60次/秒,用不了几天SD卡准会挂掉,文件系统找不到了,不知哪位高手有解决这个问题方法?急啊!!

最佳答案

查看完整内容[请看2#楼]

掉电保存的话,加个法拉电容,监测掉电,妥妥的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

163

帖子

0

精华

高级会员

Rank: 4

积分
615
金钱
615
注册时间
2011-11-7
在线时间
180 小时
发表于 2015-11-9 11:33:38 | 显示全部楼层
掉电保存的话,加个法拉电容,监测掉电,妥妥的
回复

使用道具 举报

5

主题

163

帖子

0

精华

高级会员

Rank: 4

积分
615
金钱
615
注册时间
2011-11-7
在线时间
180 小时
发表于 2015-11-9 12:38:05 | 显示全部楼层
这跟掉电保护有什么关系,这么频繁擦写,你可先放ram里面,隔久一点再保存啊
回复

使用道具 举报

3

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2015-9-25
在线时间
4 小时
发表于 2015-11-9 12:53:50 | 显示全部楼层
都说是随时断电,隔久了数据不真实,你可以分扇区循环重复写,找个4G SD卡,就够了吧
回复

使用道具 举报

3

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2012-10-21
在线时间
23 小时
发表于 2015-11-9 13:06:50 | 显示全部楼层
每秒60次,每次1k数据可不小啊,为什么频繁的 写入呢?cpu加大电容,检测断电后一次性写入大的数据试试
回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2012-3-30
在线时间
7 小时
 楼主| 发表于 2015-11-9 13:17:38 | 显示全部楼层
回复【4楼】F8023M:
---------------------------------
数据串口460Kbit/秒,每秒46kbyte,一次写1K,每秒40-60次吧,fatfs不支持断电保护?用f_snyc函数好像对SD卡有损害。
回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2012-3-30
在线时间
7 小时
 楼主| 发表于 2015-11-9 13:23:34 | 显示全部楼层
回复【3楼】rockyhuo:
---------------------------------
我这是带文件系统的,数据到1K才会被写入SD的文件中去的,分扇区写入是不带文件系统吧。
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13079
金钱
13079
注册时间
2012-11-26
在线时间
3809 小时
发表于 2015-11-9 13:38:42 | 显示全部楼层
既然数据那么重要,加个大电容或者电池吧

fatfs又不管你掉不掉电
学无止境
回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2012-3-30
在线时间
7 小时
 楼主| 发表于 2015-11-9 14:11:34 | 显示全部楼层
回复【7楼】jermy_z:
---------------------------------
     问题是每次我都是用f_write这个函数写入SD中文件 1K字节,非要执行f_sync这个函数,数据才能真真保存下来,中间如果断电,我没法执行,就保存不了;如果每次都执行f_sync,数据是保存下来了,但对SD卡是个大损害?不知道这个想法对不对,一秒钟50次,一天下来50*24*3600=4320000次,几天下来拍SD卡吃不消啊!
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13079
金钱
13079
注册时间
2012-11-26
在线时间
3809 小时
发表于 2015-11-9 14:58:45 | 显示全部楼层
回复【8楼】njgwx:
---------------------------------
所以让你加个大电容或者电池    等积累一定数据再保存

你这样一直搞SD卡    不搞坏才是奇迹
学无止境
回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2012-3-30
在线时间
7 小时
 楼主| 发表于 2015-11-9 15:23:18 | 显示全部楼层
回复【9楼】jermy_z:
---------------------------------
我是串口接收到1K数据,采用f_write这个函数写入SD中文件,难道写入数据太小?要10K吗,单片机也就这么大内存了,还有好像用f_write函数一次也不能写入超过2K数据了,如果软件上,实在解决不了,就得改加个大电容什么的,我测了加个2200uf,也最多能顶上个100ms左右,不知道这点时间能不能保持SD卡积累了几天快2-3G数据?
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13079
金钱
13079
注册时间
2012-11-26
在线时间
3809 小时
发表于 2015-11-9 16:06:22 | 显示全部楼层
回复【10楼】njgwx:
---------------------------------
。。。。。
学无止境
回复

使用道具 举报

55

主题

243

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1603
金钱
1603
注册时间
2012-12-30
在线时间
240 小时
发表于 2015-11-9 16:54:37 | 显示全部楼层
你写完1K就关闭文件 再写再打开写入 写入到的数据存在SD里怎么会掉电就没有了呢 从未发生过
回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2012-3-30
在线时间
7 小时
 楼主| 发表于 2015-11-9 17:06:37 | 显示全部楼层
回复【12楼】wgh1990:
---------------------------------
关闭文件,就是实际上调用f_sync这个函数保存数据,我担心高频用大概50次/秒,SD卡吃不消,因为它要更新fat目录表什么的。一天下来50*24*3600=4320000次 SD卡吃不消啊!这个问题折腾我好几月了,实在不行要加电容了试试了。
回复

使用道具 举报

55

主题

243

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1603
金钱
1603
注册时间
2012-12-30
在线时间
240 小时
发表于 2015-11-9 17:31:23 | 显示全部楼层
回复【13楼】njgwx:
---------------------------------
那你的意思是掉电才关闭文件  那就加个电容再开个掉电中断PWR 去关闭文件 不掉电就让它一直写入 只在掉电才去调用f_sync这个函数了  这样次数就减少了
回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2012-3-30
在线时间
7 小时
 楼主| 发表于 2015-11-9 18:30:13 | 显示全部楼层
回复【14楼】wgh1990:
---------------------------------
      是的,不知道调用f_sync同步SD卡需要多少时间,所以只能检测前端电压了,检测后端3.3V怕掉电时间太短,前端搞个1000uf,测了一下好像也只能顶200ms时间左右,不知道这点时间f_sync同步SD卡的时间?
回复

使用道具 举报

20

主题

134

帖子

0

精华

高级会员

Rank: 4

积分
550
金钱
550
注册时间
2016-7-26
在线时间
90 小时
发表于 2016-10-20 16:14:16 | 显示全部楼层
请教楼主,这些数据是持续往一个文件中存的吗,那单个文件是不是会很大?
回复

使用道具 举报

43

主题

481

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1352
金钱
1352
注册时间
2014-12-24
在线时间
321 小时
发表于 2016-10-20 16:22:32 | 显示全部楼层
1秒写60次, 一天就是5184000次,正常的情况下,你的卡也用不了多少天。把磨损均衡加上,也是用不了多长时间。
回复

使用道具 举报

33

主题

150

帖子

0

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2014-1-24
在线时间
102 小时
发表于 2018-1-26 16:04:30 | 显示全部楼层
njgwx 发表于 2015-11-9 13:17
回复【4楼】F8023M:
---------------------------------
数据串口460Kbit/秒,每秒46kbyte,一次写1K,每秒4 ...

请问哈楼主f_snyc这个函数怎么用,我试了好几次感觉都没啥用
回复

使用道具 举报

9

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2018-2-11
在线时间
18 小时
发表于 2022-7-15 15:22:09 | 显示全部楼层
也遇到个SD卡莫名的问题,不知道跟f_sync( )函数的使用有没关系
回复

使用道具 举报

9

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2018-2-11
在线时间
18 小时
发表于 2022-7-15 15:24:38 | 显示全部楼层
SD卡有缓冲区的说法? f_write只是写到SD卡的缓冲区?f_sync才是写到SD卡的存储芯片flash上?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-26 18:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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