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

关于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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版