硬汉嵌入式论坛

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

[SD/SDIO] STM32H7 Fatfs SD DMA

[复制链接]

3

主题

12

回帖

21

积分

新手上路

积分
21
发表于 2020-3-4 22:25:15 | 显示全部楼层 |阅读模式
请教大神们,我用H7平台使用Fatfs文件系统写SD卡,当把底层驱动写DMA的超时时间设置为20ms,大约写30秒就不能写了如果把超时时间设置的很大,一直写没有问题,这是什么原因呢,项目需求最大只能20ms。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107077
QQ
发表于 2020-3-5 02:48:48 | 显示全部楼层
FAT类文件系统不适合作为实时写入,随着你的写入的数据不断加大,写入时间也会加大。

好点的处理方案是创建多个文件进行记录。然后每次写入不要重复的开关文件,最好f_write和f_sync组合即可,无需关闭。
回复

使用道具 举报

3

主题

12

回帖

21

积分

新手上路

积分
21
 楼主| 发表于 2020-3-5 09:05:52 | 显示全部楼层
硬汉你好,我们的应用场景是200Hz文件系统写SD卡,上电open一个文件,其中农不关闭,一直写定时sync,原有平台是STM32F4正常运行。现在换到STM32H7平台上,如果将底层写DMA函数的超时时间长则没有问题,设置的过短(我们最大20ms)就不能持续写,请问这是什么原因呢?
F:\123.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107077
QQ
发表于 2020-3-5 10:12:54 | 显示全部楼层
pursue 发表于 2020-3-5 09:05
硬汉你好,我们的应用场景是200Hz文件系统写SD卡,上电open一个文件,其中农不关闭,一直写定时sync,原有 ...

你这个频率太高了,普通的消费级SD卡不稳定,容易出故障。


有没有测试过查询方式,用查询方式测试下,另外就是先把你的SD卡格式化下再测试。
回复

使用道具 举报

3

主题

12

回帖

21

积分

新手上路

积分
21
 楼主| 发表于 2020-3-5 12:17:40 | 显示全部楼层
用查询方式也不行,SD卡已经格式化好多次了。
疑问:
1、为什么和底层DMA的超时有关系呢?while((WriteStatus == 0) && ((HAL_GetTick() - timeout) < SD_TIMEOUT))  SD_TIMEOUT越大持续写入时间越长,当死等的时候一直写没有问题。
2、为什写错误之后就不再写了?
回复

使用道具 举报

3

主题

12

回帖

21

积分

新手上路

积分
21
 楼主| 发表于 2020-3-5 12:20:36 | 显示全部楼层
另外,当降低频率到5Hz时,大约能够持续写入15分钟左右后就无法继续写了。
在原有F4平台写是没有问题的,现在仅仅是换成H7平台将底层驱动给换了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107077
QQ
发表于 2020-3-5 12:44:33 | 显示全部楼层
pursue 发表于 2020-3-5 12:17
用查询方式也不行,SD卡已经格式化好多次了。
疑问:
1、为什么和底层DMA的超时有关系呢?while((WriteSt ...

1、以往的程序SD底层都是DMA死等。现在HAL人性化些,做了个超时。
2、写错之后估计DMA工作已经异常了,可以考虑重新初始化配置SDIO。


可以这样试试,不用文件系统了,直接操作SD的扇区,如果还有问题基本就可以确定是SD卡驱动问题了。

考虑升级到最新的HAL V1.8.0试试。
回复

使用道具 举报

3

主题

12

回帖

21

积分

新手上路

积分
21
 楼主| 发表于 2020-3-5 13:44:49 | 显示全部楼层
好的,谢谢硬汉。
用裸机写过,200HZ持续写,不过读出数据来有错的,用曲线显示有很多非常大的数据。请问HAL V1.8.0在哪下载呢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107077
QQ
发表于 2020-3-5 15:21:17 | 显示全部楼层
pursue 发表于 2020-3-5 13:44
好的,谢谢硬汉。
用裸机写过,200HZ持续写,不过读出数据来有错的,用曲线显示有很多非常大的数据。请问H ...

ST官网下载就行,速度比较快。
回复

使用道具 举报

14

主题

99

回帖

141

积分

初级会员

积分
141
发表于 2020-3-5 17:25:36 | 显示全部楼层
eric2013 发表于 2020-3-5 02:48
FAT类文件系统不适合作为实时写入,随着你的写入的数据不断加大,写入时间也会加大。

好点的处理方案是 ...

硬汉,那实时写入用啥文件系统好呢,我也发现后面写的慢,前面快,用的FATFS
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 15:17 , Processed in 0.176672 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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