OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5704|回复: 4

STM32F7 FATFS长时间写速度慢问题

[复制链接]

1

主题

3

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2018-6-1
在线时间
2 小时
发表于 2018-6-1 18:28:48 | 显示全部楼层 |阅读模式
各位大神,请问下:最近想用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本身就是这个尿性,基本就这个速度了,一次性写一个大文件可能平均速度比较快,但连续写就不行。
不知是否有大神了解或遇到过类似问题,还望指点~~
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2018-6-2 08:39:34 | 显示全部楼层
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2018-6-1
在线时间
2 小时
 楼主| 发表于 2018-6-2 22:54:35 | 显示全部楼层
szczyb1314 发表于 2018-6-2 08:39
http://www.openedv.com/forum.php?mod=viewthread&tid=60866&extra=page%3D1

我用的是SDIO,不太一样~
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2018-6-1
在线时间
2 小时
 楼主| 发表于 2018-7-23 01:00:41 | 显示全部楼层
搞定了,建个大点的buffer,每次连续多写一些,写的次数少点~
回复 支持 反对

使用道具 举报

72

主题

245

帖子

0

精华

高级会员

Rank: 4

积分
510
金钱
510
注册时间
2015-11-13
在线时间
131 小时
发表于 2019-1-8 18:50:43 | 显示全部楼层
gunsir 发表于 2018-7-23 01:00
**** 作者被禁止或删除 内容自动屏蔽 ****

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

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 12:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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