STM32F7 FATFS长时间写速度慢问题

2019-07-20 04:15发布

各位大神,请问下:最近想用STM32F7采集传感器数据记录到SD卡中,100Hz数据率,每次采集估计300字节左右数据,上电开始写直至断电。
用STM32CubeMx生成的FATFS文件系统操作SD卡,功能正常,按长时间连续写入方式进行,即首先f_write()然后f_sync()。
使用的是DMA的API写SD卡,按道理说耗时应该非常短暂,但实际上有点难以接受,具体统计的时间如下:
捕获.PNG

每次f_write()的时间再2ms左右,最长基本不超过3ms,但是f_sync()耗时非常久,而且不稳定,甚至超过10ms,也就达不到100Hz。
因此十分奇怪,SD的速率不至于这么低啊~~~
做过如下尝试:
1. 怀疑SD卡问题:SD换过3张不同型号的,8G、16G大小都有,分别按不同分配单元大小格式化,结果无区别,基本排除该问题。
2. 尝试修改BlockSize,似乎SD卡默认是512,改了之后电脑无法识别文件内容(估计是存储结构被破坏了),但是文件写入是可以的,并且耗时极短,总共200us左右。
3. 有人说如果每次写512的整数倍速度会加速,实验了每次写512字节和1024、2048、4096字节,耗时基本线性增加,无降低。
4. 写SD卡底层的HAL_的API中,有诸多循环等待写完的语句,尝试将这些语句提前(即写之前先等待前面的数据写完,后面直接写,这样如果前面已经完成,则本次写可以很快),但导致文件不正常,内部的逻辑还是有点复杂。
所以小白我目前认为FATFS本身就是这个尿性,基本就这个速度了,一次性写一个大文件可能平均速度比较快,但连续写就不行。
不知是否有大神了解或遇到过类似问题,还望指点~~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
szczyb1314
1楼-- · 2019-07-20 09:54
 精彩回答 2  元偷偷看……
gunsir
2楼-- · 2019-07-20 13:32
szczyb1314 发表于 2018-6-2 08:39
http://www.openedv.com/forum.php?mod=viewthread&tid=60866&extra=page%3D1

我用的是SDIO,不太一样~
gunsir
3楼-- · 2019-07-20 18:12
 精彩回答 2  元偷偷看……
不良苏
4楼-- · 2019-07-20 19:02
gunsir 发表于 2018-7-23 01:00
**** 作者被禁止或删除 内容自动屏蔽 ****

用大点占用内存吧   我弄了一个BUFFER[512*64],  1M需要写3秒钟

一周热门 更多>