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 18:53
talenthn 发表于 2017-5-16 10:10
你好,我在使用FA_OPEN_APPEND这个参数写文件的时候,一共四个文件,出现了一个文件损坏掉的情况,请问您 ...

文件损坏说实话我没遇到过。只要不出现意外掉电情况,即使是被中断强抢了操作,也不会出现文件损坏。

实在不行可以写到buff里,最后统一一次写入(如果文件比较大,单片机下显然不可行,PC下可以)
在每次写入完成后flush(sync)一下,一般只有在flush过程中出现意外才会出现文件损坏。
talenthn
2楼-- · 2019-07-21 21:36
 精彩回答 2  元偷偷看……
mack13013
3楼-- · 2019-07-22 01:11
talenthn 发表于 2017-5-16 21:31
哦哦,但是我发现write后使用sync的时候容易出现异常数据(多数据或少数据),因为我用到四个串口,分别 ...

如果出现异常数据,那就通读一下FsFat,看下有没有哪里强制要求字节对齐,或者SDIO驱动里有没有问题,SDIO有没有文件打开数量限制等等。

按道理,用几个串口存到几个文件里不是出现数据异常的原因,因为FsFat或者SDIO的驱动连这个都解决不好的话,根本就不会发布的。

自己那部分代码也再仔细检查一下(可能性比较大),任何一个细节都不要放过,如果有可能,多做做codereview,容易发现问题
talenthn
4楼-- · 2019-07-22 03:40
mack13013 发表于 2017-5-17 21:32
如果出现异常数据,那就通读一下FsFat,看下有没有哪里强制要求字节对齐,或者SDIO驱动里有没有问题,SDI ...

感谢大神的指点。我一直在怀疑是不是新出的.12c版本关于追加方式FA_OPEN_APPEND是否存在BUG呢毕竟是新版本才有的功能
Bunny17
5楼-- · 2019-07-22 06:36
 精彩回答 2  元偷偷看……
Bunny17
6楼-- · 2019-07-22 11:03
talenthn 发表于 2017-5-18 15:10
感谢大神的指点。我一直在怀疑是不是新出的.12c版本关于追加方式FA_OPEN_APPEND是否存在BUG呢毕竟是新 ...

你好,请问是不是这样改成FA_OPEN_APPEND,就解决了存储速度越来越慢的问题呢

一周热门 更多>