查看: 198|回复: 0

[GD32F450方案分享] GD32F450 SD卡初始化成功&移植FATFS的失败尝试

[复制链接]

10

主题

0

好友

173

积分

童生

Rank: 2

  • TA的每日心情
    开心
    2017-6-14 23:30
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2017-6-18 00:48:06 |显示全部楼层
        小红板自带了一个SDIO接口,引脚与STM32F4的SDIO引脚位置一模一样,都是PC8->DATA0,PC9->DATA1,PC10->DATA2,PC11->DATA3,PC12->CLK,PD2->CMD,并且官方例程中还有SDIO初始化和读写的例程,直接移植即可。移植成功后的sdcard.h文件大得吓人,居然有100KB,可见SDIO初始化代码量有多大。
    7.JPG

        初始化成功之后可以查看SD卡的各项信息,如容量、块大小等等,这些信息只要成功初始化SD卡都可以获取到,故这里不详细展开说明。

        重点要说说移植FATFS的时候遇到的问题。FATFS移植需要SD卡初始化函数、状态信息获取函数、多块读取函数和多块写入函数,而这些函数都以函数指针的形式封装在一个名为Diskio_drvTypeDef的结构体中,以供ff.c/ff.h在执行FATFS扇区读写的时候调用。我们只需要关心这三个函数在sd_diskio.h中的挂载情况,而无须理会在
    ff.c/ff.h中是如何具体实现的,这也是国内的移植FATFS程序的核心步骤。这里有点稍微跟STM32移植FATFS的地方不太一样,移植的块写入和块读取函数的数据,大部分MCU都是以uint8_t类型定义的,而GD32的库则是uint32_t类型,这点真是非常不一样
    2.JPG
    4.JPG
    3.JPG

        移植完成之后上电进行新建TXT文件的测试,预想中的成功创建、成功写入提示并没有出现,而是通通失败,唯独格式化是提示成功的,但是我把SD卡插到读卡器上观察,也没有被格式化的迹象,这点让我非常气馁。使用串口打印函数查看f_open()函数的返回值,是13,再查表,13是FR_NO_FILESYSTEM,/* (13) There is no valid FAT volume */,即找不到FAT文件系统,我调试了一晚上,修改过各种参数,都不成功,希望坛友们可以一起探讨一下原因。 5.JPG

    1.JPG
    6.JPG

        上传一份工程文件。 工程文件.zip (408.39 KB, 下载次数: 1)

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /4 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-7-26 06:41 , Processed in 0.128508 second(s), 11 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部