|
本帖最后由 caicaptain2 于 2020-9-8 17:02 编辑
F4的MCU,SPI3时钟20MHz的,刷3.5寸TFT,分辨率320x480,刷一屏需要0.4秒。。。
尝试使用hal库的spi+dma,刷一屏反而要1秒了。。。
屏是常用的ILI9488的芯片,spi模式下,写一个点需要发送3个字节数据,是不是这个原因造成的?
----------------------------------------已解决,分享代码------------------------------------------
第一次用SPI接口的FT屏,卖家提供了一些代码,但是SPI是普通单字节模式,速度很慢。而且没有读点函数。尝试着优化了一下。mdk编译的时候,优化不能选择3,可能花屏。 优化0的时候很好。
运行环境: F407,MCU主频168MHz,SPI3,SPI时钟是21MHz。 驱动3.5寸 320x480的SPI接口TFT。
目前改进成SPI加MDA接口后,刷屏耗时0.2秒,感受尚可,已经是最优化了。
代码中的读点函数正常,读ID正常。
DMA中断的代码如下:
- void DMA1_Stream5_IRQHandler(void)
- {
- if (__HAL_DMA_GET_FLAG (&hdma_spi3_tx,DMA_FLAG_TCIF1_5) != RESET)
- {
- if(__HAL_DMA_GET_IT_SOURCE(&hdma_spi3_tx, DMA_IT_TC) != RESET)
- {
- __HAL_DMA_CLEAR_FLAG(&hdma_spi3_tx,DMA_FLAG_TCIF1_5);
- SPI3txdmaflag=0;
- }
- }
- }
复制代码
发现了一些bug,下面的附件是9月8日更新,无需开启DMA中断了,16BPP函数有优化,刷屏速度提升很多。 使用DMA的查询方式,这样在多任务系统中,也不影响其他函数的速度了。
LCD9488SPI.zip
(19.1 KB, 下载次数: 171)
|
|