guxingganyue 发表于 2011-11-25 10:08:46

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

从我学习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
            }
         }

xtaens 发表于 2011-11-25 11:30:12

mark,沙发,以后在看

chaled 发表于 2011-11-25 11:44:51

mark

ShuJi187 发表于 2011-11-25 12:49:34

Arachne29 发表于 2011-11-27 17:41:01

我来学习一下

lovelywwei 发表于 2012-2-5 17:36:25

顶一下。顶顶更健康

worldheaven 发表于 2012-12-21 23:48:27

学习了,MARK一下

付新辉 发表于 2013-1-27 13:16:33

mark
以后再看

付新辉 发表于 2013-2-21 11:53:09

LZ请教一个问题:如何通过程序来检测TF卡的插入和拔出?
就是程序已经在运行了,现在插入TF卡,程序如何来检测TF卡的插入从而初始化TF卡?(SD卡好象是有一引脚可以判断卡的插入)
一直在往TF卡中保存数据,现在拔出TF卡,程序如何检测到TF卡的拔出从而停止向TF卡里写数据?

guxingganyue 发表于 2013-2-23 14:28:52

付新辉 发表于 2013-2-21 11:53 static/image/common/back.gif
LZ请教一个问题:如何通过程序来检测TF卡的插入和拔出?
就是程序已经在运行了,现在插入TF卡,程序如何来 ...

用带卡检测的卡座即可

linh05 发表于 2013-2-23 20:31:19

mark 一下

付新辉 发表于 2013-2-25 15:10:22

guxingganyue 发表于 2013-2-23 14:28 static/image/common/back.gif
用带卡检测的卡座即可

恩。翻盖的卡槽只有8引脚,无法检测卡的插入、拔出情况。弹出式的有9个引脚,有一引脚可以用来判断卡的插入还是拔出。卡插入时,用来检测的引脚会变成低电平。

njchenmin 发表于 2013-3-2 19:16:00

经验之谈,努力学习

xiefy21 发表于 2013-8-14 12:05:02

mark……
顶一个…

keinYe 发表于 2013-8-14 16:16:24

学习了,有用的东西啊!

sinc_mark 发表于 2013-8-14 16:52:43

楼主的2132跑操作系统不?

diskcopy 发表于 2013-8-14 17:20:33

有用的东西

guxingganyue 发表于 2013-8-14 19:52:05

sinc_mark 发表于 2013-8-14 16:52 static/image/common/back.gif
楼主的2132跑操作系统不?

裸跑的,没有系统

Jach_cc 发表于 2013-9-23 22:21:43

谢谢楼主分享咯。

lichuang是好人 发表于 2014-2-8 10:34:58

MARK{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}

machangsong521 发表于 2014-4-8 22:40:07

总结的挺全面的,学习了,不过自己还得练习啊

gongxd 发表于 2014-4-9 07:02:21

付新辉 发表于 2013-2-21 11:53
LZ请教一个问题:如何通过程序来检测TF卡的插入和拔出?
就是程序已经在运行了,现在插入TF卡,程序如何来 ...

用带检测的插座
可以实现热插拔SD卡
页: [1]
查看完整版本: 总结一下这2个月来用FATFS写TF卡的一些注意点,还有一些问题请大家指点