硬汉嵌入式论坛

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

[FatFs] STM32H743裸机存储SD卡20KB图片,57ms一张图片

[复制链接]

6

主题

10

回帖

28

积分

新手上路

积分
28
发表于 2025-2-10 12:14:29 | 显示全部楼层 |阅读模式
STM32H743裸机存储SD卡20KB图片,57ms一张图片,如何加快。

SD卡时钟112MHZ
result = f_open(&file, filename, FA_WRITE | FA_CREATE_ALWAYS);//FA_CREATE_ALWAYS  

打开文件时间 : 40ms
ptr - allDataBuffer: 11816
写入数据时间 : 10ms
图片存储成功,存储的文件名: IMG_00253.jpg
关闭文件时间 : 10ms
图片存储时间 : 62ms

打开文件时间 : 12ms
ptr - allDataBuffer: 11674
写入数据时间 : 9ms
图片存储成功,存储的文件名: IMG_00002.jpg
关闭文件时间 : 10ms
图片存储时间 : 33ms

打开文件时间 : 43ms
ptr - allDataBuffer: 11681
写入数据时间 : 11ms
图片存储成功,存储的文件名: IMG_00003.jpg
关闭文件时间 : 11ms
图片存储时间 : 67ms



打开文件时间 : 34ms
ptr - allDataBuffer: 11719
写入数据时间 : 10ms
图片存储成功,存储的文件名: IMG_00231.jpg
关闭文件时间 : 11ms
图片存储时间 : 57ms



改成result = f_open(&file, filename, FA_WRITE | FA_CREATE_NEW);//FA_CREATE_ALWAYS




图片存储成功,存储的文件名: IMG_00108.jpg
图片存储时间 : 48ms


如何加快每张图片存储的时间?最快能到多少?
需要改成一次存储10~100张图片,再新建这样速度比较快?
回复

使用道具 举报

6

主题

10

回帖

28

积分

新手上路

积分
28
 楼主| 发表于 2025-2-10 15:25:56 | 显示全部楼层
硬汉哥,目前判断主要时间在 result = f_open(&file, filename, FA_WRITE | FA_CREATE_NEW); 和f_close(&file); 一张图片共20ms左右。 需不需要自己写一个 f_open、f_close程序   因为我只用到了FA_WRITE | FA_CREATE_NEW  其他的没有用到直接去掉。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2025-2-11 07:21:40 | 显示全部楼层
沉思静学 发表于 2025-2-10 15:25
硬汉哥,目前判断主要时间在 result = f_open(&file, filename, FA_WRITE | FA_CREATE_NEW); 和f_close(&fi ...

这种一个文件,一个文件的操作,确实快不起来,电脑上复制多个工程文件,也很慢。

可以考虑做成类似流视频的方式,100个图片写到一个文件里面。
回复

使用道具 举报

5

主题

244

回帖

259

积分

高级会员

积分
259
发表于 2025-2-11 16:22:34 | 显示全部楼层
这打开和关闭速度感觉不太正常,是不是没开cache
回复

使用道具 举报

6

主题

10

回帖

28

积分

新手上路

积分
28
 楼主| 发表于 2025-2-12 16:39:38 | 显示全部楼层
使用SD卡联盟格式化之后SDCardFormatterv5_WinEN,问题解决。时间变成1ms  但是当存到几千张图片的时候 打开时间变为1s
[16:26:15.499]收←◆time打开文件: 2ms  
time写入数据: 14ms  
name: IMG_00015.jpg
time总: 26ms  

[16:26:15.973]收←◆time打开文件: 0ms  
time写入数据: 9ms  
name: IMG_00016.jpg
time总: 19ms  

[16:26:17.307]收←◆time打开文件: 1ms  
time写入数据: 9ms  
name: IMG_00018.jpg
time总: 20ms      
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2025-2-13 10:39:54 | 显示全部楼层
沉思静学 发表于 2025-2-12 16:39
使用SD卡联盟格式化之后SDCardFormatterv5_WinEN,问题解决。时间变成1ms  但是当存到几千张图片的时候 打 ...

谢谢告知解决办法
回复

使用道具 举报

6

主题

10

回帖

28

积分

新手上路

积分
28
 楼主| 发表于 2025-2-13 17:25:31 | 显示全部楼层
改成几百个文件存一个文件夹、且文件名改成单纯数字,锁定设置为0。时间最高变为50ms  可以存几千 几万张了。
回复

使用道具 举报

5

主题

244

回帖

259

积分

高级会员

积分
259
发表于 2025-2-14 11:55:31 | 显示全部楼层
文件越多创建越慢大概算是fat32的一个缺点吧,因为它目录表是顺序保存的,查询也只能顺序遍历,可以试试换成exfat
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 20:56 , Processed in 0.381578 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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