打印

总结一下这2个月来用FATFS写TF卡的一些注意点,还有一些问题

[复制链接]
7939|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
(⊙o⊙)你|  楼主 | 2011-11-25 10:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
从我学习FATFS到现在已经2个月了,大概能操作TF卡后就开始往里写数据,还一直在改写写卡的逻辑,下面是我在写卡时总结的(可能并不适应与你)。

1、硬件:lpc2132 硬件SPI操作 22M主频
2、文件系统:FATFS R0.09
3、卡:2G、4G、16G(有的是大陆产的,有的是台湾产的。目前2G的卡有大陆和台湾产的,发现大陆的这个没台湾的好,写卡时电流不稳定,而台湾的那个很 稳)
4、数据:AD采样进来的音频数据,短的几秒钟,长得几个小时
5、方式:录完一个系统进入掉电模式,有录音需要时再起来录(每次单片机起来这里就会建立一个txt文件)
6、AD:pcm1870(谁用过这个东东呢,它老是丢数,我问ti在线支持了,他们没给我个好的解决方法,不知你们发现没有丢数这个现象)
7、采样率:8K


注意点:1、在TF卡中写时不要直接在根目录下写文件,最好先建立一个文件夹,在文件夹里写,这样工作电流就会小很多,而且电流也很稳定(主要原因)
        2、一个文件夹里的txt文件数目不能太多,否则单片机从掉电模式起来到写卡时有点慢,会造成前面的数据丢失(我的2G的卡里,每个文件夹里的文件不能超过50个,超过后唤醒单片机到写卡时间过长,造成一些数据丢失)
        3、小容量卡写电流小,大容量卡写电流大(2G:40mA,4G:50mA,16G:100mA,)
        4、写小的文件(写几秒就要关闭的)用f_sync(&file);写大文件(就是连续写n个小时)用f_close(&file);

还在郁闷的问题:
1、第一次单片机从掉电模式起来的比较慢(大概2秒),但从第二次后起来就非常快了
    注:程序到while(1)前面就进入掉电模式了,每次从掉电模式起来就到while(1)里了,执行的语句都是一模一样的啊,怎么会这样呢

2、由于第一点的迷惑,我怀疑单片机从掉电模式起来后是不是从while(1)哪里执行呢?不是说:从哪里掉电,起来时就从那里执行的吗??

3、2G的卡写电流很稳定,但4G和16G的就不怎么稳定了,尤其是16G的,写卡时电流摆动很大,即使寻址范围大也不至于电流摆动那么大吧
   我的16G卡写电流摆动范围:50mA-100mA啊,天哪,手机里或别的电子产品里可不是这样啊,难道这是fatfs的原因,或是我写卡的逻辑不对????????????????????

这是我写卡的程序:SD_Write_Flag是定时器里的一个变量,如果SPI数据寄存器满了(AD给的数据),他就为1,定时器每个500us去看一次,
         if(SD_Write_Flag)   
         {
            SD_Write_Flag=0;
            if(buffer_number)
            {
              res1 = f_write(&file, buffer1, 512, &br);     //写入
              f_sync(&file);  
              IO0SET |=1<<15;         //P0.15输出高,关闭LED
            }
            else
            {
              res1 = f_write(&file, buffer0, 512, &br);     //写入
              f_sync(&file);  
              IO0CLR |=(1<<15);      //P0.15输出低,点亮LED
            }
         }

相关帖子

沙发
(⊙o⊙)你|  楼主 | 2011-11-25 22:39 | 只看该作者
难道没人用过fatfs写过卡,或不屑回答我吗

使用特权

评论回复
板凳
hardfire| | 2011-11-30 12:57 | 只看该作者
太细节了,很难帮到,一个问题:
你的SPI_SD硬件接口是多少bit的?1 or 4bit?  4bit 好像最大是32G?

使用特权

评论回复
地板
(⊙o⊙)你|  楼主 | 2011-11-30 14:31 | 只看该作者
4bit的啊

使用特权

评论回复
5
HORSE7812| | 2012-7-2 11:04 | 只看该作者
好复杂呀!先学习了

使用特权

评论回复
6
wpz1988| | 2013-1-25 12:31 | 只看该作者
学习了,请问测电流测的是那个接口的?

使用特权

评论回复
7
inurl| | 2013-1-25 16:46 | 只看该作者
呵呵, 测试真详细

使用特权

评论回复
8
达达船长| | 2013-11-15 15:43 | 只看该作者
正在学习fatfs呢

使用特权

评论回复
9
bu2zhouzhu| | 2014-2-18 11:32 | 只看该作者
本帖最后由 bu2zhouzhu 于 2014-2-18 11:34 编辑

学习了。对我有帮助
f_write()函数最后一个参数应该是 &bw

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

58

帖子

1

粉丝