嵌入式技术论坛
直播中

而无返还

9年用户 1320经验值
擅长:光电显示
私信 关注
[问答]

RT_SFUD_SPI_MAX_HZ到底是什么作用机制呢?

使用 STM32H750 的 SPI1 与 w25q64jv flash 做数据通讯。
参照 rtt官方文档中 SFUD 对 flash 的操作方法进行测试。
RT_SFUD_SPI_MAX_HZ的参数设定会导致spi clk 的波形畸变。
设定 13mhz时波形:
示波器显示频率 25mhz
2.jpg
设定 13mhz时波形:
示波器显示频率 50mhz
2.jpg
疑问:
1:RT_SFUD_SPI_MAX_HZ 到底是什么作用机制
2:spi的通讯频率我是需要去哪里修改


回帖(2)

张宇

2023-4-14 10:09:13
2.jpg
图中可以看到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时钟源的时候就比较方便了.
举报

而无返还

2023-4-14 10:09:31
之前一直用的cubemx生成freertos做的工程,由于第一次接触RTT,所以直接用的官方的bsp做的开发。
考虑rtt的应用基数,默认rtt的系统内核和提供的硬件驱动组件的代码泛用性和强健性,就偷懒没有去自己阅读底层源码了,去了解实现机理。
现在在重新仔细阅读并整理RTT官方提供文件的一些底层实现原理的说明文档,便于理解相关实现,并给一些看不懂源码的人提供一些源码阅读的辅助资料。
RTT的官方文档对于实例实现机理的说明还是太粗糙了,主要集中在强调应用api调用了。
举报

更多回帖

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