网上有关树莓派5在触摸屏运行LVGL的教程很少,可能是LVGL专为低功耗的ESP32而设计的

该博文内容重在解决用树莓派5配合MHS35触摸屏来运行LVGL程序,相对于QT(仅在免费版本)和GTK,此两者需要一个桌面显示可能比较占用性能,且多数要进行hdmi和vnc的修改可能会导致此两个无法正常使用。

本文步骤相对简单,确保能够显示LVGL的示例程序,且不影响HDMI和VNC的正常使用

配置触控屏

准备一个MHS35显示屏,该屏幕采用来ili9486显示芯片和xpt2046触摸芯片,刷新率50赫兹,大小当然是3.5寸,做LVGL显示足矣

首先,要进行apt update,然后安装后面编译相关的依赖

sudo apt install -y build-essential cmake git
sudo apt install -y libdrm-dev libegl1-mesa-dev libgles2-mesa-dev
sudo apt install libinput-tools 这个用于触摸屏检测

然后,下载mhs35触摸屏驱动

git clone https://github.com/goodtft/LCD-show.git

然后进入目录,拷贝驱动文件

sudo cp ./usr/mhs35-overlay.dtb /boot/overlays/
sudo cp ./usr/mhs35-overlay.dtb /boot/overlays/mhs35.dtbo
sudo cp -rf ./usr/99-calibration.conf-mhs35-90 /etc/X11/xorg.conf.d/99-calibration.conf

然后修改boot文件

nano /boot/firmware/config.txt

添加一条内容

dtoverlay=mhs35:rotate=0

然后重启设备

这时设备在白屏后会黑屏,ssh进入系统输入 ls /dev/fs

多出的fs0之类的就是触摸屏的framebuffer

确认触摸屏

由于event的设备较多,要先确认哪个是触摸屏,以便后续操作

ls /dev/input/event*

然后利用 sudo libinput debug-events --device /dev/input/event5(不一定是event5)需要用户自行确认

配置LVGL

先克隆https://github.com/lvgl/lv\_port\_linux.git,然后进入目录再克隆https://github.com/lvgl/lvgl.git

然后利用lv\_conf的模板复制一个lv\_conf.h,然后进行修改

#define LV\_USE\_LINUX\_FBDEV 1

别忘了

#if 1 /\* Enable content \*/

然后修改lvgl的示例程序的main.c

int main(int argc, char **argv)
{

    configure_simulator(argc, argv);

    /* Initialize LVGL. */
    lv_init();
lv_display_t *display = lv_linux_fbdev_create();
lv_display_set_rotation(display, LV_DISPLAY_ROTATION_90);
lv_linux_fbdev_set_file(display, "/dev/fb0");
lv_indev_t *mouse = lv_evdev_create(LV_INDEV_TYPE_POINTER, "/dev/input/event5");
lv_indev_set_display(mouse, display);
    /* Initialize the configured backend */
    if (driver_backends_init_backend(selected_backend) == -1) {
        die("Failed to initialize display backend");
    }

    /* Enable for EVDEV support */
#if LV_USE_EVDEV
    if (driver_backends_init_backend("EVDEV") == -1) {
        die("Failed to initialize evdev");
    }
#endif

    /*Create a Demo*/
    lv_demo_widgets();
    //lv_demo_widgets_start_slideshow();

    /* Enter the run loop of the selected backend */
    driver_backends_run_loop();

    return 0;
}

/dev/fb0 /dev/input/event5按需修改

然后新建build,进入build输入

cmake .. -DCMAKE\_BUILD\_TYPE=Release
make -j4

这时会编译LVGL,编译完成后进入./build/bin/lvglsim 就能显示lvgl内容啦

核心点
厂商能提供驱动文件,基本上就能用这个教程

请输入图片描述

最后修改:2025 年 08 月 07 日
如果觉得我的文章对你有用,请随意赞赏