OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5256|回复: 8

FATFS文件系统相关问题,求大神指教,谢谢

[复制链接]

9

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-4-25
在线时间
10 小时
发表于 2014-7-27 17:05:16 | 显示全部楼层 |阅读模式
5金钱
我最近在调试SD卡的读写,偶尔会出现以下问题:文件放在电脑上无法打开,提示“文件太大....”错误,有时候也会提示“文件已经损坏...”错误,不知道大家遇到这个问题没有,我每次写入的字节数没有超过定义的数组缓存,我每次最多写入512字节,实在找不到问题所在,希望大家帮忙指点,谢谢
res = f_write(&file, (const char*)CameraReceiveBuf + 5, pak_lenth, &bw);//sizeof(sd_buffer)
      if((!bw) || (res != FR_OK)) /*EOF or Error*/
      {
       xprintf("write error\n");
       f_close(&file);
       return 1; 
      }         
      f_sync(&file);
出现这种情况,一般有哪些原因呢?大神可以指点一二,我结合几种原因去分析一下程序

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

69

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2013-6-10
在线时间
0 小时
发表于 2014-7-27 17:10:17 | 显示全部楼层
f_sync(&file);后边有f_close(&file);操作吗
回复

使用道具 举报

9

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-4-25
在线时间
10 小时
 楼主| 发表于 2014-7-27 17:33:35 | 显示全部楼层
回复【2楼】guooay耀:
---------------------------------
有啊,我这个是循环写入的,写完之后会close的
res = f_open(&file, path, FA_WRITE|FA_OPEN_ALWAYS);      
if(FR_OK != res)
{ //文件打开错误
xprintf("\n\nSD %s open file error: %d !\n\r", path, res);
f_close(&file);
return 1; 
}
else
{
if((totallen%CAMERAPAKLEN)==0)
pak_num = totallen/CAMERAPAKLEN;
else
         pak_num = totallen/CAMERAPAKLEN + 1;

for(j = 0;j < pak_num;j++)
{
for(k=0;k<20;k++)
{
check_lcddevice_linktime();
pak_lenth = camera_readdata(i, totallen, j);
if(pak_lenth>0)
{
res = f_write(&file, (const char*)CameraReceiveBuf + 5, pak_lenth, &bw);//sizeof(sd_buffer)
if((!bw) || (res != FR_OK)) /*EOF or Error*/
{
xprintf("write error\n");
f_close(&file);
return 1;  
}          
f_sync(&file);
break;
}
}
xprintf("recv photo data lenth %d\n",pak_lenth);
}            
}
}

f_close(&file);
xprintf("\r\n=====write photo data Done!!=====\r\n\r\n");
回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2014-7-27 20:32:03 | 显示全部楼层
这个问题我也遇到过,甚至还搞坏了一个读卡器。原因是程序不断向SD卡写数据写满了还不知道
手艺人要内外兼修。
回复

使用道具 举报

9

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-4-25
在线时间
10 小时
 楼主| 发表于 2014-7-28 09:28:25 | 显示全部楼层
回复【4楼】wangyan915205:
---------------------------------
我也搞坏了一个读卡器的,不应该会写满啊,我每次写入的最多只有几K而已,我的SD卡是8G的,你的问题怎么解决的呢?
回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2014-7-28 11:52:30 | 显示全部楼层
我用的是128M的TF卡,自己验证FAT32系统的一些应用函数时,向TF卡写数据或新建文件,然后取出TF卡用读卡器读数据,发现卡无法打开,数据已满。把卡格式化之后就好了。就是不断验证加上不断理解源码,我觉得只有这样才能真正掌握文件系统的应用函数含义和用法。
手艺人要内外兼修。
回复

使用道具 举报

9

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-4-25
在线时间
10 小时
 楼主| 发表于 2014-7-28 22:01:16 | 显示全部楼层
回复【6楼】wangyan915205:
---------------------------------
你好,还有一个问题不知道你遇到过没,我创建目录的时候出现了异常,出现了回归目录,目录里面还是目录,死循环,这种情况一般是什么原因呢?也不是每次都出现这个问题,偶尔会出现
回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2014-7-28 22:12:22 | 显示全部楼层
没遇到过。是否代码有问题?
手艺人要内外兼修。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-29 00:11:16 | 显示全部楼层
回复【3楼】lvxinkaiandy:
---------------------------------
你这代码逻辑好混乱啊。
你先写个简单的。
我写文件,从来不用f_sync函数的,直接就是:
f_open
while(1)
{
写/读操作
}
f_close。
就完事了。

没遇到过什么问题。
建议你先用简单的操作,验证下先
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-5 01:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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