[STM32F1] FatFs写SD卡速度

[复制链接]
1485|17
 楼主| tian111 发表于 2019-12-15 19:16 | 显示全部楼层 |阅读模式
在项目开发中,经过实际测试,FATFS向空的SD卡写入数据的速度达到1MB/s以上,而向快满的SD卡写入数据的速度只有10KB/s左右,是我的程序设计的有问题还是FatFs本身就有这样的问题,请有相关开发经验的高手指教,谢谢!
zhanglli 发表于 2019-12-15 19:19 | 显示全部楼层
可以优化下读写sd那部分
wangzsa 发表于 2019-12-15 19:22 | 显示全部楼层
文件越多,文件系统的负荷越大,相对来说就会慢一点
 楼主| tian111 发表于 2019-12-15 19:24 | 显示全部楼层
看来这个问题确实是FatFs文件系统造成的,鉴于项目实时性要求高,我打算摒弃文件系统,直接向SD卡写数据,之后再设计一个专门的读卡器,用FatFs转存到另一只卡。
lium 发表于 2019-12-16 21:33 | 显示全部楼层
给个建议,SD卡只能写容量的90%或者SD卡剩余50M时就不让写了,这样就可以满足要求啦。
hanwe 发表于 2019-12-16 21:38 | 显示全部楼层
你分页读写测试一下,看看靠前的是不是速度也很快
wangpe 发表于 2019-12-16 21:41 | 显示全部楼层

这个是文件系统的特性,我做的也有类似问题。当一个存储器存储即将满时,再进行数据存储时需要花费很长的时间来寻找空闲的簇而导致的速度变慢,与优化无关。

所以在进行操作有文件系统的存储卡时,最好先将所有文件删除,然后在写入的过程中不要删除文件以减少寻找空闲簇的时间。
zhuww 发表于 2019-12-16 21:43 | 显示全部楼层

文件系统的问题,前面加一个大的缓冲 吧,先写到缓冲中在慢慢搬到文件系统中去。可以考虑不用文件系统
 楼主| tian111 发表于 2019-12-16 21:47 | 显示全部楼层
每秒300kB的数据,加再大缓冲,后面来不及存也有数据溢出的时候,所以只能不用FatFs,因为起始扇区号和扇区总数是已知的,所以在设计的时候按扇区递增写入数据,不进行任何搜索和计算,这样可以节省大量时间。
 楼主| tian111 发表于 2019-12-16 21:49 | 显示全部楼层
SD卡格式化之后,我打算按扇区号进行依次写入数据,不进行任何搜索和计算,每次写入的数据为一个扇区的大小。
wenfen 发表于 2019-12-16 21:52 | 显示全部楼层
使用文件系统后,在哪里写数据是文件系统的事情,一般文件系统会从初始的扇区开始写数据,没有额外的干扰,如删除,复制或者更改文件大小等是不会破坏文件的连贯性的。
chenho 发表于 2019-12-16 21:55 | 显示全部楼层
请问大神1MB/s的速度是通过DMA模式还是普通模式?
juventus9554 发表于 2019-12-16 21:59 | 显示全部楼层
实时性要求高的话建议可以不用文件系统,直接物理地址操作就行,芯片做个高速usb口,再做个上位机软件将SD卡里的数据转成你想要的格式就行
paotangsan 发表于 2020-1-14 10:28 | 显示全部楼层
没做过sd卡的事情
renzheshengui 发表于 2020-1-14 10:29 | 显示全部楼层
速度确实有点慢
wakayi 发表于 2020-1-14 10:33 | 显示全部楼层
有可能程序上哪里耽误了?
wowu 发表于 2020-1-14 10:41 | 显示全部楼层
速度太慢了
xiaoqizi 发表于 2020-1-14 10:43 | 显示全部楼层
最后找到问题了吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

797

主题

8878

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部