你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于FatFS移植到SDRAM的疑问?

[复制链接]
Steven.Mo 提问时间:2017-11-17 14:56 /
我手上有几个项目因为要使用到在SDRAM中建立FatFS,首先在SPI FLASH中的文件拷贝到SDRAM中的FatFS,因为数据操作特别频繁,因此设定在一定时间段后将SDRAM中的文件拷贝到SPI Flash。

测试环境:STM32F429IGT6+W9825G6KH的SDRAM
软件环境:STM32CubeMX 1.8

单独测试429驱动SDRAM都是一切正常的,在加载FatFS文件系统以后,执行以下操作就出现代码标注红色地方:
打开文件就一直提示的是没有文件系统,而我在初始化FatFS之后,去观察我SDRAM首地址0xC0000000之后的512个字节,所有数据全部为0,目前不知道问题出在哪里,恳请大家帮忙分析分析?

printf("\r\n ****** FatFs Example ******\r\n\r\n");
    /*##-1- Register the file system object to the FatFs module ##############*/
                retSD = f_mount(&fs, "0:", 0);
    if(retSD)
                {
        printf(" f_mount error : %d \r\n",retSD);        
                        Error_Handler() ;
    }
    else
                {
        printf(" mount sucess!!! \r\n");
                }
                retSD = f_fdisk(0,plist,work) ;
                if( retSD )
                {
                        printf(" f_fdisk error : %d \r\n",retSD);        
                        Error_Handler() ;
                }
                else
                {
                        printf(" f_fdisk sucess!!! \r\n");
                }
                retSD = f_mkfs("0:",FM_ANY,2048,work,sizeof work) ;
                if(retSD)
                {
        printf(" mkfs error : %d \r\n",retSD);        
                        Error_Handler() ;
    }
    else
                {
        printf(" mkfs sucess!!! \r\n");
                }  
                retSD = f_mount(NULL, "0:", 1);
               
                retSD = f_mount(&fs, "0:", 1);
               
    /*##-2- Create and Open new text file objects with write access ######*/
    retSD = f_open(&fil, filename, FA_CREATE_NEW | FA_WRITE | FA_READ );  //在这里就提示没有文件系统,而我调试观测SDRAM的首地址,发现在首地址这里之后的512字节的数据全是0x00.
    if(retSD)
                {
        printf(" open file error : %d\r\n",retSD);
                }
    else
                {
        printf(" open file sucess!!! \r\n");
                }

    /*##-3- Write data to the text files ###############################*/

    retSD = f_write(&fil, wtext, sizeof(wtext), (void *)&byteswritten);

    if(retSD)
                {
        printf(" write file error : %d\r\n",retSD);
                }
    else
    {
        printf(" write file sucess!!! \r\n");
        printf(" write Data : %s\r\n",wtext);
    }

    /*##-4- Close the open text files ################################*/
    retSD = f_close(&fil);
    if(retSD)
                {
        printf(" close error : %d\r\n",retSD);
                }
    else
                {
        printf(" close sucess!!! \r\n");
                }
    /*##-5- Open the text files object with read access ##############*/
    retSD = f_open(&fil, filename, FA_READ);
    if(retSD)
                {
        printf(" open file error : %d\r\n",retSD);
                }
    else
                {
        printf(" open file sucess!!! \r\n");
                }
    /*##-6- Read data from the text files ##########################*/
    retSD = f_read(&fil, rtext, sizeof(rtext), (UINT*)&bytesread);
    if(retSD)
                {
        printf(" read error!!! %d\r\n",retSD);
                }
    else
    {
        printf(" read sucess!!! \r\n");
        printf(" read Data : %s\r\n",rtext);
    }
    /*##-7- Close the open text files ############################*/
    retSD = f_close(&fil);
    if(retSD)
                {
        printf(" close error!!! %d\r\n",retSD);
                }
    else
                {
        printf(" close sucess!!! \r\n");
                }
    /*##-8- Compare read data with the expected data ############*/
    if(bytesread == byteswritten)
    {
        printf(" FatFs is working well!!!\r\n");
    }
                retSD=f_mount(0, "0", 0);  

收藏 1 评论2 发布时间:2017-11-17 14:56

举报

2个回答
阿莫西林 回答时间:2018-4-8 09:47:01
可能在你红色部分之前文件系统就有问题了。你从第一个文件系统的函数查起,我记得里面一层层调用,有专门读写第一个物理扇区的函数

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

jcx0324 回答时间:2018-4-8 13:58:49
文件系统对应的块大小都可以修改的,建议先检查文件系统最底层的读写函数是否与你芯片对应

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版