你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F769 中启用指令缓存后LVGL显示花屏的问题查找以及解决方法

[复制链接]
lugl 发布时间:2025-3-10 21:09

【缘由】

我原来在STM32F769I-DISC1开发板上使用ST7789成功的实现了LVGL,使用spi_dma实现16bit传数据,原来跑得一切正常的。我今天移植FreeRTOS之后,考虑到性能优化,在main中,添加了指令缓存与数据缓存之后,就出现了花屏现象:

  SCB_EnableICache();

  /* Enable D-Cache */
  SCB_EnableDCache();

现象如下:

image.png

禁用后,一切又正常了,因此我怀疑是开启I-Cache与D-Cache的原因。

【原因分析】

经查找资料,分析可能是我在发送DMA数据之前有缓存数据存在,因此发生送的数据有可能没有请理。网上的如下原因分析:

image.png

【解决方法】

根据以及资料的提示,我找到了DMA发送的地方,在传输之前清理D-Cache,确保数据从缓存写回到内存。DMA发送结束之后使D-Cache无效,确保后续访问的数据是最新的。

修改代码如下:

image.png

重新烧录程序后,花屏现象成功解决。

d2005f3a7d6d057a53e3f67743c9660.jpg

【经验总结】

这次的现象,是显示屏,很容易就出现问题。如果在其他的场合,比如发送串口数据,那问题暴露就不是这么的明显。因此在开启数据缓存功能之后,切记要注意这点,在DMA传输之前把数据清理。

收藏 评论0 发布时间:2025-3-10 21:09

举报

0个回答

所属标签

ST中文论坛活动

即日起开启活动话题入口,之后的活动统一都放在此处,欢迎大家的加入!


最新内容

相似分享

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版