打印

移植fatfs到stm32上可以再SD卡中建立文件但是不能读取文件

[复制链接]
8869|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大家好:
    我移植的程序能写进去,但是不能读,请大家帮忙看看。
    首先是写,在sd卡建立一个123.txt。然后在里面写数据,程序为
const unsigned char fat[512] ={ "123456"  };
char buf[512];
int main(void)
{
    FATFS *fs,fatfs;            // Work area (file system object) for logical drive
    FRESULT res;         // FatFs function common result code      
    FIL fsrc;            // file objects
    UINT br;
    RCC_Config();
    USART_Config();
    fs = &fatfs;
   f_mount(0, fs);
    res = f_open(&fsrc, "123.txt", FA_CREATE_ALWAYS  | FA_WRITE);
    res = f_write(&fsrc, fat, 512, &br);
    f_close(&fsrc);
    f_mount(0, NULL);
    while (1)
    {
    }
}
这个程序正常,能够建立123.txt并且写入123456等数据,下面是读
int main(void)
{
    FATFS *fs,fatfs;            // Work area (file system object) for logical drive
    FRESULT res;         // FatFs function common result code      
    FIL fsrc;            // file objects
    UINT br;
    RCC_Config();
    USART_Config();
    fs = &fatfs;
   f_mount(0, fs);
    res = f_open(&fsrc, "123.txt", FA_OPEN_EXISTING | FA_READ);
    res = f_read(&fsrc, buf, 512, &br);
    f_close(&fsrc);
    f_mount(0, NULL);
    while (1)
    {
    }
}
这个程序就读不出来我以前写入的数据,读出来全是0.我用仿真器跟了一下,发现在f_open这个函数中的
fp->fsize = LD_DWORD(&dir[DIR_FileSize]);这个fp->fsize为0.请大家帮帮忙看看这是为什么?

SD_FAT2(ok).zip

1.11 MB

完整的工程文件

沙发
lattice1| | 2011-7-21 12:33 | 只看该作者
不能读是说不能读到MCU里面?

使用特权

评论回复
板凳
adqprint|  楼主 | 2011-7-21 13:19 | 只看该作者
对。MCU在执行f_open这个函数时,读取的时候读出文件的大小是0,因此不再往下进行,得不到写入的数据。可是我的文件大小肯定不是0.

使用特权

评论回复
地板
allensionZ| | 2013-1-4 17:35 | 只看该作者
问题解决了吗,我stm32在nandflash上建立的fatfs也是可以写但是不能读,一调用f_read就跳到HardwareFault死循环了,求交流...

使用特权

评论回复
5
MariaBrook| | 2013-1-14 11:30 | 只看该作者
allensionZ 发表于 2013-1-4 17:35
问题解决了吗,我stm32在nandflash上建立的fatfs也是可以写但是不能读,一调用f_read就跳到HardwareFault死 ...

HardwareFault是不是因为程序在函数里建立太大的数组溢出导致的?

使用特权

评论回复
6
MariaBrook| | 2013-1-14 11:38 | 只看该作者
在open操作之前,先要进行打开根目录的操作:
if(f_opendir(&dirs, "/") != FR_OK)

使用特权

评论回复
评论
lilixiao6 2018-8-30 17:14 回复TA
使用您这种方法也没解决 
7
just0511| | 2013-8-7 00:26 | 只看该作者
mARK 一下

使用特权

评论回复
8
kylin56| | 2016-7-18 15:50 | 只看该作者
我的用内部FLASH做的FASFS,只能写不能读

使用特权

评论回复
9
忧忧| | 2016-11-15 14:18 | 只看该作者
谢谢  ,解决了我的问题

使用特权

评论回复
评论
lilixiao6 2018-8-30 17:13 回复TA
您好您怎么解决的,我也是同样的问题 
10
foucsY| | 2017-7-19 11:23 | 只看该作者
忧忧 发表于 2016-11-15 14:18
谢谢  ,解决了我的问题

你好,我也遇到了和你同样的问题,文件能正常写入,但是读取时发现长度为0,请问这是什么问题?

使用特权

评论回复
11
yyjzd| | 2018-2-23 13:19 | 只看该作者
能否烦劳大侠发些干货,也为此事犯愁中

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

60

帖子

1

粉丝