网上有关树莓派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内容啦
核心点
厂商能提供驱动文件,基本上就能用这个教程