硬汉嵌入式论坛

 找回密码
 立即注册
查看: 22|回复: 1
收起左侧

使用GD32E518的SDIO+DMA驱动SD卡,再加fatfs文件系统写文件,文件内容有误

[复制链接]

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 8 小时前 | 显示全部楼层 |阅读模式
本帖最后由 cfxhqkdm 于 2026-4-2 14:40 编辑


先说一下要实现的目标,CAN接收消息,转成asc文件后保存到SD卡中。
----使用GD32E518的SDIO+DMA驱动SD卡,再加fatfs文件系统写文件,每毫秒向can发送数据,主循环中检测CAN接收数据,有CAN帧就调用格式化函数,将其格式化成asc格式并存入到一个fifo中。每当fifo中的长度大于等于512时就调用写ASC文件函数去写文件,每次写文件的长度固定512。在这期间一直会刷新一个定时器,如果2秒内没有收到数据就将fifo中剩余的部分写入到SD卡,然后关闭文件。-----(没有出现溢出的情况)
按这个流程在can发送端每毫秒发送,10000帧打开文件查看没有问题。当发30000帧的时候打开文件查看,有时候会出现类似余丢帧的问题,格式错乱的问题。有大佬知道是那里的问题吗?

回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121894
QQ
发表于 6 小时前 | 显示全部楼层
加大缓冲,改成4KB写入一次,512的整数倍才可以触发SD卡的multiblock操作,写入速度提升很明显。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-2 22:50 , Processed in 0.486671 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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