[STM32F4] STM32 更换 SD 卡后无法重新挂载问题

[复制链接]
239|10
lvluoo 发表于 2025-11-19 17:43 | 显示全部楼层 |阅读模式
我在 STM32F410RB Nucleo 开发板上使用 CubeIDE 开发时,SD 卡插槽存在一个问题,复位微控制器后,我能成功挂载 SD 卡,但一旦拔出 SD 卡,就再也无法重新挂载了。
拔出卡片后尝试重新挂载时,f_mount 函数会返回 FR_NOT_READY 错误码。
我已经试了多种方法排查,比如在不同插槽中测试 SD 卡、尝试不同的上拉 / 下拉配置,目前所有方法都没有效果。


公羊子丹 发表于 2025-11-21 07:28 | 显示全部楼层
我之前在 F4 上也遇到类似的,拔卡后重新插入卡检测脚没触发,结果 FATFS 那边一直认为设备 busy。你可以先确认一下卡检测引脚是不是确实有变化。
周半梅 发表于 2025-11-21 07:29 | 显示全部楼层
看你描述挺像 SDIO 没完全复位,我建议拔卡后先调用 HAL_SD_DeInit,再重新 HAL_SD_Init,一定要确保 SDIO 时钟和状态机都重置干净。
帛灿灿 发表于 2025-11-21 07:30 | 显示全部楼层
你有没有试过在拔卡后把 FATFS 的工作区也手动清零?我当年就是因为 FFS 的缓存里残留上一次的状态,导致 f_mount 一直报 NOT_READY。
童雨竹 发表于 2025-11-21 07:31 | 显示全部楼层
我怀疑可能是 SD 卡没完全断电,F4 的某些板子拔卡后供电还残留一点,卡的内部状态没重置。你可以测一下卡座的 3.3V 有没有真正掉下去。
万图 发表于 2025-11-21 07:32 | 显示全部楼层
如果你用的是 SDIO 1bit 模式,可以试试切换一下时钟频率。我有一次发现重新挂载前如果不降速,卡会直接给 CRC 错误,fatfs 就挂不上。
Wordsworth 发表于 2025-11-21 07:33 | 显示全部楼层
你用 Nucleo 板的话注意一下 CNx 卡槽的 CD 和 WP 引脚,有些版本根本没焊,CubeMX 默认配置是错的。你把检测功能完全关掉试试能不能正常挂载。
Bblythe 发表于 2025-11-21 07:34 | 显示全部楼层
我建议你在拔卡事件发生时增加一点延时,特别是 100~200ms,这段时间让卡内部电路稳定。我以前没加延时时也一直报 NOT_READY。
Pulitzer 发表于 2025-11-21 07:35 | 显示全部楼层
你有没有用逻辑分析仪抓过 CMD0 和 CMD8?如果重新插卡后这些命令完全没回应,那就是初始化过程没跑起来,可能是 SDIO 状态机卡住了。
Uriah 发表于 2025-11-21 07:36 | 显示全部楼层
我遇到过一个坑,拔卡后 DMA 没关闭,结果下一次初始化 SDIO 时 DMA 直接把状态写乱了。你可以确认一下 HAL_SD_DeInit 里 DMA 是否真的被释放。
Clyde011 发表于 2025-11-21 07:37 | 显示全部楼层
如果你确认软件都没问题,那就要怀疑硬件了。Nucleo 自带卡座质量一般,我有两块板子都是弹片接触不稳定,表现就是能挂载一次,后面直接报 NOT_READY。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

76

主题

102

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部