[其他ST产品] SDIO 在1-wire模式工作不正常

[复制链接]
496|10
我的牙白 发表于 2025-11-15 10:00 | 显示全部楼层 |阅读模式
使用 CubeIDE 做开发,要让 SDIO 在1-wire模式正常工作,我需要做哪些设置修改?
我已经勾选了 SDIO 一线模式和 FatFS 文件系统。还是无法工作。

公羊子丹 发表于 2025-11-27 07:31 | 显示全部楼层
我之前遇到过一模一样的问题,结果不是 SDIO 配置,而是卡槽的 CD/DATA0 上拉没搞好。一线模式对 DATA0 的上拉很敏感,你可以先用示波器看看电平是不是稳的。
周半梅 发表于 2025-11-27 07:32 | 显示全部楼层
你检查过速度设置吗?SDIO 默认可能跑得太快了,我之前把时钟先降到 400kHz 初始化阶段,成功后再提速,就能稳定进卡了。
帛灿灿 发表于 2025-11-27 07:33 | 显示全部楼层
我怀疑你是少改了 GPIO 复用,CubeMX 勾选 1-wire 只是关掉其他线,但 DATA0 那根线必须设置成 AF12,不能留在默认输入模式,不然 FATFS 挂载必定失败。
童雨竹 发表于 2025-11-27 07:34 | 显示全部楼层
建议你先不跑 FATFS,直接用 HAL_SD_ReadBlocks 测一下读 CID、CSD 能不能成功。如果这一步都不行,那就是 SDIO 初始化层面的事,和文件系统无关。
万图 发表于 2025-11-27 07:34 | 显示全部楼层
还有一个坑就是 SDIO 的宽度切换逻辑。虽然你选的是 1-wire,但有时候 HAL 驱动还是会尝试切回 4-wire。你可以把 HAL 里对应的宽度设置打印出来确认一下。
Wordsworth 发表于 2025-11-27 07:35 | 显示全部楼层
我之前调试时也卡了很久,最后发现 DMA 没开。虽然一线模式 DMA 不是必须,但有些 HAL 版本没开 DMA 会莫名其妙报超时,你可以试试看开上 DMA 会不会好一点。
Bblythe 发表于 2025-11-27 07:36 | 显示全部楼层
如果你用的是长飞线或者板上布线比较绕,一线模式的信号质量会更差。我建议你先把卡线缩得越短越好,甚至直接用飞线短接测试,看是不是信号完整性的问题。
Pulitzer 发表于 2025-11-27 07:37 | 显示全部楼层
你有没有检查 SD 卡本身的兼容性?有些便宜卡对 1-wire 模式特别挑,切初始化阶段经常 ACK 不回来。换一张 Sandisk 的卡试试能排除不少干扰因素。
Uriah 发表于 2025-11-27 07:38 | 显示全部楼层
调试的时候最好把 SDIO 的中断打开,把中断标志打印出来。有时候是因为初始化阶段的命令响应丢了,你至少能看到到底卡在哪个 CMD 上。
Clyde011 发表于 2025-11-27 07:39 | 显示全部楼层
如果是 CubeMX 生成的工程,建议手动去把 sdmmc.c 里的初始化结构体逐个对照参考手册。我当时就是发现某个字段默认没设,结果一线模式***起不来。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

70

帖子

0

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