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的文件都没问题。
楼主你是不是忘了贴代码配置了。
代码就在这段 fmt =2 然后返回FR_NO_FILESYSTEM。配置改成 1 bit 就没问题。好困扰!
方便的话,上传你的代码工程,我看下。 代码部分,请帮我看看
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
不对啊 ,我在这个初始化函数里也找到了注册驱动的代码
确实有,别的地方只有那个while大循环了,这个fmout仅挂载一次就行,放在while外面, 嗯,哎就是 一直挂不上 我才放到while里的。现在也搞不懂为啥不行。1bit挂载就没事。看来现在只能用1 bit 凑合着用了 sunxu0606 发表于 2021-11-19 15:39
嗯,哎就是 一直挂不上 我才放到while里的。现在也搞不懂为啥不行。1bit挂载就没事。看来现在只能用1 bit ...
请问您后来解决了吗 https://blog.csdn.net/Yoshi_Z/article/details/131342700
这个帖子有提到类似问题,只是此贴用的是SDMMC1,这里楼主用的是SDMMC2,估计可用相同办法解决 这应该是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]