野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12686|回复: 9

sd卡

[复制链接]
发表于 2016-5-16 12:56:13 | 显示全部楼层 |阅读模式
我用STM32-ISO采集MPU56050数据,然后每30分钟保存一个文件到16G的SD卡上。 连续保存1天后(大约保存48个文件后),我发现程序在文件创建的某个地方进入死循环,而无法创建新数据文件! 然后我重启,发现仅可以创建当前一个数据文件,然后又进入死循环!从此以后,重启一次保存一个文件,再也无法连续自动保存文件了。请问这是怎么回事?有什么解决的办法吗?!!!!

回复

使用道具 举报

发表于 2016-5-16 13:59:28 | 显示全部楼层
打开的文件是不是没有关闭?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-16 14:57:03 | 显示全部楼层
应该关闭了。因为格式化后能连续保存40多个数据文件。经调试后发现进入f_open函数后,就在某处进入死循环。 应该是文件没有创,却没有任何提示信息?!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-16 16:42:59 | 显示全部楼层
我的文件名字有35个字符 是不是太长了?
回复 支持 反对

使用道具 举报

发表于 2016-5-16 18:48:14 | 显示全部楼层
zhangshugang 发表于 2016-5-16 16:42
我的文件名字有35个字符 是不是太长了?

有可能,把它弄短一点试试。在调用f_open后可通过它的返回值来查看出了什么错误
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-17 09:02:18 | 显示全部楼层
好的 谢谢 火哥
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-18 14:49:27 | 显示全部楼层
火哥,还是那个问题,这次保存了85个文件(68.1M数据)后,只能重起ISO才能创建新文件。是不是要用f_mount()提前指定保存区域的大小?那怎么指定呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-25 14:25:42 | 显示全部楼层
请问你们做测试的sd卡是那个牌子的 是多大的 我想买一款试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-25 14:57:29 | 显示全部楼层
火哥我根据你提供的程序写的用sd卡保存MPU9150数据,两天后就不能保存了。火哥帮我看看程序吧,我做保存SD卡数据的程序如下:
...
char buffer2[101];
...
int main(void)
{
      ...
     float Init_Accel[3], Init_Gyrol[3],Init_Magn[3];//stm32 采集到的9轴数据
     int Num;
     ...
     f_mount(0,&fs);
     while(1)
     {
             sprintf(buffer2,"%10d%10.4f%10.4f%10.4f%10.4f%10.4f%10.4f%10.4f%10.4f%10.4f\r\n",\
                      Num,Init_Accel[0],Init_Accel[1],Init_Accel[2],Init_Gyrol[0],Init_Gyrol[1],Init_Gyrol[2],\
                      Init_Magn[0],Init_Magn[1],Init_Magn[2]);  //将MPU9150采集到的9轴数据保存到数组buffer2中。
            
             Task_Delay[0]=100*50;//延时50ms
              while(Task_Delay[0]>0)
              {
              }

             res = f_open(&fnew, Filename, FA_OPEN_ALWAYS |FA_WRITE );//Filename每 30分钟便一个名字
            res =f_lseek(&fnew,f_size(&fnew));
            res = f_write(&fnew, buffer2, sizeof(buffer2), &bw);
            f_close(&fnew);

            Task_Delay[0]=100*50;//延时50ms
              while(Task_Delay[0]>0)
              {
              }
              ....

      }
      f_mount(0, NULL);
}
回复 支持 反对

使用道具 举报

发表于 2016-5-25 17:24:01 | 显示全部楼层
zhangshugang 发表于 2016-5-25 14:25
请问你们做测试的sd卡是那个牌子的 是多大的 我想买一款试试

4G或者8G都有,你直接去淘宝下单就可以
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-27 16:55 , Processed in 0.029472 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表