4803|16

48

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

求大神指导!如何将FATFS一直到SD卡上??急!!! [复制链接]

RT,板子F5528的芯片,模拟IO口SPI模式通信SD,小弟目前编了个SD卡的驱动,想在SD卡上完成FATFS 的系统植入,并能够在PC上显示出SD卡中的数据。FATFS用的是0.9版本的,看了网友其他人做的SD卡数据读写,里面都有diskio.c,而这版没有。。。。不知需不需要编????

看了ff.c中的一堆函数,不知如何用啊??是在main中调用吗??可是函数本身的定义有问题啊,FRESULT f_mount(),这个FRESULT什么意思啊??

跪求大神给知道一下!!谢谢!!

最新回复

你主函数里面好像没有写路径 path[x]={"0:abc.txt"}; 在根目录找abc.txt这个文件  详情 回复 发表于 2012-3-25 08:56
 
点赞 关注

回复
举报

48

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
...没人啊....
 
 

回复

48

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
 
 
 

回复

188

帖子

0

TA的资源

纯净的硅(中级)

4
 
基于SD卡的FATFS源码,MSP430F5529上的。

FatFs.rar

491.2 KB, 下载次数: 90

 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(高级)

5
 

回复 4楼 peter_zheng 的帖子

好心人啊,看见你回答那个SPI的问题了,我这其实也有好多问题,也有很多药要请教的。
这个FAT困扰我很久了。。。。一直没调通。。。。
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(高级)

6
 

回复 4楼 peter_zheng 的帖子

目前一直在f_mount上过不去了
main代码如下:
void main()
{

  WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
  P2OUT |=  BIT2 + BIT3 + BIT4 + BIT5;
  P2DIR |= BIT2 + BIT3 + BIT4 + BIT5;    //LED
  P1DIR &= ~( BIT4 + BIT5 + BIT6 + BIT7 );  //按键
  P1IES |= BIT4 + BIT5 + BIT6 + BIT7;
  P1IE |= BIT4 + BIT5 + BIT6 + BIT7;
  P2IFG =0;

  SpiSetup();

   _EINT(); LPM4;

        FRESULT rc;                                /* Result code */
        DIRE dir;                                /* Directory object */
        FILINFO fno;                        /* File information object */
        UINT bw, br, i;


        f_mount(0, &Fatfs);                /* Register volume work area (never fails) */

        printf("\nOpen an existing file (message.txt).\n");
        rc = f_open(&Fil, "MESSAGE.TXT", FA_READ);
        if (rc) die(rc);

        printf("\nType the file content.\n");
        for (;;) {
                rc = f_read(&Fil, Buff, sizeof Buff, &br);        /* Read a chunk of file */
                if (rc || !br) break;                        /* Error or end of file */
                for (i = 0; i < br; i++)                /* Type the data */
                        putchar(Buff);
        }
        if (rc) die(rc);

        printf("\nClose the file.\n");
        rc = f_close(&Fil);
        if (rc) die(rc);

        printf("\nCreate a new file (hello.txt).\n");
        rc = f_open(&Fil, "HELLO.TXT", FA_WRITE | FA_CREATE_ALWAYS);
        if (rc) die(rc);

        printf("\nWrite a text data. (Hello world!)\n");
        rc = f_write(&Fil, "Hello world!\r\n", 14, &bw);
        if (rc) die(rc);
        printf("%u bytes written.\n", bw);

        printf("\nClose the file.\n");
        rc = f_close(&Fil);
        if (rc) die(rc);

        printf("\nOpen root directory.\n");
        rc = f_opendir(&dir, "");
        if (rc) die(rc);

        printf("\nDirectory listing...\n");
        for (;;) {
                rc = f_readdir(&dir, &fno);                /* Read a directory item */
                if (rc || !fno.fname[0]) break;        /* Error or end of dir */
                if (fno.fattrib & AM_DIR)
                        printf("     %s\n", fno.fname);
                else
                        printf("%8lu  %s\n", fno.fsize, fno.fname);
        }
        if (rc) die(rc);

        printf("\nTest completed.\n");
        for (;;) ;

}

求指教
 
 
 

回复

98

帖子

0

TA的资源

一粒金砂(高级)

7
 
你mount不上的返回信息是什么?fatfs我移植了,基本上没有问题,多半问题是底层驱动的。分别在1611,,5137,5438上都运行了。最好单步追一下。
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(高级)

8
 

回复 7楼 peter_ly 的帖子

执行到F_MOUNT这步,就warning,说我的STACK超字节了。。。。是不是这IAR 哪有堆栈字节的上限??我查过我的debug,最多个一个是1538字节。
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(高级)

9
 

回复 7楼 peter_ly 的帖子

是到那有warning ,然后就执行不下去了,说我的堆栈指针指向的内容超出了堆栈的范围。。。。

[ 本帖最后由 shenmiao0330 于 2012-3-21 17:07 编辑 ]

QQ截图20120321170703.png (90.12 KB, 下载次数: 4)

QQ截图20120321170703.png
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(高级)

10
 
另外有个问题想请教,主函数里从f_mount,f_open,f_read或者f_write一直没有涉及到disk_initialize这个函数,那么这个初始化函数用在哪了??
看到大部分人的做FATFS移植的,主函数都这么写,没有初始化函数,可又都是成功案例,这真是搞不懂。。。。
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(高级)

11
 

回复 7楼 peter_ly 的帖子

我这运行到f_mount说我的堆栈指针在堆栈范围外。。。。。不知怎么回事?

[ 本帖最后由 shenmiao0330 于 2012-3-21 21:46 编辑 ]

QQ截图20120321214808.png (80.12 KB, 下载次数: 0)

QQ截图20120321214808.png
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(高级)

12
 

回复 7楼 peter_ly 的帖子

你好,我还有些问题想深入跟你聊聊,这是我的QQ240230917,希望您能够帮我一下!
 
 
 

回复

98

帖子

0

TA的资源

一粒金砂(高级)

13
 
disk_initalize在f_mount之前调用,在f_open好像有,记不清了,堆栈问题你看看ffconfig,里面把tiny选上,我用1611 10K RAM,没有提示堆栈的问题。
 
 
 

回复

98

帖子

0

TA的资源

一粒金砂(高级)

14
 
没加上你,不知道为什么没有确定。我上网时间不是很固定,尽量帮你吧。堆栈的问题,不知道你用的什么芯片,RAM太小好象确实不行,他fatfs一个文件对象里面就要512byte来做缓存,所以还是选大ram的,在5438上跑我也总跑飞,怀疑芯片的问题,1611就很稳定。在ff.h还有ffconf.h里面有些配置,你看看是不是能改改,最好选上tiny。
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(高级)

15
 

回复 14楼 peter_ly 的帖子

恩,我熬了一个通宵,还是没出来,现在是f-open是老师返回不了正确的值,不知是不是因为5528的芯片不稳定问题。5528是128K ram 应该没问题吧。。。。我这用的0.4版本的FATFS,没找着FFCONF.H。。。。。

5528-附.zip

201.55 KB, 下载次数: 13

 
 
 

回复

98

帖子

0

TA的资源

一粒金砂(高级)

16
 
你主函数里面好像没有写路径 path[x]={"0:abc.txt"}; 在根目录找abc.txt这个文件
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(高级)

17
 

回复 16楼 peter_ly 的帖子

恩,目前曾写入成功,不过不太稳定,正在调试中。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表