硬汉嵌入式论坛

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

[SD/SDIO] FatFs无法使用DMA

[复制链接]

51

主题

103

回帖

256

积分

高级会员

积分
256
发表于 2025-10-24 14:17:18 | 显示全部楼层 |阅读模式



STM32H7+FATFS+SDCard+DMA, 用STM32CubeMX生成的驱动,发现f_mount, f_write都没问题,然后执行到f_sync后,过很久会返回FR_DISK_ERR的错误。

之前不用FatFs,直接用HAL_SD_WriteBlocks_DMA/HAL_SD_ReadBlocks_DMA读写SD卡,没有问题,说明SD卡,硬件都没问题。

加上FatFs+DMA后死活不行,f_sync总是返回FR_DISK_ERR。

然后我把Fatfs的DMA去掉了,把下面的Enable改为Disable,然后瞬间正常了!为啥Fatfs不能用DMA啊?
333.jpg
回复

使用道具 举报

4

主题

146

回帖

158

积分

初级会员

积分
158
发表于 2025-10-24 14:37:40 | 显示全部楼层
DMA注意cache和MPU配置是否正确
回复

使用道具 举报

51

主题

103

回帖

256

积分

高级会员

积分
256
 楼主| 发表于 2025-10-24 15:16:14 | 显示全部楼层
turnip 发表于 2025-10-24 14:37
DMA注意cache和MPU配置是否正确

使用DMA的时候,我把cache关闭和打开都试过,f_sync都一样返回错误
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119430
QQ
发表于 2025-10-24 15:28:45 | 显示全部楼层
注意主RAM空间不能使用DTCM RAM,这个不支持SDIO DMA
回复

使用道具 举报

51

主题

103

回帖

256

积分

高级会员

积分
256
 楼主| 发表于 2025-10-24 15:36:21 | 显示全部楼层
eric2013 发表于 2025-10-24 15:28
注意主RAM空间不能使用DTCM RAM,这个不支持SDIO DMA

这个也注意了,所有的数组,包括fatfs和sd卡的代码文件全部放在AXI-SRAM,所以感觉很奇怪
回复

使用道具 举报

4

主题

146

回帖

158

积分

初级会员

积分
158
发表于 2025-10-24 16:41:49 | 显示全部楼层
本帖最后由 turnip 于 2025-10-24 16:46 编辑
coolaimcu 发表于 2025-10-24 15:36
这个也注意了,所有的数组,包括fatfs和sd卡的代码文件全部放在AXI-SRAM,所以感觉很奇怪

SDMMC1和SDMMC2能使用的DMA是不一样的,dm00525510-getting-started-with-stm32h7-series-sdmmc-host-controller-stmicroelectronics.pdf
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119430
QQ
发表于 2025-10-25 01:37:08 | 显示全部楼层
coolaimcu 发表于 2025-10-24 15:36
这个也注意了,所有的数组,包括fatfs和sd卡的代码文件全部放在AXI-SRAM,所以感觉很奇怪

干脆比较下我们的例子吧

V7-025_FatFS文件系统例子(SD卡 V1.2)
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=86980
回复

使用道具 举报

714

主题

3709

回帖

5876

积分

论坛元老

积分
5876
发表于 2025-10-25 08:33:10 | 显示全部楼层
本帖最后由 hpdell 于 2025-10-25 08:35 编辑

https://forum.anfulai.cn/forum.p ... mp;highlight=sdmmc2

看看能否解决你的问题哈
回复

使用道具 举报

51

主题

103

回帖

256

积分

高级会员

积分
256
 楼主| 发表于 2025-10-27 09:42:33 | 显示全部楼层
hpdell 发表于 2025-10-25 08:33
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=125069&highlight=sdmmc2

看看能否解决你的问 ...

谢谢分享,看了你的例子,我看还是开了cache的,我试了还是不行的,现在等于是我的不能开任何cache,什么回写,透写都不行,必须全部关闭才行。用硬汉哥的那个例子可以,或者用CubeMX生成,然后不开任何cache也可以
回复

使用道具 举报

51

主题

103

回帖

256

积分

高级会员

积分
256
 楼主| 发表于 2025-10-27 09:43:32 | 显示全部楼层
eric2013 发表于 2025-10-25 01:37
干脆比较下我们的例子吧

V7-025_FatFS文件系统例子(SD卡 V1.2)

汉哥,用你的例子是没问题的,我之前还想着配个cache用用,结果怎么配都不行,弄成跟你一样可以了。现在就这么用着吧
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119430
QQ
发表于 2025-10-28 13:41:26 | 显示全部楼层
coolaimcu 发表于 2025-10-27 09:43
汉哥,用你的例子是没问题的,我之前还想着配个cache用用,结果怎么配都不行,弄成跟你一样可以了。现在 ...

好的,还有什么问题话,再交流。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-22 00:48 , Processed in 0.051086 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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