
【缘由】 我原来在STM32F769I-DISC1开发板上使用ST7789成功的实现了LVGL,使用spi_dma实现16bit传数据,原来跑得一切正常的。我今天移植FreeRTOS之后,考虑到性能优化,在main中,添加了指令缓存与数据缓存之后,就出现了花屏现象:
现象如下: 禁用后,一切又正常了,因此我怀疑是开启I-Cache与D-Cache的原因。 【原因分析】 经查找资料,分析可能是我在发送DMA数据之前有缓存数据存在,因此发生送的数据有可能没有请理。网上的如下原因分析: 【解决方法】 根据以及资料的提示,我找到了DMA发送的地方,在传输之前清理D-Cache,确保数据从缓存写回到内存。DMA发送结束之后使D-Cache无效,确保后续访问的数据是最新的。 修改代码如下: 重新烧录程序后,花屏现象成功解决。 【经验总结】 这次的现象,是显示屏,很容易就出现问题。如果在其他的场合,比如发送串口数据,那问题暴露就不是这么的明显。因此在开启数据缓存功能之后,切记要注意这点,在DMA传输之前把数据清理。 |
【STM32F769I-DISC1】测评02:调试串口1与PC通讯功能
基于STM32F769I-DISC的可调数字电源
【STM32F769I-DISC1】刷入micropython并完成点灯、读取内部温度测试
【STM32F769】SDRAM移植之MPU保护
【STM32F769I-DISC1】硬件SPI驱动ST7789LCD
【STM32F769I-DISC1】驱动ST7789LCD
【STM32F769I-DISC1】对接deepseek本地模型
【STM32F769I-DISC1】LWIP手工移植
解决RTC时钟在TouchGFX中被切换时重置的问题
【圣诞专享活动】小雪人和雪花特效的TOUCHGFX展示