2696|7

155

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

【2022得捷电子创新设计大赛】四、ESP32-S2-Kaluga-1运行LVGL [复制链接]

 

       近两周时间都比较忙,只是抽空测试了Kaluga官方仓库“esp-dev-kits”中的几个案例,目前除了触摸板的案例有问题,其它都正常可用。但是,通过对其中lcd组件和对应案例的分析,本人发现官方案例只提供了lcd的驱动,并没有提供GUI,案例也只是整屏显示画面的功能,于是决定尝试引入lvgl。

1、lv_port_esp仓库获取

      这里使用的是GitHub上lvgl主页的一个移植完整的仓库“lv_port_esp32”——链接:

链接已隐藏,如需查看请登录或者注册
 。

 

图4-1 GitHub主页截图

 

      按照经验,使用递归克隆参数“--recursive”果然又出现了错误,所以本人选择先不带参数直接克隆:“git clone https://github.com/lvgl/lv_port_esp32.git”。这样会有三个链接的仓库没有下载,之后单独下载并放置到同名目录中即可。

      关联的仓库1是lvgl,本人直接点击网页链接转过去,想着保证项目的版本兼容,不过后面编译时还是报了一个错误,好在注释掉无用语句即可。

      仓库1:

链接已隐藏,如需查看请登录或者注册
 。本人在克隆这个仓库时也报错了,直接在页面选择下载zip成功了,之后自然是解压到“../components/lvgl”目录。

      仓库2:

链接已隐藏,如需查看请登录或者注册
 。这个仓库只有若干显示屏驱动源文件,直接克隆成功,位于“../components/lvgl_esp32_drivers”。

      仓库3:

链接已隐藏,如需查看请登录或者注册
 。这个仓库的名字为“lv_demo”,为了怕出错(后续分析CMakeLists也判断必须改名),克隆后本人修改目录名为:“lv_examples”,最终位于“../components/lv_examples/lv_examplees”。

 

图4-2 直接克隆(非递归)缺失的三个子目录(第三个在lv_examples下一级)

 

图4-3 链接的三个仓库l的路径位置

 

2、项目配置(基于VS Code)

      直接使用VS Code打开根目录“lv_port_esp32”,先在状态栏选择MCU类型“esp32s2”,然后点击状态栏的“齿轮”按钮——相当于执行“idf.py menuconfig”,最后执行build。

具体的menuconfig配置,本人进行了以下修改:

 

图4-4 esp-idf插件的状态栏工具按钮

 

图4-5 lvgl configuration

 

图4-6 LVGL ESP Drivers

 

图4-7 LVGL ESP Drivers——Display Pin Assignments和Kaluga原理图

 

      从管脚分布来看,Kaluga板子的LCD Touch脚和Camera脚是复用的,所以这里没有开启触摸屏。

3、编译项目

      build会报两个错误,都是位于“../components/lv_examples/lv_examples/lv_demo.h”。

      一是头文件“../lv_demo_conf.h”找不到,修改方法有两个:将同目录下lv_demo_conf_template.h重命名为lv_demo_conf.h(实际没有启用这个头文件),或者干脆注释掉这一句头文件连接。

      二是版本检查的条件编译,不知道是不是下载阶段的选择问题,这里版本检查不符合8.0.0,所以会输出报错信息“#error”,索性也注释掉。

 

图4-8 lv_demo.h中的报错和修改方法

 

      link阶段时还会报一个错误,就是lv_demo_widgets()函数(位于../lv_examples/src/lv_demo_widgets/lv_demo_widgets.c)未定义,这是因为没有启用lv_demo_conf.h头文件,进而缺少宏定义“LV_USE_DEMO_WIDGETS”的结果。不过当本人尝试添加这个宏后,lv_demo_widgets.c源文件中会报大量类型不匹配错误(主要是各种lvgl的结构体),猜测是版本不匹配8.0.0的原因。

      所以,这里修改了main.c,不使用demo,只显示两个label,具体如下:

 

