蓝牙技术
直播中

刘艳

8年用户 2502经验值
私信 关注
[问答]

请问Cyw20791B2 的spi接口在slave模式下最高clk频率是多高?

1)Cyw20791B2 的spi接口在slave模式下最高clk频率是多高?
2)wiced_update_cpu_clock(TRUE, WICED_CPU_CLK_96MHZ)将cpu的频率设为96MHz,spi接口slave模式下是否可以接受更高的clk频率?

回帖(1)

微风挽雨

2025-7-14 17:33:59

回答你的问题:




  1. Cyw20791B2 SPI Slave 模式下的最高 SCK 时钟频率是 16 MHz。



    • 根据 Infineon (原 Cypress) 的官方文档和 WICED SDK 支持列表,Cyw20791B2 的最高工作频率为 48 MHz

    • SPI 工作在 Slave 模式时,其能可靠接收数据的最高 SCK 输入时钟频率有一个特定的上限。

    • 这个上限被明确规定为 16 MHz。 这是硬件限制,即使 CPU 运行在最高频率(48 MHz),SPI Slave 控制器内部的采样逻辑和时序要求也无法支持超过 16 MHz 的输入时钟。




  2. wiced_update_cpu_clock(TRUE, WICED_CPU_CLK_96MHZ) 对 SPI Slave 模式的最高时钟频率没有影响,该限制仍然为 16 MHz。



    • 关键点:wiced_update_cpu_clock(TRUE, WICED_CPU_CLK_96MHZ) 在应用于 Cyw20791B2 时,实际上并不会将 CPU 频率设置为 96 MHz。

    • Cyw20791B2 是一款基于 ARM Cortex-M3 的芯片,其设计最高频率为 48 MHz。WICED SDK 中的 wiced_update_cpu_clock() API 提供了时钟设置接口,但它会根据硬件能力约束实际的设置值

    • 对于 Cyw20791B2:

      • 调用 wiced_update_cpu_clock(TRUE, WICED_CPU_CLK_96MHZ) 时,SDK 内部的驱动逻辑会检测到芯片不支持 96 MHz

      • 实际效果是:它会将 CPU 频率设置为硬件允许的最高频率,即 48 MHz。这个行为在 SDK 的源代码实现中可以看到相应的限制检查逻辑。


    • 即使 CPU 被超频(理论上到 96 MHz,但在 B2 上实际只会到 48 MHz)也不会改变 SPI Slave 控制器的限制:

      • SPI Slave 控制器的输入 SCK 采样和处理逻辑是相对独立于 CPU 主频的硬件电路。

      • 16 MHz 的限制是针对从外部主机接收到的 SCK 信号的频率上限。这个限制是由 SPI Slave 控制器本身的电气特性和时序要求决定的(例如建立/保持时间、采样窗口等),与 CPU 运行频率无关。

      • CPU 运行在 48 MHz(已经是最高了)并不能让 SPI Slave 控制器以高于 16 MHz 的速率去可靠地采样来自外部主机的 SCK 和数据线(MISO)。





总结:



  • Cyw20791B2 SPI Slave 模式可靠工作的最高 SCK 时钟频率:16 MHz (硬件限制)。

  • 调用 wiced_update_cpu_clock(TRUE, WICED_CPU_CLK_96MHZ)

    • 实际将 Cyw20791B2 的 CPU 频率设置为其硬件最大值:48 MHz

    • 不会突破 SPI Slave 模式固有的 16 MHz 输入时钟频率限制。

    • 因此,无法通过提高 CPU 频率(即使名义上设置 96MHz,实际还是 48MHz)来提高 SPI Slave 模式可接受的最高 SCK 频率。SPI Slave 的极限速度始终由它的专用硬件限制在 16 MHz。



建议:



  • 在设计 SPI 通信时,尤其是从机速率要求高时,务必查阅最新的 Cyw20719B2 DatasheetTechnical Reference Manual (TRM) 中关于 SPI 接口章节的时序图和电气特性参数表确认具体的限制。

  • 使用 SDK API wiced_update_cpu_clock() 后,可以调用 SystemCoreClockUpdate() 获取更新后的实际系统时钟频率变量值,并使用它来进行外设(如 UART 波特率等)的正确配置。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分