sIDF + LVGL8:ST7789V & CST816S 触摸屏移植

用到的所有文件链接
我整理的lvgl文件:https://gitee.com/BHJ2022/lvgl.git
gsm项目地址:https://gitee.com/gsm-wheather-project

零、准备工作

解压lvgl_disp_indev和gsm项目文件

1)将gsm中的屏幕及触摸驱动(touch_screen文件夹)直接复制到lvgl_disp_indev的component文件中

2)修改touch_screen的cmakelist如图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保https://github.com/Forairaaaaa/Chappie-Core

3)将gsm中的main中的include直接复制到lvgl_disp_indev的main文件中。包含main.h(头文件和函数声明)和bsp_board(管脚定义)

4)修改main的cmakelist如图

]

前期准备工作完毕

一、移植屏幕驱动

1、屏幕驱动修改添加背光(原工程使用的PMW,这里直接设置为高电平)——led.c

在 lcd_init()中添加,

)]

2、lvgl接口修改

文件名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fB3zDSDb-1669538043938)(C:\Users\LEGION\AppData\Roaming\Typora\typora-user-images\image-20221127144224227.png)]

注释或删除lvgl_helper.h(esp32的驱动头文件),直接删除esp32Driver文件夹

添加屏幕长宽声明

屏幕显示初始化disp_init();

在函数中添加屏幕的初始化,或者直接将disp_init()改为lcd_init(SPI3_HOST, 80000000);

添加刷屏函数

双缓存模式,将【】中的数据改为图示

设置屏幕尺寸,前文定义的

设置刷屏回调函数

刷屏函数,调用的屏幕驱动中的函数lcd_flush_area()

完成以上步骤屏幕就应该可以正常显示了

二、移植触摸驱动

触摸芯片型号:cst816t

1、修改cst816.c,添加i2c初始化函数

2、在cst816t_init()初始化函数中调用

3、可以在cst816t_read_pos()中添加如图语句,可以检查触摸是否正常

串口输出

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eOJcOvvt-1669538043942)(C:\Users\LEGION\AppData\Roaming\Typora\typora-user-images\image-20221127150931813.png)]

4、lvgl_disp_indev修改,修改touchpad_init();添加indev_drv.read_cb = touchpad_read;

1)打开touchpad(改为if1),如果没有其他输入设备需求,可以关闭mouse和encoder(改为if 0)

2)修改touchpad_init();添加触摸驱动初始化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kUvVkfwD-1669538043943)(C:\Users\LEGION\AppData\Roaming\Typora\typora-user-images\image-20221127151356169.png)]

3、修改 touchpad_read()如图,即图一中的回调函数,获取触摸位置坐标

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gQadvVUQ-1669538043943)(C:\Users\LEGION\AppData\Roaming\Typora\typora-user-images\image-20221127151458788.png)]

三、编译常见错误

1)头文件不存在

由于直接复制的gsm文件,会有许多不存在的头文件,直接注释或删除即可。用到的头文件只有bsp_board.h;main.h;lcd.h:cst816t.h

在main.h()中可以有这些头文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EAzOXNMw-1669538043943)(C:\Users\LEGION\AppData\Roaming\Typora\typora-user-images\image-20221127151915861.png)]

2)根据报错提示,适当添加头文件包含,记得修改cmakelist

四、lvgl demo使用

1、打开menuconfig,打开demo选项

## [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IF9YMK7b-1669538043944)(C:\Users\LEGION\AppData\Roaming\Typora\typora-user-images\image-20221127152328855.png)]

直接搜索demo,根据需要打开demo。

其中widget大概率会报size不够,没有就直接忽略。修改图示size为48或者其他推荐大小

2、demo调用

1)跳转到图示头文件

2)根据打开的demo,继续跳转

3)找到目标函数,在lvgl_main中调用即可

请添加图片描述

请添加图片描述

idf lvgl8显示触摸移植,st7789v+cst816

物联沃分享整理
物联沃-IOTWORD物联网 » sIDF + LVGL8:ST7789V & CST816S 触摸屏移植

发表评论