LVGL已经集成了非常多的液晶与触摸芯片支持,配置中选择对应芯片配置一下即可,非常方便,但开发中还会遇到其它没有添加到menuconfig中的芯片。
由于esp32引脚非常少,所以找到一款IIC接口的4线电阻触摸芯片控制器NS2009,记录一下怎么添加到menuconfig中
NS2009是一款带I2C接口的4线制电阻式触摸屏控制芯片
12位分辨率A D转换器。
可测量手指在触摸屏上的压力。
2.0-5V宽电压。
一、添加驱动芯片的.c源文件包含
打开LVGL驱动触摸驱动目录中的CMake文件,components\lvgl_esp32_drivers\lvgl_touch\CMakeLists.txt
在# Include only the source file of the selected display controller.下面添加你的新驱动芯片,按原有的格式添加即可,我这里添加的是NS2009 IIC总线4线电阻屏触摸控制器
二、添加idf.py menuconfig菜单项
打开LVGL驱动触摸驱动目录中的Kconfig文件,components\lvgl_esp32_drivers\lvgl_touch\Kconfig
在config LVGL_TOUCH_CONTROLLER下添加一行新的驱动芯片,如下图,我添加的是NS2009,序号往上加即可。
同文件中继续添加菜单显示选择项,如下图,我添加的NS2009是IIC接口,所以按FT6X06的配置即可,配置为I2C接口
相同文件下,接着添加配置对应IIC端口选择菜单和XY轴调换菜单,X轴翻转,Y轴翻转菜单,按FT6X06的配置修改即可
三、添加驱动文件下载验证
在工程路径下执行idf.py menuconfig命令
配置界面进入Component config → LVGL Touch controller → Select a touch panel controller model. 触摸芯片选择菜单中,如下图,发现已经有NS2009选项了,我们选中它回车键
发现下面的菜单变成了I2C接口选择和引脚选择还有触摸配置菜单可以配置XY轴调换,X轴翻转,Y轴翻转
保存退出菜单,返回到VSCode中,打开项目根目录中的sdkconfig文件,发现LVGL Touch controller配置全部变为NS2009的配置了
接下来把components\lvgl_esp32_drivers\lvgl_touch中的ft6x36.c和.h文件复制一份,修改名称为NS2009.c.h
修改touch_driver.c 和.h文件。touch_driver.h文件添加NS2009配置定义包含头文件。touch_driver.c修改LVGL的触摸初始化和触摸读取的接口函数NS2009_init,NS2009_read(drv, data),在NS2009.C要实现这两个函数
下载测试,手指越用力,压力读值越小