久芯网

STM32F030 SPI 最高速率问题

avatar yangguo86 提问时间: 2023-06-30 08:11:47 / 未解决

问题1:STM32F030时钟没有 APB2, 为什么库函数会有 RCC_APB2PeriphClockCmd ?貌似 SPI1是通过这个函数来操作?

问题2:看数据手册,SPI 最大速率 18Mbps,如果主频设置为 48M,预分频设置为/2,理论上是 24M,但实际是 18M,是不是这样理解?还是设置预分频的时候要注意,只能/4=12M,不能大于 18Mbps;

问题3:使用 SPI 串口屏显,会有点卡屏,除了 SPI 速率设置,还有什么会影响刷屏效果?


如需获得 STM32F030 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

3个回答
  • avatar xmshao
    回答时间: 2023-06-30 08:43:50

    RCC_APB2PeriphClockCmd 是用来开启外设时钟的,SPI1挂在APB总线上。 你这里的18Mb/s,是波特率。如果APB是48MHz,设置分频系数至少是4,如果选2或1就超了。 刷新速率对卡屏肯定有影响,SPI速率的确很关键的一方面。你或许可以将AHB配置为36MHz,2分频后以满足 SPI的最大速率。当然,时钟调整这点你可以综合考虑。 另外,就是你代码处理上是否有优化空间呢?

  • avatar yangguo86
    回答时间: 2023-06-30 09:05:59
    xmshao 发表于 2023-6-5 11:56
    RCC_APB2PeriphClockCmd 是用来开启外设时钟的,SPI1挂在APB总线上。

    主频一定要设置为 48M,这个是其他外设要求的: 能否解答下面两个疑问:还望解答 1、SPI 时钟是通过 HCLK?APB1?APB2? 按库函数调用貌似APB2,但在参考手册,Clock Tree 里面没有 APB2 ? 2、如果设置 48M 的主频,是不是 SPI 预分频智能设置为 48/4=12M? 如果我设置为 48/2=24M(当能,这里不要求 24M,看看能否达到18M),会不会出现异常 ?

  • avatar butterflyspring
    回答时间: 2023-06-30 09:37:51

    1. 是在APB总线上,在函数注释中有说明,在memory mapping 中也能查到。 2. 如果总线是48M,那么分频只能设置为4, 在cubemx 的软件中也有提示。如果代码非得除2达到24M,一定会出 问题的。或批量或某些条件下,但是对与原厂来说,必须限制应用频率。 所以建议楼主不要超频使用。

会员中心 微信客服
客服
回到顶部