硬汉嵌入式论坛

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

[SD/SDIO] H7 SDMMC2 fatfs dma

[复制链接]

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2021-11-17 20:44:40 | 显示全部楼层 |阅读模式
在网上看到很多例子用的都是 sdmmc1 接cf卡,手上正好有一个开发板在做一个项目,sdmmc1的引脚已经被占用,就尝试使用sdmmc2.代码都是cubemx自动生成,自己增加了 MPU部分,结果搞了5天没搞定。请高手指点。贴上配置





运行结果是
FRESULT fres = f_mount(&SDFatFS,SDPath,1);
返回 FR_DISK_ERR和FR_NOT_READY。

后来改成SD 1bit 一切正常连续创建400的文件都没问题。
回复

使用道具 举报

23

主题

1403

回帖

1472

积分

至尊会员

积分
1472
发表于 2021-11-17 21:21:05 | 显示全部楼层
楼主你是不是忘了贴代码配置了。
代码不规范,亲人两行泪!
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2021-11-18 09:04:34 | 显示全部楼层
sdmmc2-1.png sdmmc2-2.png sdmmc2-4.png
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2021-11-18 10:30:24 | 显示全部楼层
sdmmc2-5.png
代码就在这段 fmt =2 然后返回FR_NO_FILESYSTEM。配置改成 1 bit 就没问题。好困扰!



回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2021-11-18 10:41:33 | 显示全部楼层
方便的话,上传你的代码工程,我看下。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2021-11-19 09:23:18 | 显示全部楼层
代码部分,请帮我看看

sdmmc2.zip

1.62 MB, 下载次数: 16

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2021-11-19 10:49:16 | 显示全部楼层
sunxu0606 发表于 2021-11-19 09:23
代码部分,请帮我看看

CubeMX生成的fatfs,玩法不对,看下我的这个里面,你要先注册驱动,然后才是fmount
/* 注册SD卡驱动 */
FATFS_LinkDriver(&SD_Driver, DiskPath);


详情看我这个里面的例子V7-025.

http://www.armbbs.cn/forum.php?m ... 6980&extra=page%3D1
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2021-11-19 13:02:11 | 显示全部楼层


forum.png
不对啊 ,我在这个初始化函数里也找到了注册驱动的代码


sdmmc2-6.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2021-11-19 14:07:48 | 显示全部楼层
sunxu0606 发表于 2021-11-19 13:02
不对啊 ,我在这个初始化函数里也找到了注册驱动的代码

确实有,别的地方只有那个while大循环了,这个fmout仅挂载一次就行,放在while外面,
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2021-11-19 15:39:29 | 显示全部楼层
嗯,哎就是 一直挂不上 我才放到while里的。现在也搞不懂为啥不行。1bit  挂载就没事。看来现在只能用1 bit 凑合着用了
回复

使用道具 举报

2

主题

21

回帖

27

积分

新手上路

积分
27
发表于 2023-1-10 16:25:53 | 显示全部楼层
sunxu0606 发表于 2021-11-19 15:39
嗯,哎就是 一直挂不上 我才放到while里的。现在也搞不懂为啥不行。1bit  挂载就没事。看来现在只能用1 bit ...

请问您后来解决了吗
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2023-11-21 15:20:53 | 显示全部楼层
https://blog.csdn.net/Yoshi_Z/article/details/131342700
这个帖子有提到类似问题,只是此贴用的是SDMMC1,这里楼主用的是SDMMC2,估计可用相同办法解决
回复

使用道具 举报

2

主题

21

回帖

27

积分

新手上路

积分
27
发表于 2024-1-16 19:46:30 | 显示全部楼层
这应该是DMA的问题,需要把相关的变量都定义到RAM.D1区域,默认区域DMA访问不到。
[C] 纯文本查看 复制代码
#pragma location = ".RAM_D1"
FATFS fs; /* FatFs文件系统对象 */
#pragma location = ".RAM_D1"
DIR dir; /* 目录对象 */
#pragma location = ".RAM_D1"
FIL file; /* 文件对象 */
#pragma location = ".RAM_D1"
FRESULT f_res; /* 文件操作结果 */
#pragma location = ".RAM_D1"
UINT fnum; /* 文件成功读写数量 */

#pragma location = ".RAM_D1"
char ReadBuffer[1024]; /* 读缓冲区 */
#pragma location = ".RAM_D1"
char WriteBuffer[1024]; /* 写缓冲区 */
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 07:19 , Processed in 0.201602 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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