doesnt 发表于 2018-6-7 13:27:24

STM32F407用CubeMx使用SDIO和FatFs,卡死

我使用了最新的CubeMx 4.25.1,库都是最新的,在CubeMx中添加SDIO和FATFS,使用默认配置。

在MX_FATFS_Init();中添加f_mount();

然后添加BSP_SD_Init();





每当使用f_open时候,都卡在sd_read的while等待中



请问,还需要设置什么,才可以正常使用SD卡。

lvwy0704 发表于 2018-6-7 13:47:33

不错,感谢分享!

Cortexxx 发表于 2018-6-7 14:01:08

FYI


调大stack到0x1000
从微雪那里看到的

lebment 发表于 2018-6-7 16:40:14

把 SDIO init 里面加两句,生成的初始化有错误,少了SD初始化和四线模式初始化。加进去就什么都好了。

doesnt 发表于 2018-6-7 17:27:34

找到了一个问题,DMA默认是打开的,不用DMA的话,要选择DISABLE

lebment 发表于 2018-6-7 23:40:20

doesnt 发表于 2018-6-7 17:27
找到了一个问题,DMA默认是打开的,不用DMA的话,要选择DISABLE

这个也是

feixiang20 发表于 2018-6-7 23:56:48

我有看过【STM32F4通过SDIO使用FatFs读取SD卡】资料很长,可以借鉴。
另外可参考STM32F407用CubeMX创建SDIO+FatFs,f_Open失败
https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=615873&fromuid=2091055

Cortexxx 发表于 2018-6-11 17:08:58

lebment 发表于 2018-6-7 16:40
把 SDIO init 里面加两句,生成的初始化有错误,少了SD初始化和四线模式初始化。加进去就什么都好了。 ...

直接在 MX_SDIO_SD_Init(); 后面添加 BSP_SD_Init();就OK了。不用添加别的了。
我用CubeMX生成的CODE看上去是使用SDIO_BUS_WIDE_1B 可是在别的函数里面又改到了4线模式。

lebment 发表于 2018-6-11 19:15:43

Cortexxx 发表于 2018-6-11 17:08
直接在 MX_SDIO_SD_Init(); 后面添加 BSP_SD_Init();就OK了。不用添加别的了。
我用CubeMX生成的CODE看上 ...

是有这种情况,得加两句。

Cortexxx 发表于 2018-6-12 15:42:59

lebment 发表于 2018-6-11 19:15
是有这种情况,得加两句。

我今天又试了一下,发现不加BSP_SD_Init(); 是可以的.
SDIO的initial在MX_FATFS_Init()这个函数里面。 SD_Driver这个结构体了里面有初始化。
void MX_FATFS_Init(void)
{
/*## FatFS: Link the SD driver ###########################*/
retSD = FATFS_LinkDriver(&SD_Driver, SDPath);

/* USER CODE BEGIN Init */
/* additional user code for init */   

/* USER CODE END Init */
}
页: [1]
查看完整版本: STM32F407用CubeMx使用SDIO和FatFs,卡死