LVGL刷屏优化(基于ESP32)

主要参考资料:
乐鑫ESP-IDF官方手册SPI Flash and External SPI RAM Configuration: https://docs.espressif.com/projects/esp-idf/zh_CN/release-v5.0/esp32s3/api-guides/flash_psram_config.html

驱动和端口优化

下面是一张图像文件/图像C array从读取到显示的整个底层路径,有了一个路径,我们就可以依次对每个环节进行优化。
在这里插入图片描述

RAM与PSRAM

从上图中可以看到,选择RAM还是PSRAM是两条不同的通道。(当然,RAM后可以接CPU,但是有DMA干嘛不用。另外DMA是只有RAM可以使用,在heap_caps_malloc()中设置MALLOC_CAP_DMA)。

ESP32中RAM的问题就是容量太小,留给data用的只有320K,对于大屏会有明显刷屏感。
PSRAM可以通过分配大内存,以空间换时间。但是对于大屏,第一张图的加载速度会较慢。

FLASH SPI与PSRAM SPI

首先了解一些术语,可以看到,SPI是通过Data Rate 和Line mode来控制传输速率。
在这里插入图片描述
乐鑫ESP-IDF官方手册SPI Flash and External SPI RAM Configuration章节,继续往下翻,可以看到最高支持Flash mode 80Mhz DDR 与PSRAM mode 80M DDR。
在menuconfig下Serial Flasher confg 和 Component Config/ESP32S3-Specific可以分别设置。
在这里插入图片描述

LVGL优化

修改显示间隔

在lv_config.h中,这个参数表示每次刷新屏幕后的间隔时间,以30ms为例,最高能达到30帧的刷新率。

/*Default display refresh period. LVG will redraw changed areas with this period time*/
#define LV_DISP_DEF_REFR_PERIOD 30      /*[ms]*/
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在利用LVGL框架进行GUI开发时,实现多个页面切换是必不可少的。LVGL中的页面切换是通过切换屏幕(Screen)实现的。每个屏幕都可以包含不同的UI元素和功能。 在LVGL中,页面切换可以通过以下几个步骤来实现: 1. 创建多个屏幕:使用`lv_obj_create()`函数创建多个屏幕对象,并为每个屏幕添加需要的UI元素和功能。 2. 设置当前屏幕:使用`lv_scr_load()`函数将需要显示的屏幕设置为当前屏幕。这样,只有当前屏幕上的UI元素才会显示在屏幕上。 3. 切换屏幕:通过代码逻辑或用户输入事件触发屏幕的切换,使用`lv_scr_load()`函数将要切换到的屏幕设置为当前屏幕。这样,新的屏幕上的UI元素会替换当前屏幕上的UI元素,实现页面切换效果。 值得注意的是,LVGL框架有一个帧率刷新周期的宏定义,可以在lv_conf.h文件中进行设置。这个宏定义限定了LVGL刷屏帧率的上限,默认为33帧。这意味着LVGL会通过内部的tick定时去刷新屏幕。 在移植LVGL时,可以使用封装好的刷屏函数替代默认的画点函数,以提高屏幕刷新性能。这可以通过在disp_flush函数中使用LCD_Fill_LVGL函数来实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【LVGL】学习笔记--(3)界面切换以及显示优化](https://blog.csdn.net/sinat_33408502/article/details/129242824)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值