OpenEdv-开源电子网

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

FATFS周期往SD卡TXT里写ADC数据 占用资源问题

[复制链接]

1

主题

5

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2016-1-16
在线时间
6 小时
发表于 2016-3-5 17:48:40 | 显示全部楼层 |阅读模式
3金钱
我做毕设,需要连续保存ADC采集数据,用ucosII的软件定时器控制ADC周期(5ms)采样,然后将转换数据保存在SD卡固定TXT文件里。

现在的问题是,我是f_open该文件后直接每隔5ms执行f_write,直到所有数据全部写完再f_close呢?
还是每隔5ms执行f_open、f_write写数据、f_close呢?


哪种方案更节省资源?
因为ucosII跑的任务较多所以在这里问一下。哪位亲快来解答一下。

最佳答案

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

写完再f_close即可。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-3-5 17:48:41 | 显示全部楼层
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2016-1-16
在线时间
6 小时
 楼主| 发表于 2016-3-5 23:52:38 | 显示全部楼层
原子哥,我现在又出了新状况,停止采集后,有时候TXT文件里的数据是全的,有时候则全空什么都没有,查了半天都不知道什么原因,是不是最后f_close不成功会导致这种情况?
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2016-1-16
在线时间
6 小时
 楼主| 发表于 2016-3-5 23:53:03 | 显示全部楼层
本帖最后由 whispericarus 于 2016-3-6 01:57 编辑
正点原子 发表于 2016-3-5 17:48
写完再f_close即可。

原子哥,我现在又出了新状况,停止采集后,有时候TXT文件里的数据是全的,有时候则全空什么都没有,查了半天都不知道什么原因,是不是最后f_close不成功会导致这种情况?而且我观察了写数据过程中TXT的文件大小.fsize,是正常增长的,但是一旦采集完毕后再观察TXT的文件大小就成0了,严重怀疑是f_close不成功导致的。后来我观察了f_close的返回值,竟然是正常的,然后我就不知所措喽。
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2016-1-16
在线时间
6 小时
 楼主| 发表于 2016-3-6 01:14:43 | 显示全部楼层
本帖最后由 whispericarus 于 2016-3-6 01:55 编辑
正点原子 发表于 2016-3-5 17:48
写完再f_close即可。

原子哥,我找到原因了,是fatfs文件掉电数据丢失问题,用f_sync解决就可以,长时间周期写数据时,需要每个一段时间调用f_sync,可以防止数据意外丢失。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-3-6 22:42:32 | 显示全部楼层
whispericarus 发表于 2016-3-6 01:14
原子哥,我找到原因了,是fatfs文件掉电数据丢失问题,用f_sync解决就可以,长时间周期写数据时,需要每 ...

谢谢分享.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2012-8-3
在线时间
6 小时
发表于 2016-4-7 00:30:37 | 显示全部楼层
whispericarus 发表于 2016-3-6 01:14
原子哥,我找到原因了,是fatfs文件掉电数据丢失问题,用f_sync解决就可以,长时间周期写数据时,需要每 ...

我也遇到了这个问题,加了f_sync之后确实不丢数据了,但是控制器对按键就经常无响应,这是为什么啊?
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-11-20
在线时间
2 小时
发表于 2016-7-14 13:01:20 | 显示全部楼层
通过示波器和性能测试管脚,f_write函数执行时间约2ms,而f_sync函数却长达 200ms之多,所以对时间敏感的程序,慎用。
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2016-3-21
在线时间
8 小时
发表于 2016-8-1 15:08:12 来自手机 | 显示全部楼层
请问楼主和各位大神,如何把fafts文件系统移植进ucos系统里啊?我移植之后运行不了,一运行文件操作就死循环或者硬件错误
回复

使用道具 举报

14

主题

110

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
304
金钱
304
注册时间
2016-5-16
在线时间
67 小时
发表于 2017-1-17 14:14:22 | 显示全部楼层
我想问下,你每次存入的ADC数据都是printf等操作后再存的吗?可是这样的话后缀好长啊我的 QQ截图20170117110900.png
QQ截图20170117122246.png
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 07:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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