|
|
|
| 论坛首页 -> 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]【恢复】 | 回复数:146,点击数:11888 |
|
抱歉本贴的回复数太多,为了减轻网络流量,只显示帖子正文的前后各10个回复。本贴的正文内容中间隐藏了126个回复。你需要 点击此处 才能查看全部内容。 对为你带来的访问不便表示歉意。不过我们仍会坚持即使没有登录,仍能共享我们网站的所有资料。你没有 登录后就能消除这个访问上的不便(可增加到显示60个回复)。 如果你是新用户请先 注册。注册是免费的,并且手续简单只需要填写用户名与口令。 ↓↓↓↓↓↓↓↓↓↓↓↓ |
|
【楼主位】 ifree64 积分:887 派别: 等级:------ 来自:火星 |
给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. |
||
|
|
|
|
【1楼】 lanshuitianxia 黑蚂蚁 积分:1258 派别: 等级:------ 来自:上海 |
呵呵 帮顶一下 | ||
|
__________________________ 理想+行动=成功 人生不要惧怕错误,要善于从错误中总结经验。 STM32行动中.... uCOS-II学习中.... http://shop34765428.taobao.com/ |
|||
|
|
|
|
【2楼】 ifree64 积分:887 派别: 等级:------ 来自:火星 |
自己顶一下,沉得真快。 | ||
|
|
|
|
【3楼】 weijingyan0814 Vinnee 积分:31 派别: 等级:------ 来自: |
up! 3Q | ||
|
|
|
|
【4楼】 418425051 宽 积分:431 派别: 等级:------ 来自:./bbs_upload/files_usericon/armok01415890.jpg |
谢谢分享,顺便抢个地板! | ||
|
|
|
|
【5楼】 jamiedu 阿明 积分:188 派别: 等级:------ 来自:羊城 |
好好,谢谢。 | ||
|
|
|
|
【6楼】 eddia2000 积分:328 派别: 等级:------ 来自: |
顶下,不要就沉了. | ||
|
|
|
|
【7楼】 ifree64 积分:887 派别: 等级:------ 来自:火星 |
找到不稳定的原因了。
SD卡初始化的代码有点问题,今天稍后上传修改后的代码。 谢谢楼上诸位的参与。 |
||
|
|
|
|
【8楼】 aguiddd 积分:36 派别: 等级:------ 来自: |
顶,我最近也在弄这个,楼主真好! | ||
|
|
|
|
【9楼】 ifree64 积分:887 派别: 等级:------ 来自:火星 |
楼主位代码已经更新,现在读SD卡没有问题了。 | ||
|
|
|
|
【10楼】 252177861 白色简单 积分:433 派别: 等级:------ 来自:湖南 |
帮顶 | ||
|
|
|
|
↑↑↑↑↑↑↑↑↑↑↑↑ 抱歉本贴的回复数太多,为了减轻网络流量,只显示帖子正文的前后各10个回复。本贴的正文内容中间隐藏了126个回复。你需要 点击此处 才能查看全部内容。 对为你带来的访问不便表示歉意。不过我们仍会坚持即使没有登录,仍能共享我们网站的所有资料。你没有 登录后就能消除这个访问上的不便(可增加到显示60个回复)。 如果你是新用户请先 注册。注册是免费的,并且手续简单只需要填写用户名与口令。 ↓↓↓↓↓↓↓↓↓↓↓↓ |
|
【137楼】 kaineng 积分:6 派别: 等级:------ 来自: |
回复【楼主位】ifree64
----------------------------------------------------------------------- 好东西,顶! |
||
|
|
|
|
【138楼】 xy8800 积分:21 派别: 等级:------ 来自: |
ding | ||
|
|
|
|
【139楼】 orange2348 积分:84 派别: 等级:------ 来自: |
mark | ||
|
|
|
|
【140楼】 chengyi2009 积分:45 派别: 等级:------ 来自: |
我都弄两天,老是读失败!头也开始大了 !
串口发来: 测试SD卡,请把SD卡插入,并确保存在/BWSTDO/test.txt 按下LEFT键进入SD卡测试 SD卡打开文件失败 void WriteFlash(void) { FATFS fs; FIL fil; FRESULT res; //文件系统返回信息 UINT len; UINT addr=0; UINT i; TurnToSD(); f_mount(0,&fs);//注册一个文件系统 //写16点 //res=f_open(&fil,"/BWSTDO/hzdot16.bin",FA_OPEN_EXISTING|FA_READ); res=f_open(&fil,"/BWSTDO/hzdot16.bin",FA_OPEN_ALWAYS|FA_WRITE|FA_READ); if(res!=FR_OK) { USART1_Puts("SD卡打开16点文件失败\r\n"); return; } 就到打这: 不知道是什么原因!和恼火!不知道有谁遇到没? 我用的是DX板上的例子! |
||
|
|
|
|
【141楼】 ifree64 积分:887 派别: 等级:------ 来自:火星 |
楼上,先测试一下你的disk_read是否真的可以读出一个扇区。然后还可以考虑换张卡试一下。
刚才又对楼上的问题进行了测试,发现可能是卡上的文件系统的问题。 我有张卡在Linux系统下具有这样的分区: /dev/sdb /dev/sdb1 /dev/sdb1格式化为fat32文件格式,这样做在pc机上没有问题,但用fatfs去出现无法打开文件的错误。 后来我直接将/dev/sdb格式化为fat32文件格式,就解决了无法打开文件的错误。 本贴被 ifree64 编辑过,最后修改时间:2010-05-15,21:32:56. |
||
|
|
|
|
【142楼】 ripny 积分:9 派别: 等级:------ 来自: |
这个系统早就玩熟了.... | ||
|
|
|
|
【143楼】 chengyi2009 积分:45 派别: 等级:------ 来自: |
谢谢楼上的楼上!141楼!我准备试一试!呵呵!大家多交流!问题就是经验! | ||
|
|
|
|
【144楼】 LynFam 积分:30 派别: 等级:------ 来自:成都 |
大家有对Fatfs比较熟悉的就出来说说经验咯..
我现在用的是DX的板子,测试了白菜的程序,没问题,可是看了一下代码,还是比较复杂~ 下面这个对大家可能有帮助,程序的版权是白菜的哦~ DX32光盘实例程序,作者是电子白菜ourdev_561739.rar(文件大小:298K) (原文件名:DX32-SD.rar) RVMDK的工程,还在研究中,发上来大家参考吧。 |
||
|
|
|
|
【145楼】 gaerqiu 积分:4 派别: 等级:------ 来自: |
好像第1次读文件失败,每次都要复位一次才正常,128M的卡,不管什么文件格式都这样
1G,2G的卡正常 |
||
|
|
|
|
【146楼】 cat_li 积分:385 派别: 等级:------ 来自: |
收藏,好东西 | ||
|
|
|
|
【147楼】 gaerqiu 积分:4 派别: 等级:------ 来自: |
128M的卡第1次读失败后关闭文件,延时一下,再打开文件就可以正常读了
方法如下: res=f_mount(0, &fs); if(res!=FR_OK) return; LOOP: res = f_open(&fsrc, "yu1.bmp", FA_OPEN_EXISTING | FA_READ); //打上图片文件名 if(res!=FR_OK) { return; } res = f_read(&fsrc, &bmp, sizeof(bmp), &br); if(res!=FR_OK) { f_close(&fsrc); Delayms(10); goto LOOP; //return; } |
||
|
|
|
|
【148楼】 angguohui 恬淡山林 积分:312 派别: 等级:------ 来自: |
顶了,虽然用楼主的移植还不行,但是我移植另一个成功,谢谢! | ||
|
|
|
|
【149楼】 winterss 积分:6 派别: 等级:------ 来自: |
LZ 请教下哈,为什么我用24MHz主时钟,12MH spi 写卡,无论是class2 class6 速度都只有80KB/s 左右? | ||
|
|
|
|
↑↑↑↑↑↑↑↑↑↑↑↑ 抱歉本贴的回复数太多,为了减轻网络流量,只显示帖子正文的前后各10个回复。本贴的正文内容中间隐藏了126个回复。你需要 点击此处 才能查看全部内容。 对为你带来的访问不便表示歉意。不过我们仍会坚持即使没有登录,仍能共享我们网站的所有资料。你没有 登录后就能消除这个访问上的不便(可增加到显示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)常年法律顾问。 | |||