搜索
bottom↓
回复: 11

求指导! 用过FATFS的大侠请进!SD卡读写正常,fatfs却用不了

[复制链接]

出0入22汤圆

发表于 2012-7-24 09:36:34 | 显示全部楼层 |阅读模式
最近在2440上玩fatfs被卡住了,花了几天时间研究SD卡,现在底层sd卡读写数据都可以,但是上了fat就不行了

现象是这样的:初始化能成功,f_mount也返回成功   但是之后f_open之类的指令都不行,每次调用这些函数串口总打印出sd卡初始化的信息,感觉就是sd卡初始化又被调用了一次
  1.         res= disk_initialize (0);
  2.         if(res==0)          printf("SD_init OK! \n");
  3.         else                  printf("SD_init Fault! \n");

  4.         res=f_mount(0,&fs);
  5.         if(res==0)          printf("SD_mount OK! \n");
  6.         else                  printf("SD_mount Fault! \n");

  7.         res = f_open(&fil, "123.txt", FA_CREATE_NEW);
  8.         if(res==0)          printf("f_open 123.txt OK! \n");
  9.         else                  printf("f_open 123.txt  Fault!  res= %d\n",res);

  10.         res=f_mount(0,0);
  11.         if(res==0)          printf("SD_UN_mount OK! \n");
  12.         else                  printf("SD_UN_mount Fault! \n");
复制代码
代码如上,效果如下图


sd卡底层测试如下:

上图是测试代码

上图是串口读取8194扇区内容输出到串口

上图是winhex查看sd卡的8194扇区内容数据
数据显示一模一样了,写入连续8个扇区,winhex查看连续8个扇区都正确

请做过这个的朋友传授点经验!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入22汤圆

 楼主| 发表于 2012-7-24 10:17:12 | 显示全部楼层
那么快就沉底了额!

出0入0汤圆

发表于 2012-7-24 11:48:46 | 显示全部楼层
f_open里有没有调用sd初始化函数?

出0入22汤圆

 楼主| 发表于 2012-7-24 14:23:19 | 显示全部楼层
Adrian 发表于 2012-7-24 11:48
f_open里有没有调用sd初始化函数?

看了下,是有调用的,如果这样,难道每次调用fat里面的函数都要来一次初始化?很多函数都有调用
sd卡不是初始化一次就够了吗

出0入0汤圆

发表于 2012-7-24 14:30:35 | 显示全部楼层
jiaowoxiaolu 发表于 2012-7-24 14:23
看了下,是有调用的,如果这样,难道每次调用fat里面的函数都要来一次初始化?很多函数都有调用
sd卡不是 ...

开始初始化一次就够了。

出0入0汤圆

发表于 2012-7-25 17:25:08 | 显示全部楼层
哈哈  这是文件系统有bug,我以前也遇到过

出0入22汤圆

 楼主| 发表于 2012-7-25 19:21:05 | 显示全部楼层
hui1011 发表于 2012-7-25 17:25
哈哈  这是文件系统有bug,我以前也遇到过

闷头几天,现在已经能读取文件了,哎,万事还得靠自己!

出0入0汤圆

发表于 2012-7-30 10:56:50 | 显示全部楼层
怎么解决的。我的也是一样啊。还没解决qq1183557534,希望能给些帮助。万分感谢

出0入0汤圆

发表于 2012-7-30 10:58:11 | 显示全部楼层
楼主,帮你顶顶,你可得帮帮小弟啊。正在纠结中

出0入22汤圆

 楼主| 发表于 2012-7-30 11:29:44 | 显示全部楼层
51_jiaduoW~W 发表于 2012-7-30 10:58
楼主,帮你顶顶,你可得帮帮小弟啊。正在纠结中

实际上MDK自带的头文件那里有点问题,就是那个S3C2440.h里面关于SDIDAT寄存器定义成了char,导致我读取数据本应该读取到4个字节的,结果只读了1个字节,我看2440的说明书,上面某些寄存器明明只写了只能按char读取但实际上是按word来用的

出0入0汤圆

发表于 2012-7-30 14:58:05 | 显示全部楼层
我现在执行读写函数都不报错,但只能正常读取数据,无法建立一个文件

出0入0汤圆

发表于 2012-8-2 15:58:51 | 显示全部楼层
坛子里是不是有人放了fatfs啊

其实 我是来顶这个
上联:小撸怡情,大撸伤身,强撸灰飞烟灭!
下联:先撕长裙,后撕短裤,百撕不得骑姐!
横批:无撸木骑
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 10:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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