本帖最后由 Huang0000 于 2019-7-21 10:20 编辑 STM32 24Mhz (基于CubeMX HAL库)硬件SPI驱动128*128 (ST7735)TFT液晶屏,示波器测SPI的时钟可达12Mhz, 但很明显看到从上到下的刷屏现象; 宏晶STC8A,外挂33Mhz时钟,硬件SPI驱动同一个屏幕,测得SPI时钟才5Mhz,两者对比 刷屏速度明显比 STM32快,测试了两天分析不出原因,不知有没朋友有相关的测试经验。请教一下。(SPI 两线制通讯,仅用到HAL库的HAL_SPI_Transmit(),数据发送函数) |
/* Check the end of the transaction */
// if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK)
// {
// hspi->ErrorCode = HAL_SPI_ERROR_FLAG;
// }
删掉后,速度澄澄的就上来了,仿真一看,时间刷屏时间减了80+个ms,原来刷一屏要156ms。
刷屏速度慢也有好几个因素的。主频肯定开最高,比较执行代码也是要时间的;SPI时钟也尽量提高,只要在器件规格范围之内就好了;HAL库在底层效率方面确实要比较标准库要差一点,但是为了高端兼容性,通用性。追求速度的话直接用寄存器。如果还不够的话,把CPU腾出来,用DMA上去干更快。
评分
查看全部评分
刚开始用 STM32,还不是很熟悉,但是我想法是,官方的库是不应该牺牲速度的,我也只是用了发送函数。我用STC测试时,用模拟SPI驱动就明显看出刷屏慢,改硬件SPI后,用33Mhz的晶振,速度一下就上来了。现在用这STM32驱动屏幕,这速度我就郁闷了,难不会一定要提高主时钟才行,SPI时钟再高,主时钟没上来也是不行!!!!
评分
查看全部评分
我再仔细检查一下,用的是 STM32F100C8, 系统时钟我是在CubeMX 配置的,最高支持是24M
了解,我现在时同一块屏幕,用STM32和STC驱动,都是硬件SPI,刷屏函数也一样,就是MCU主频不同,现在是STM32是24Mhz, STC8a是33Mhz , STM32的刷屏效果比STC慢
买了48Mhz 的M0 ,等到货了再测测看
STM32F100C8如果没有正确配置时钟频率,那默认使用HSI,系统时钟只有8MHZ,需要按下图配置使用HSI,系统时钟才能达到24MHZ
评分
查看全部评分
是,我一开始就是默认8M,那更慢,后来我就改为24的配置了,速度稍提升,但是还是比不上我测试STC的刷屏速度