你尚未登录 |登录 |快速注册 |退出 首页 酷贴 搜索 在线 本网站由阿莫电子邮购独家赞助
论坛首页 -> STM32/STM8 技术讨论区 -> 为STM32移植FATFS,读取SD卡上FAT12/16/32文件系统[Update:2008-9-25,11:52]【恢复】 (属于论坛:STM32/8) 跳转至: 登录后才能发表新主题
为STM32移植FATFS,读取SD卡上FAT12/16/32文件系统[Update:2008-9-25,11:52]【恢复】 回复数:125,点击数:8752
抱歉本贴的回复数太多,为了减轻网络流量,只显示帖子正文的前后各10个回复。本贴的正文内容中间隐藏了105个回复。你需要 点击此处 才能查看全部内容。
对为你带来的访问不便表示歉意。不过我们仍会坚持即使没有登录,仍能共享我们网站的所有资料。你没有 登录后就能消除这个访问上的不便(可增加到显示60个回复)。
如果你是新用户请先 注册。注册是免费的,并且手续简单只需要填写用户名与口令。
↓↓↓↓↓↓↓↓↓↓↓↓
【楼主位】 ifree64
积分:916
派别:
等级:------
来自:火星
给stm32移植fatfs文件系统,今天终于取得阶段性胜利。只需要提供这样几个函数即可
DSTATUS disk_initialize (BYTE);
DSTATUS disk_status (BYTE);
DRESULT disk_read (BYTE, BYTE*, DWORD, BYTE);
DRESULT disk_write (BYTE, const BYTE*, DWORD, BYTE); // 如果实现只读的文件系统就不需要了。
DRESULT disk_ioctl (BYTE, BYTE, void*);
移植成功后,可以用如下方式读取SD卡了,实在太方便了,和PC机上编程差不了多少。

    unsigned int i;
    BYTE buffer[512];    // file copy buffer
    FATFS fs;            // Work area (file system object) for logical drive
    FIL fsrc;            // file objects
    FRESULT res;         // FatFs function common result code
    UINT br;             // File R/W count
    USART1_Puts("Now, I'll read file 'i2c/uart.lst'.\n");

    // Register a work area for logical drive 0
    f_mount(0, &fs);

    // Open source file
    res = f_open(&fsrc, "i2c/uart.lst", FA_OPEN_EXISTING | FA_READ);
    if (res) 
    {
        USART1_Puts("Can't open i2c/uart.lst for read. :-(\n");
        goto exit;
    }
    
    for (;;) {
        res = f_read(&fsrc, buffer, sizeof(buffer), &br);
        if (res || br == 0) break;   // error or eof
        for( i = 0; i < br; ++i )
            USART1_Putc(buffer[i]);
    }
       
    f_close(&fsrc);
exit:
    // Unregister a work area before discard it
    f_mount(0, NULL);

源代码:
点击此处下载 ourdev_429063.rar(文件大小:206K) (原文件名:SDFATFS.rar) 


调试结果 (原文件名:fatfs.JPG) 


现在还有点问题:有时正常,有时不正常,还没找到原因。

上面的代码在sd卡初始化上有点问题,下面是修改过的版本,在我的2G SD卡上运转良好。
点击此处下载 ourdev_429587.rar(文件大小:207K) (原文件名:SDFATFS.rar)  

本贴被 ifree64 编辑过,最后修改时间:2008-09-25,11:52:57.
 
2008-09-24,20:37:28
资料 邮件 回复 引用回复 编辑 删除
【1楼】 lanshuitianxia 黑蚂蚁

积分:1668
派别:
等级:------
来自:上海
呵呵 帮顶一下
__________________________
理想+行动=成功
人生不要惧怕错误,要善于从错误中总结经验。
STM32行动中....
uCOS-II学习中....
http://shop34765428.taobao.com/
2008-09-24,20:41:59
资料 邮件 回复 引用回复 编辑 删除
【2楼】 ifree64
积分:916
派别:
等级:------
来自:火星
自己顶一下,沉得真快。
 
2008-09-24,21:55:25
资料 邮件 回复 引用回复 编辑 删除
【3楼】 weijingyan0814 Vinnee
积分:31
派别:
等级:------
来自:
up! 3Q
 
2008-09-24,22:17:20
资料 邮件 回复 引用回复 编辑 删除
【4楼】 418425051 宽

积分:386
派别:
等级:------
来自:
谢谢分享,顺便抢个地板!
__________________________
风月可谈,国事莫问.
2008-09-24,22:39:40
资料 邮件 回复 引用回复 编辑 删除
【5楼】 jamiedu 阿明

