你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

st-img
chrome
st-img
firefox
st-img
safari
st-img
ie8及以上
shequ.stmicroelectronics.cn
  • ST意法半导体官网
  • STM32中文官网
  • ST全球论坛
登录/注册
  • 首页
  • 技术问答
  • 话题
  • 资源
  • 创客秀
  • 视频
  • 标签
  • 积分商城
  • 每日签到
JJ WangHM

JJ WangHM

 

回答数 0 关注数 0
关注 私信
  • 动态99
  • 提问
  • 回答0
  • 创客秀 0
  • 分享 0
  • 关注0
1 回答

[ZEPHYR]SDMMC2 Clock Initialization Failure on M4 Core (PLL2R Frequency Mismatch) 問題詢問

其它 STM32H7 STM32CubeIDE for VS Code
攻城狮Melo 攻城狮Melo 回答时间: 半小时前

✅ 解决方案(推荐做法) ✅ 1. M4 侧 DTS 中不要写死 PLL 参数 你应该移除 M4 DTS 中所有与 PLL2 相关的配置 ,只保留对 SDMMC2 的 clocks = <&rcc STM32_CLOCK_BUS_SDMMC2 ...> 的引用,不要指定频率 。 &sdmmc2 { clocks = <&rcc STM32_CLOCK_BUS_SDMMC2 0xXXXXXXXX>; status = "okay"; /* 不要写 clock-frequency = <48000000>; 或其他频率 */ }; ✅ 2. 使用 clock-control API 动态获取时钟频率 Zephyr 提供了 clock_control_get_rate() API,你可以在 SDMMC 驱动初始化前调用它,动态获取 SDMMC 域的实际时钟频率 ,而不是依赖 DTS 写死值。 示例代码(在 SDMMC 驱动初始化前): `` include <zephyr/drivers/clock_control.h> include <zephyr/drivers/clock_control/stm32_clock_control.h> const struct device *clk_dev = DEVICE_DT_GET(STM32_CLOCK_CONTROL_NODE); uint32_t clk_rate; clock_control_get_rate(clk_dev, (clock_control_subsys_t)&sdmmc2_clk_cfg, &clk_rate); LOG_INF("SDMMC2 domain clock rate: %u Hz", clk_rate); sdmmc2_clk_cfg 是你在驱动中定义的 struct stm32_pclken 变量,对应 SDMMC2 的时钟域。 ✅ 3. 修改 SDMMC 驱动以使用实际时钟频率 Zephyr 的 stm32_sdmmc 驱动默认会尝试根据 DTS 中的 clock-frequency 来配置 SDMMC 的时钟分频器。 你需要补丁驱动 ,让它使用 clock_control_get_rate() 获取的实际频率,而不是 DTS 写死值。 ✅ 4. 补丁建议(Zephyr 驱动层) 在 drivers/sdmmc/stm32_sdmmc.c 中,找到 sdmmc_clock_init() 函数,修改如下: uint32_t clk_rate; clock_control_get_rate(dev_data->clock_dev, (clock_control_subsys_t)&dev_config->pclken, &clk_rate); /* 用 clk_rate 而不是 DTS 中的 clock-frequency */ ✅ 5. 额外建议:M7 启动完成后通知 M4 你可以在 M7 的 Zephyr 应用中,等 PLL2 配置完成后再启动 M4 核 ,确保 M4 启动时时钟已稳定。 ✅ 6. 参考 Zephyr 社区讨论 你提到的 GitHub 讨论 zephyrproject-rtos/zephyr#100423 中,已有开发者提出类似问题 ,并最终通过: 移除 M4 DTS 中的 PLL 配置 使用 clock_control_get_rate() 动态获取频率 补丁 SDMMC 驱动

赞0
JJ WangHM JJ WangHM


阅读作者更多的帖子

所在话题

参与活动

  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16