SFUD 参数配置导致 spi 时钟信号异常

发布于 2020-07-30 20:40:26

使用 stm32H750 的 SPI1 与 w25q64jv flash 做数据通讯。
参照 rtt官方文档中 SFUD 对 flash 的操作方法进行测试。

RT_SFUD_SPI_MAX_HZ的参数设定会导致spi clk 的波形畸变。

设定 13mhz时波形:
示波器显示频率 25mhz
微信图片_20200730202539.jpg

设定 13mhz时波形:
示波器显示频率 50mhz
微信图片_20200730202536.jpg

疑问:
1:RT_SFUD_SPI_MAX_HZ 到底是什么作用机制
2:spi的通讯频率我是需要去哪里修改

备注:RTT初学者

查看更多

关注者
0
被浏览
52
whj467467222
whj467467222 3 days ago

楼主能发现问题,给你点个赞.这个问题我来给你详细解答一下.
PR说明
image.png
图中可以看到H750的SPI时钟源由4路,具体选择哪一种,这个完全是用户一个自定义的行为.
可以在drv_spi.c里面看到下面的代码

#if defined(SOC_SERIES_STM32F0) || defined(SOC_SERIES_STM32G0)
    SPI_APB_CLOCK = HAL_RCC_GetPCLK1Freq();
#elif defined(SOC_SERIES_STM32H7)
    SPI_APB_CLOCK = HAL_RCC_GetSysClockFreq();
#else
    SPI_APB_CLOCK = HAL_RCC_GetPCLK2Freq();
#endif

这个使用宏定义的方式对H7做了单独处理,所以这里获取SPI时钟源的具体频率API是需要做一些修改与调整的.

另外楼主有兴趣的话,自己用CUBEMX新建一个F系列的工程,就能看到F系列的时钟源只有1路.所以在获取SPI时钟源的时候就比较方便了.

如果我的回答对你有帮助,记得点个采纳哦.

1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友