硬汉嵌入式论坛

 找回密码
 立即注册
搜索
查看: 427|回复: 4
收起左侧

[FatFs] GD32F470 USB FATFS U盘

[复制链接]

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2026-7-15 11:02:09 | 显示全部楼层 |阅读模式
本帖最后由 liumeili 于 2026-7-15 11:12 编辑

主控:GD32F470,读写U盘数据,读取数据成功。USB使用的是GD官方提供的库《GD32F4xx_Firmware_Library_V3.3.2》。U盘使用的读卡器+SD卡,SD卡512M与32G。

写入数据时,最后一次写入的数据不成功,通过PC查看U盘数据,最后一次写入的数据已经写到U盘中,但是文件大小没有更新,导致最后一次写入的数据无法读出。
测试代码每秒触发一次,通过控制变量测试U盘读写。
[C] 纯文本查看 复制代码
static BYTE s_Buf[100], s_Len;
int api_UDiskTest(void)
{
    UINT Size = 0; 
    FIL tFil = {0};

    if(usbh_usr_application_state != eUsbh_Usr_FS_RdWrfile)
    {
        return -1;
    }

        if(s_Len == 0)
        {
                return -1;
        }

        if (f_open(&tFil, "0:/WUpdataC.txt", FA_READ|FA_WRITE) != FR_OK) 
    {
        return -1;
    }

        //写入到文件末尾
    if (f_lseek(&tFil, f_size(&tFil)) != FR_OK) 
    {
        f_close(&tFil);
        return -1;
    }
    if (f_write(&tFil, s_Buf, s_Len, &Size) != FR_OK) 
    {
        f_close(&tFil);
        return -1;
    }

        memset(s_Buf, 0x00, sizeof(s_Buf));

        //将写入的数据读出
        if (f_lseek(&tFil, f_size(&tFil) - s_Len) != FR_OK) 
    {
        f_close(&tFil);
        return -1;
    }
        if (f_read(&tFil, s_Buf, s_Len, &Size) != FR_OK)
        {
        f_close(&tFil);
        return -1;
        }

        f_sync(&tFil);

        f_close(&tFil);

        s_Len = 0;

        return Size;
}

回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
124160
QQ
发表于 2026-7-16 11:47:08 | 显示全部楼层
搞个骚操作试试,最后一次操作fatfs unmout卸载一次,然后重新挂载测试看看

点评

之前还真这样试了,卸载之后,重新挂载,读出来文件长度以及数据都对,但是拔了U盘,放到电脑上看就是长度没有更新,数据其实已经写进去了。包括卸载之后再拔优盘都试过了,我这说是U盘,其实是读卡器—+SD卡,SD卡3  详情 回复 发表于 2026-8-11 17:23
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
124160
QQ
发表于 2026-7-16 11:47:15 | 显示全部楼层
搞个骚操作试试,最后一次操作fatfs unmout卸载一次,然后重新挂载测试看看
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2026-8-11 17:23:45 | 显示全部楼层
eric2013 发表于 2026-7-16 11:47
搞个骚操作试试,最后一次操作fatfs unmout卸载一次,然后重新挂载测试看看

之前还真这样试了,卸载之后,重新挂载,读出来文件长度以及数据都对,但是拔了U盘,放到电脑上看就是长度没有更新,数据其实已经写进去了。包括卸载之后再拔优盘都试过了,我这说是U盘,其实是读卡器—+SD卡,SD卡32G。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
124160
QQ
发表于 2026-8-12 10:16:23 | 显示全部楼层
liumeili 发表于 2026-8-11 17:23
之前还真这样试了,卸载之后,重新挂载,读出来文件长度以及数据都对,但是拔了U盘,放到电脑上看就是长 ...

这种情况有必要看看fatfs读取接口对U盘的操作实现,可能有点问题
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-9-23 05:33 , Processed in 0.523970 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表