积分:180
派别:
等级:------
来自:羊城
好好,谢谢。
__________________________
一步一步慢走,不急。
2008-09-24,23:01:36
资料 邮件 回复 引用回复 编辑 删除
【6楼】 eddia2000
积分:340
派别:
等级:------
来自:
顶下,不要就沉了.
 
2008-09-24,23:08:05
资料 邮件 回复 引用回复 编辑 删除
【7楼】 ifree64
积分:916
派别:
等级:------
来自:火星
找到不稳定的原因了。
SD卡初始化的代码有点问题,今天稍后上传修改后的代码。
谢谢楼上诸位的参与。
 
2008-09-25,07:41:21
资料 邮件 回复 引用回复 编辑 删除
【8楼】 aguiddd
积分:36
派别:
等级:------
来自:
顶,我最近也在弄这个,楼主真好!
 
2008-09-25,08:27:37
资料 邮件 回复 引用回复 编辑 删除
【9楼】 ifree64
积分:916
派别:
等级:------
来自:火星
楼主位代码已经更新,现在读SD卡没有问题了。
 
2008-09-25,11:28:30
资料 邮件 回复 引用回复 编辑 删除
【10楼】 252177861 白色简单

积分:508
派别:
等级:------
来自:湖南
帮顶
__________________________
把微笑留给伤害你最深的人
2008-09-25,12:28:41
资料 邮件 回复 引用回复 编辑 删除
↑↑↑↑↑↑↑↑↑↑↑↑
抱歉本贴的回复数太多,为了减轻网络流量,只显示帖子正文的前后各10个回复。本贴的正文内容中间隐藏了105个回复。你需要 点击此处 才能查看全部内容。
对为你带来的访问不便表示歉意。不过我们仍会坚持即使没有登录,仍能共享我们网站的所有资料。你没有 登录后就能消除这个访问上的不便(可增加到显示60个回复)。
如果你是新用户请先 注册。注册是免费的,并且手续简单只需要填写用户名与口令。
↓↓↓↓↓↓↓↓↓↓↓↓
【116楼】 joyko
积分:227
派别:
等级:------
来自:
我的也没加有无卡检测,感觉PA6的设置输入输出没关系? 我以前没上文件系统的时候照样可以读写,SPI总线的官方例子也是设置为AF-PP的没问题。
 
问题是偶尔会初始化不成功,读成功,写不行,直接返回FR_RW_ERROR ?

本贴被 joyko 编辑过,最后修改时间:2009-08-08,18:19:46.
 
2009-08-08,18:15:51
资料 邮件 回复 引用回复 编辑 删除
【117楼】 friendljy
积分:879
派别:
等级:------
来自:巨鹿
mark
__________________________
-------------------------------------------------------------------------------------
尝试消费电子应用的带有单片机接口的OLED,TFT,在仪表行业的应用。有公司资质,可以对公账户,开发票。
当然也可以淘宝~~
-------------------------------------------------------------------------------------
3.0TFT,分辨率400*240,可选8bit或16bit接口。75RMB送转接板。
http://www.finalic.com/main/showactee.asp?id=26
http://item.taobao.com/auction/item_detail-db2-08494faa9da1d90c2bfbf2f5ad279f22.htm
2009-08-08,18:25:04
资料 邮件 回复 引用回复 编辑 删除
【118楼】 fu0653
积分:8
派别:
等级:------
来自:
你好,謝謝分享。
我試著使用此源碼,會初始化不成功耶,
請問可能是什麼問題??
Now, I'll read file 'aa.txt'.
init failed
Can't open aa.txt for read. :-(

謝謝各位高手幫忙。
感激
 
2009-08-12,22:10:03
资料 邮件 回复 引用回复 编辑 删除
【119楼】 acen 阿杰
积分:7
派别:
等级:------
来自:
好贴一定顶
 
2009-08-19,15:50:36
资料 邮件 回复 引用回复 编辑 删除
【120楼】 dingdangCat

积分:224
派别:
等级:------
来自:四川<--->重庆
marked
__________________________
眼高手低…志大才疏…就算没脑子,也要用自己的脑子思考
2009-08-19,20:11:35
资料 邮件 回复 引用回复 编辑 删除
【121楼】 xinjie1023
积分:400
派别:
等级:------
来自:
顶住
 
