问题1:STM32F030时钟没有 APB2, 为什么库函数会有 RCC_APB2PeriphClockCmd ?貌似 SPI1是通过这个函数来操作? 问题2:看数据手册,SPI 最大速率 18Mbps,如果主频设置为 48M,预分频设置为/2,理论上是 24M,但实际是 18M,是不是这样理解?还是设置预分频的时候要注意,只能/4=12M,不能大于 18Mbps; 问题3:使用 SPI 串口屏显,会有点卡屏,除了 SPI 速率设置,还有什么会影响刷屏效果? |
RCC_APB2PeriphClockCmd 是用来开启外设时钟的,SPI1挂在APB总线上。 你这里的18Mb/s,是波特率。如果APB是48MHz,设置分频系数至少是4,如果选2或1就超了。 刷新速率对卡屏肯定有影响,SPI速率的确很关键的一方面。你或许可以将AHB配置为36MHz,2分频后以满足 SPI的最大速率。当然,时钟调整这点你可以综合考虑。 另外,就是你代码处理上是否有优化空间呢?
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),会不会出现异常 ?
1. 是在APB总线上,在函数注释中有说明,在memory mapping 中也能查到。 2. 如果总线是48M,那么分频只能设置为4, 在cubemx 的软件中也有提示。如果代码非得除2达到24M,一定会出 问题的。或批量或某些条件下,但是对与原厂来说,必须限制应用频率。 所以建议楼主不要超频使用。