野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11484|回复: 16

引脚连接不同会不会影响SD卡操作,帮忙看看

[复制链接]
发表于 2015-9-1 16:37:14 | 显示全部楼层 |阅读模式
本帖最后由 星空的sai 于 2015-9-1 16:43 编辑

sd卡模块不能创建文件可以读写和擦除。是例程程序,可以用。我发现SD卡模块的引脚接法和开发板不同。这是否会影响呢第一张为sd卡模块。第二张和开发板一样可以用的
QQ截图20150901163135.png
QQ截图20150901163203.png


QQ截图20150901164355.png
回复

使用道具 举报

发表于 2015-9-1 18:41:36 | 显示全部楼层
你用SD模块跑裸机程序可以实现读写吗(没有文件系统那个例程)??
还是说跑了文件系统可以读写文件,只是不能创建文件??
如果后面这种情况的话应该是文件系统配置问题吧(修改ffconf.h文件试试)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-1 19:04:55 | 显示全部楼层
亽亼 发表于 2015-9-1 18:41
你用SD模块跑裸机程序可以实现读写吗(没有文件系统那个例程)??
还是说跑了文件系统可以读写文件,只是 ...

但是,我用开发板是没问题的也,可以创建文件
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-1 19:05:50 | 显示全部楼层
亽亼 发表于 2015-9-1 18:41
你用SD模块跑裸机程序可以实现读写吗(没有文件系统那个例程)??
还是说跑了文件系统可以读写文件,只是 ...

跑裸机程序没问题
回复 支持 反对

使用道具 举报

发表于 2015-9-2 08:37:39 | 显示全部楼层
你现在的问题就是:程序在开发板上跑可以用文件系统创建文件并读写都没问题
而使用同个程序使用SD卡模块的话文件系统只能读写文件而不可以创建文件????
你的SD卡模块跟开发板是使用同张SD卡??可以的话换张卡试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-2 09:50:55 | 显示全部楼层
亽亼 发表于 2015-9-2 08:37
你现在的问题就是:程序在开发板上跑可以用文件系统创建文件并读写都没问题
而使用同个程序使用SD卡模块的 ...

不能读写文件,程序运行到res = f_open(&fnew, "0:123.txt", FA_WRITE |FA_READ);就不能走了。是跑裸机程序可以读写,擦除测试通过。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-2 09:58:35 | 显示全部楼层
亽亼 发表于 2015-9-2 08:37
你现在的问题就是:程序在开发板上跑可以用文件系统创建文件并读写都没问题
而使用同个程序使用SD卡模块的 ...

文件系统为fat32,单元为4096吧,换第二张卡还是一样。是不是因为脚连接得不一样,所以不能创建文件呢。我看原理图,觉得模块和开发板脚连得不一样,模块的9脚为D2。开发板不是
回复 支持 反对

使用道具 举报

发表于 2015-9-2 15:04:38 | 显示全部楼层
SD卡的一般是512的不是4096
裸机可以读写一般来说硬件基本上是没问题的
文件系统也是在裸机读写程序基础上移植的,文件系统并没有其他特殊直接控制硬件的
感觉是你文件系统问题
你用串口打印result=f_mount()函数结果,还有res = f_open(&fnew, "0:123.txt", FA_WRITE |FA_CREATE_ALWAYS);结果
一般先测试读文件函数,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-2 16:05:39 | 显示全部楼层
亽亼 发表于 2015-9-2 15:04
SD卡的一般是512的不是4096
裸机可以读写一般来说硬件基本上是没问题的
文件系统也是在裸机读写程序基础 ...

开发板和我的一块小系统板可以正常使用。res=9.无效目录。上面那是我用作测试读写文件用的。我在电脑创建好的。我一直用的是文件系统的例程。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-2 16:15:10 | 显示全部楼层
亽亼 发表于 2015-9-2 15:04
SD卡的一般是512的不是4096
裸机可以读写一般来说硬件基本上是没问题的
文件系统也是在裸机读写程序基础 ...

f_mount()=0x08004112.前面没有什么问题。程序会停在        if ( res == FR_OK )这里。res=9.我的开发板和一块带sd模块的最小系统用同样的程序和同样的卡没有这样问题
回复 支持 反对

使用道具 举报

发表于 2015-9-2 17:20:33 | 显示全部楼层
res=f_mount(0,&fs);
printf("mount_res:%d\n",res);
这个res值是多少,,如果res不为0,你下面程序都无法正常运行的
你现在就是
运行res = f_open(&fnew, "0:123.txt", FA_WRITE |FA_CREATE_ALWAYS);
之后res=9  ???

回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-5 10:51:12 | 显示全部楼层
亽亼 发表于 2015-9-2 17:20
res=f_mount(0,&fs);
printf("mount_res:%d\n",res);
这个res值是多少,,如果res不为0,你下面程序都无 ...

是的,就是在判断res是否等于0执行不了。res=9.无效目录
回复 支持 反对

使用道具 举报

发表于 2015-9-5 11:04:49 | 显示全部楼层
res=f_mount(0,&fs);
printf("mount_res:%d\n",res);
这个res值是多少
另外,你打开ffconf.h文件配置成支持长文件名支持的试试看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-5 11:22:57 | 显示全部楼层
亽亼 发表于 2015-9-5 11:04
res=f_mount(0,&fs);
printf("mount_res:%d\n",res);
这个res值是多少

仿真后,f_mount(0,&fs)=0x08004112.          #define        _USE_LFN        1        这样也没用
回复 支持 反对

使用道具 举报

发表于 2015-9-5 13:33:14 | 显示全部楼层
res=f_mount(0,&fs);
这个值不对,这个也是fatfs一个函数是有返回值的,返回值应该为0才是正确
http://elm-chan.org/fsw/ff/00index_e.html
你移植新版本fatfs试试吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-5 13:35:36 | 显示全部楼层
亽亼 发表于 2015-9-5 13:33
res=f_mount(0,&fs);
这个值不对,这个也是fatfs一个函数是有返回值的,返回值应该为0才是正确
http://el ...

谢啦            
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-6 10:13:28 | 显示全部楼层
亽亼 发表于 2015-9-5 13:33
res=f_mount(0,&fs);
这个值不对,这个也是fatfs一个函数是有返回值的,返回值应该为0才是正确
http://el ...

那个sdio和模块线太长会不会也会影响呢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 18:22 , Processed in 0.041122 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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