sunxu0606 发表于 2021-11-17 20:44:40

H7 SDMMC2 fatfs dma

在网上看到很多例子用的都是 sdmmc1 接cf卡,手上正好有一个开发板在做一个项目,sdmmc1的引脚已经被占用,就尝试使用sdmmc2.代码都是cubemx自动生成,自己增加了 MPU部分,结果搞了5天没搞定。请高手指点。贴上配置





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

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

missfox 发表于 2021-11-17 21:21:05

楼主你是不是忘了贴代码配置了。

sunxu0606 发表于 2021-11-18 09:04:34


sunxu0606 发表于 2021-11-18 10:30:24


代码就在这段 fmt =2 然后返回FR_NO_FILESYSTEM。配置改成 1 bit 就没问题。好困扰!



eric2013 发表于 2021-11-18 10:41:33

方便的话,上传你的代码工程,我看下。

sunxu0606 发表于 2021-11-19 09:23:18

代码部分,请帮我看看

eric2013 发表于 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

sunxu0606 发表于 2021-11-19 13:02:11




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


eric2013 发表于 2021-11-19 14:07:48

sunxu0606 发表于 2021-11-19 13:02
不对啊 ,我在这个初始化函数里也找到了注册驱动的代码

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

sunxu0606 发表于 2021-11-19 15:39:29

嗯,哎就是 一直挂不上 我才放到while里的。现在也搞不懂为啥不行。1bit挂载就没事。看来现在只能用1 bit 凑合着用了

MaxDYi 发表于 2023-1-10 16:25:53

sunxu0606 发表于 2021-11-19 15:39
嗯,哎就是 一直挂不上 我才放到while里的。现在也搞不懂为啥不行。1bit挂载就没事。看来现在只能用1 bit ...

请问您后来解决了吗

gavinzgc 发表于 2023-11-21 15:20:53

https://blog.csdn.net/Yoshi_Z/article/details/131342700
这个帖子有提到类似问题,只是此贴用的是SDMMC1,这里楼主用的是SDMMC2,估计可用相同办法解决

MaxDYi 发表于 2024-1-16 19:46:30

这应该是DMA的问题,需要把相关的变量都定义到RAM.D1区域,默认区域DMA访问不到。
#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; /* 读缓冲区 */
#pragma location = ".RAM_D1"
char WriteBuffer; /* 写缓冲区 */
页: [1]
查看完整版本: H7 SDMMC2 fatfs dma