Adrian 发表于 2012-6-25 16:59:12

使用超小文件系统petit fatfs保存数据到.csv格式文件中问题...

本帖最后由 Adrian 于 2012-6-25 17:02 编辑

      由于单片机空间程序有限,现在只能使用petit fatfs,还不错,编译后占大约几K的ROM,限制是不能创建文件和目录,因此要保存数据时只能打开预先存在SD卡上的文件,而且保存数据后文件不能比原来的大,速度也比较慢。FATFS官网有详细介绍http://elm-chan.org/fsw/ff/00index_e.html。我要读写的文件为data.csv,电脑上创建的时候填充些无用的字符,大约几M大小。现在希望将数据保存为如下格式:保存数据时如果检测到data.csv没有保存过数据,则将前3行格式化为如图所示,这步现在已经能实现。然后每保存一组数据#和$之间的数字加1,$和#之间的数为前面数字的校验值。现在有以下两个问题:


1、由于每保存一组数据就需要更新第二行的数字(记录个数和校验值),结果发现第一行标题和第三行目录全没了。我是这样做的先用pf_lseek(sizeof(数据存储记录)),将指针定位到第二行字符位置,然后pf_write将格式化的第二行写进去。最后pf_write (0,0,0)。

2、同样的方法保存每一条数据,指针往后移,一条数据大约700个字节左右。在保存数据时还发现会把前面的一些记录清掉几个字节的样子,看起来不整齐了。

      现在感觉就是我设计的是写几个几十个字节,可能写了512个字节。。不会是每次写之前都要读出来512个字节到buffer,再把要修改的塞进去,最后将buffer写进去?想想就D疼,没试。


你知道怎么解决吗?谢谢。

sync765 发表于 2012-6-25 18:05:04

绑定
没用过 petit fatfs

Pony279 发表于 2012-6-25 18:09:08

现在的 SD 卡的数据每次最小的读取量就是一个扇区的大小,通常是 512 字节,想要做到正常的任意读写,单片机没有一定的 RAM 是不可能的。

chenerbox2 发表于 2012-6-25 18:26:45

才动了用 csv的念头,帮不上,不过在arm区发帖,ram不是问题吧

Adrian 发表于 2012-6-25 20:15:22

RAM 4K 够用的就是flash小了64k,再折腾一晚上。

showgu 发表于 2012-6-26 20:48:55

可以上完整版也没问题。

Adrian 发表于 2012-6-27 11:09:12

showgu 发表于 2012-6-26 20:48 static/image/common/back.gif
可以上完整版也没问题。

不带文件系统flash就用了50几KB了,移植过去fatfs放不下,tiny fatfs也空间不够,只好用这个petit fatfs了。

sczh01 发表于 2012-6-30 23:05:27

kalo425 发表于 2013-11-26 15:48:35

你好,请问,能告诉俺,怎么样格式化写入,格式化读出么??

我知道 fatfs有个 f_printf. 保存的时候就保存.csv?能给个例子看看么···

kalo425 发表于 2013-11-26 20:35:50

可爱的小鸭子兄···不理我捏···{:cry:}

FZK374470412 发表于 2014-1-5 20:14:41

呵呵呵表示路过..........................
页: [1]
查看完整版本: 使用超小文件系统petit fatfs保存数据到.csv格式文件中问题...