【SPI时钟频率】BMC侧如何配置SPI时钟频率

问题描述

背景:当前项目SI测试发现,SPI总线质量较差,希望BMC侧能降低SPI时钟频率验证是否能优化

问题:BMC侧如何配置SPI总线时钟频率

答案内容由AI生成,仅供参考:
根据知识库信息,BMC侧配置SPI时钟频率的方法如下:

配置方法

通过相关API设置时钟频率:

知识库中提到,sfc_sys_set_controller_clk 是一个用于设置SFC(Serial Flash Controller)控制器时钟频率的函数,它绑定在SPI总线上,用于确保通信过程中的正确时序。

具体配置示例:

在知识库的SPI驱动配置中,可以看到以下代码示例:

function SpiDriverExecutor:ctor(cfg)
    if spi_def.SPIKODRV == SPIKODRV then
        log:notice('load chipv1 spikodrv')
    else
        log:notice('load chipv2 spikodrv')
    end
    self.driver_name = spi_def.SPIKODRV
    self.device_name = DEVNAME_BIOS_V6
    if cfg.mhz then
        self.mhz = string.format('g_clk_mhz=%s', cfg.mhz)
    end
end

从上述代码可以看出,配置SPI时钟频率可以通过设置 cfg.mhz 参数来实现,该参数最终会转换为 g_clk_mhz 格式的配置项。

相关经验参考

时钟频率对通信的影响:

  • 知识库中提到,SPI时钟频率(25 MHz)设置为过高时,会导致芯片识别失败,因为当时钟频率过高时会产生时序错误,无法正确检测到Vendor ID。
  • 同时提到,较长的硬件走线长度会加剧高频时钟下的时序问题,增加通信错误的可能性。
  • 在BIOS升级失败的案例中,也出现了时钟速率不匹配(25M vs 24M)的情况,可能影响SPI通信。

调试案例参考:
在Topic 5742的讨论中,用户liutao曾询问是否可以通过软件调整SPI总线速度来解决问题。但最终结论是调整SPI速率无法解决问题,根本原因是硬件层面的MISO下拉电阻问题,将下拉电阻去掉后即可正常读写Flash。此案例说明,在部分场景下,SPI总线质量问题可能并非软件配置所能解决,需要结合硬件排查。

是bios升级的spi速率吗

是1711还是1712?

是配置升级BIOS使用的spi时钟频率吗