查看: 3435|回复: 3

GD32F450 SD卡初始化成功&移植FATFS的失败尝试

[复制链接]
  • TA的每日心情
    开心
    2018-11-1 15:07
  • 签到天数: 6 天

    连续签到: 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, 下载次数: 11)
    回复

    使用道具 举报

    该用户从未签到

    发表于 2018-9-20 11:30:56 | 显示全部楼层
    问题解决了吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2018-12-25 16:44
  • 签到天数: 384 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2018-11-16 17:42:16 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2020-9-11 11:11:28 来自手机 | 显示全部楼层
    楼主解决了嘛 能否把代码发给我一份哈 996924339@qq.com
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|电路城

    GMT+8, 2021-1-24 07:32 , Processed in 0.071062 second(s), 14 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.