static void create_demo_application(void)
{
    /* When using a monochrome display we only show "Hello World" centered on the
     * screen */


    /* use a pretty small demo for monochrome displays */
    /* Get the current screen  */
    lv_obj_t * scr = lv_disp_get_scr_act(NULL);

    /*Create a Label on the currently active screen*/
    lv_obj_t * label1 =  lv_label_create(scr, NULL);
    lv_obj_t * label2 =  lv_label_create(scr, NULL);  //added by author

    /*Modify the Label's text*/
    lv_label_set_text(label1, "Hello\nworld");
    lv_label_set_text(label2, "Nihao Shijie! Wonderful Tianjin!");

    /* Align the Label to the center
     * NULL means align on parent (which is the screen now)
     * 0, 0 at the end means an x, y offset after alignment*/
    lv_obj_align(label1, NULL, LV_ALIGN_CENTER, 0, 0);
    lv_obj_align(label2, NULL, LV_ALIGN_CENTER, 0, 50);//added by author

#if defined CONFIG_LV_TFT_DISPLAY_MONOCHROME || \      //moved by author
    defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7735S
    /* Otherwise we show the selected demo */

    #if defined CONFIG_LV_USE_DEMO_WIDGETS
        lv_demo_widgets();
    #elif defined CONFIG_LV_USE_DEMO_KEYPAD_AND_ENCODER
        lv_demo_keypad_encoder();
    #elif defined CONFIG_LV_USE_DEMO_BENCHMARK
        lv_demo_benchmark();
    #elif defined CONFIG_LV_USE_DEMO_STRESS
        lv_demo_stress();
    #else
        #error "No demo application selected."
    #endif
#endif
}

 

图4-9 lvgl测试案例效果

 

最新回复

大佬,注意发帖规则 “帖子主题分类” 请选择【经验分享】 标题写为:【创意名称】+分享内容 示例:【基于RGB-D人脸检测及环境监测得低成本智能猫眼】物料开箱—STM32F750   详情 回复 发表于 2022-8-3 21:37
点赞 关注
 
 

回复
举报

7294

帖子

2

TA的资源

版主

沙发
 

这教程挺详细的,ESP32-S2的RAM有多大?能放下一个屏幕的显存吗?

点评

没查过资料,估计是够用的,网上很多ESP32 lvgl的案例。  详情 回复 发表于 2022-8-2 08:29
 
 
 

回复

7096

帖子

11

TA的资源

版主

板凳
 
各种细节都做了详细说明,楼主这方面做得非常好。感谢分享!

点评

感谢你每篇都回复。  详情 回复 发表于 2022-8-2 08:30
 
 
 

回复

155

帖子

1

TA的资源

一粒金砂(高级)

4
 
wangerxian 发表于 2022-8-1 15:58 这教程挺详细的,ESP32-S2的RAM有多大?能放下一个屏幕的显存吗?

没查过资料,估计是够用的,网上很多ESP32 lvgl的案例。

点评

嗯嗯,还没实际体验过LVGL呢!  详情 回复 发表于 2022-8-2 09:09
 
 
 

回复

155

帖子

1

TA的资源

一粒金砂(高级)

5
 
lugl4313820 发表于 2022-8-1 17:40 各种细节都做了详细说明,楼主这方面做得非常好。感谢分享!

感谢你每篇都回复。

 
 
 

回复

7294

帖子

2

TA的资源

版主

6
 
sonicfirr 发表于 2022-8-2 08:29 没查过资料,估计是够用的,网上很多ESP32 lvgl的案例。

嗯嗯,还没实际体验过LVGL呢!

 
 
 

回复

6593

帖子

9

TA的资源

版主

7
 

大佬,注意发帖规则

“帖子主题分类” 请选择【经验分享】

标题写为:【创意名称】+分享内容

示例:【基于RGB-D人脸检测及环境监测得低成本智能猫眼】物料开箱—STM32F750

点评

好的,下次注意  详情 回复 发表于 2022-8-4 08:00
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复

155

帖子

1

TA的资源

一粒金砂(高级)

8
 
秦天qintian0303 发表于 2022-8-3 21:37 大佬,注意发帖规则 “帖子主题分类” 请选择【经验分享】 标题写为:【创意名称】+分享内 ...

好的,下次注意

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表