2009-08-21,14:36:09
资料 邮件 回复 引用回复 编辑 删除
【122楼】 bwsz1
积分:64
派别:
等级:------
来自:
学习
 
2009-09-07,21:39:13
资料 邮件 回复 引用回复 编辑 删除
【123楼】 03024003
积分:141
派别:
等级:------
来自:
mark
 
2009-09-11,09:51:23
资料 邮件 回复 引用回复 编辑 删除
【124楼】 imzhujun
积分:18
派别:
等级:------
来自:
不知道楼主写SD成功没?
我的SD一直无法写入。搞得我头大~
 
2009-10-21,16:06:19
资料 邮件 回复 引用回复 编辑 删除
【125楼】 imzhujun
积分:18
派别:
等级:------
来自:
找到无法写文件的原因了,无法写文件的朋友可以试试:

u8 SPI_ReadWriteByte(u8 TxData)
{
    u8 i,RxData=0 ;

    while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);

    SPI_I2S_SendData(SPI1,TxData);
    
    for(i=0;i<100;i++); //各位可以试试在这里加个延时

    while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET);
    RxData=SPI_I2S_ReceiveData(SPI1);

    return RxData ;
}
 
2009-10-22,09:01:44
资料 邮件 回复 引用回复 编辑 删除
【126楼】 303539157
积分:2
派别:
等级:------
来自:
感谢58楼的lihui_mc ,其实他是我同学啊,哈哈,问题都解决了
 
2009-12-20,20:50:05
资料 邮件 回复 引用回复 编辑 删除
【127楼】 shmily
积分:198
派别:
等级:------
来自:
mark
 
2009-12-25,11:52:06
资料 邮件 回复 引用回复 编辑 删除
【128楼】 wso75839840
积分:6
派别:
等级:------
来自:
回复【楼主位】ifree64 
-----------------------------------------------------------------------

做个标记,以后学习
 
2010-02-03,23:03:16
资料 邮件 回复 引用回复 编辑 删除
↑↑↑↑↑↑↑↑↑↑↑↑
抱歉本贴的回复数太多,为了减轻网络流量,只显示帖子正文的前后各10个回复。本贴的正文内容中间隐藏了105个回复。你需要 点击此处 才能查看全部内容。
对为你带来的访问不便表示歉意。不过我们仍会坚持即使没有登录,仍能共享我们网站的所有资料。你没有 登录后就能消除这个访问上的不便(可增加到显示60个回复)。
如果你是新用户请先 注册。注册是免费的,并且手续简单只需要填写用户名与口令。
快速回复帖子主题:为STM32移植FATFS,读取SD卡上FAT12/16/32文件系统[Update:2008-9-25,11:52]【恢复】
你尚未登录,不能回复以上帖子。
论坛首页 -> STM32/STM8 技术讨论区 -> 为STM32移植FATFS,读取SD卡上FAT12/16/32文件系统[Update:2008-9-25,11:52]【恢复】 (属于论坛:STM32/8) 跳转至: 登录后才能发表新主题
任何建议或投诉,欢迎随时与我们联系。 ourDEV.cn 我们的电子开发网,友好交流气氛,乐于开源共享,“这里远比混乱的现实世界美好”。
网站负责人:  阿莫(armok),手机:13433056000,电邮:armok ourdev.cn(请将空格改成@)
地址与电话:  东莞市东城八一路同沙工业园内,0769-22298000,传真请按4
 阿莫邮购门市与雕刻机展示厅:东莞市莞城区莞太路和生文具礼品批发市场A2018,A2035 杨小姐 13711915767
 雕刻机的技术咨询、订单查询、生产进度,可查询:13600266008吴先生(雕刻机设计人员kaif_w)
声明:  本网站由东莞科士通(Infostone)科技有限公司属下的阿莫电子邮购部提供独家赞助。
 有正式的工商注册与网站备案。详情可到东莞工商局查询。
 本网站(ourDEV.cn)原名称为ourAVR.com(我们的AVR),自2007-09-01起从专业的AVR网转成综合电子网站。
 本网站系统由armok Using Oracle + Java/JSP + WebLogic + Linux 2001/12/20 -- 2007/09/13
 本BBS所有代码均为原创,版权归 armok 所有。本网站自:2004-10-03,16:31:17 起开始运行。
法律顾问:  本网站尊重知识产权,自2007年08月15日起,魏龙律师担任ourDEV.cn(原ourAVR.com)常年法律顾问。

本网站已经通过了东莞市公安局安全认证许可,请大家遵守国家法律法规。粤ICP备09047143号