FATFS文件系统,文件追加的时候发现速度越来越慢,发现可以优化f_lseek 不知道怎么做 求指教???

2019-07-21 01:02发布


每10M检测一次ADC的值转化后以追加的方式写入SD,发现速度越来越慢,后面直接没有显示了!!

[mw_shl_code=c,true]
            samp_value=adc_ch6*3.6/1024;
            len=sprintf(sample_value,"%6.5f ",samp_value);
            printf("%6.5f",samp_value);
            printf(" ");
            
        f_lseek(&file,f_size(&file));
        res=f_write(&file,sample_value,len,&br);
        if(res==0)
        { printf("write ok");}
        f_sync(&file);[/mw_shl_code]

发现是F_lseek函数的时间变长了,所以10ms循环bu够,现在想用快速的seek 不知道怎么用试了好多次没办法 求有经验的知道一下 急!急!急!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
21条回答
mack13013
1楼-- · 2019-07-21 01:08
本帖最后由 mack13013 于 2016-11-11 11:02 编辑

f_open的第三个参数mode设置的是什么??  如果设置了FA_OPEN_APPEND,那么对文件的写入就是附加模式,即在文件尾部追加写入内容,这样你就不用使用seek了,每次写入都是在文件尾部附加。


这个直接搜索fatfs找到其官方网站,官网对fatfs的各种api都有详细说明,需要什么功能直接读说明就可以了。

实际上,不管是linux或者windows或者其他系统下的文件系统,大家需要实现的api都差不多,
都要实现open、read、write、flush、close几种功能,而且几种API的内部功能也都要差不多实现,
比如open,大多都要对其指定权限(比如读、写、新建、附加等方式或者权限),几乎所有的文件系统的open
都有指定这些权限(当然一般的open也要指定路径)。其他api类似。

所以不管是哪种文件系统,大约你使用任意一种平台下的文件系统操作文件熟练之后,基本上所有的文件系统
的文件操作你大概也就都会了。只要熟悉一种之后,其他的基本上你需要什么样的操作,你大概就会知道,该
文件系统在某个地方应该有个实现什么功能的api,然后去查一下说明就OK了。

ljz1987cj
2楼-- · 2019-07-21 05:09
应该是将每簇的扇区数增加,即_MAX_SS增大,这样会省去很多找簇时间,速度也会快很多       
zhengxuqiao
3楼-- · 2019-07-21 10:04
 精彩回答 2  元偷偷看……
zhengxuqiao
4楼-- · 2019-07-21 10:49
http://www.forwhat.cn/post-205.html  中有一例子:        /* 移动文件读/写指针到文件结束处,以便添加数据 */    res = f_lseek(file, file->fsize);
ranfs
5楼-- · 2019-07-21 12:14
 精彩回答 2  元偷偷看……
talenthn
6楼-- · 2019-07-21 18:13
mack13013 发表于 2016-11-11 09:36
f_open的第三个参数mode设置的是什么??  如果设置了FA_OPEN_APPEND,那么对文件的写入就是附加模式,即在 ...

你好,我在使用FA_OPEN_APPEND这个参数写文件的时候,一共四个文件,出现了一个文件损坏掉的情况,请问您之前遇到过吗

一周热门 更多>