[STM32U5] STM32U5G9通过SDMMC1和4-wired读写SD卡

[复制链接]
36|2
柴库柴库 发表于 2026-10-22 10:06 | 显示全部楼层 |阅读模式
希望通过 SDMMC1 接口连接一张 MicroSD 卡来扩展数据存储。我的 Zephyr 设备树包含如下节点:
plaintext
&sdmmc1 {
status = "okay";
pinctrl-0 = <&sdmmc1_d0_pc8 &sdmmc1_d1_pc9 &sdmmc1_d2_pc10 &sdmmc1_d3_pc11 &sdmmc1_ck_pc12 &sdmmc1_cmd_pd2>;
pinctrl-names = "default";
disk-name = "SD";
bus-width = <1>;
clk-div = <8>;
};

如上所示,bus-width = <1>代表 1 线模式。我想要启用 4 线模式,但将该值修改为<4>之后,MicroSD 卡就无法访问了。在 Zephyr 系统下,要在 STM32U5 上正确开启 SDMMC 的 4 位模式,该如何解决这个问题?

麻花油条 发表于 2026-10-22 11:21 | 显示全部楼层
只改 bus-width = <4> 不够,D1、D2、D3 三根数据线的引脚复用和电气状态也必须同时就绪,缺一不可。
elephant00 发表于 2026-10-22 11:22 | 显示全部楼层
如果降频后 4 线能识别卡,说明问题出在信号完整性或时序上,不是设备树配置本身写错了。
classroom 发表于 2026-10-22 11:55 | 显示全部楼层
你设备树里 pinctrl-0 已经列出了 d1、d2、d3 的引脚节点,但需要确认这些节点在 STM32U5G9 上确实被配置为 SDMMC1 的复用功能,而不是默认的 GPIO 或其他外设。
cr315 发表于 2026-10-22 12:37 | 显示全部楼层
1 线模式能通、4 线模式不通,最常见的原因是 D1 到 D3 物理上没有焊接或连接,或者 MicroSD 卡座本身不支持 4 线。
duo点 发表于 2026-10-22 13:22 | 显示全部楼层
先把 clk-div 从 8 临时改成 32,降低 SDMMC 输出频率再试 4 线模式,这是 ST 社区给出的排查第一步。
flycamelaaa 发表于 2026-10-22 15:11 | 显示全部楼层
clk-div 的公式是 FREQ_BUS = SDMMC_CLK / (CLKDIV + 2),你设 8 的时候实际分频系数是 10,不是 8,算频率时要注意这个偏移。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

241

主题

261

帖子

0

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