前言
最近入手的一块HLK-W801开发板,加上早年买的一个ALIENTEK开发板中附带一块TFTLCD触摸电阻屏,看到网上的大神们都已经玩得很溜,刚好这样有条件用W801来玩一下基于LVGL的GUI开发,跃跃欲试。
先完成移植工作,看到官网和网上资料也很多,可以帮助自己更快的完成这个工作,主要内容包括三部分:
1. 源码移植
2. LCD驱动移植
3. 触摸驱动移植
本篇文章介绍第一部分:源码移植
移植思路
1) 浏览官网或其他中文网站关于lvgl的说明,先了解移植基础知识;
这里给下参考的链接:http://lvgl.100ask.org/8.1/get-started/index.html
2) 下载源码,访问github或gitee获取仓库,这里选择下载lvgl-8.2.0和lv_drivers的官方驱动,先从已有的例子上入手
3) 开发环境准备好,这里在HLK官网下载w801的代码与安装好CDK集成开发环境;
代码链接:https://h.hlktech.com/Mobile/download/fdetail/170.html
版本:wm_sdk_w80x_20211115(.zip)
CDK版本:2.10.3
4) 通过移植的说明文档,找到关键的移植说明和接口 链接
关键的移植文件:
lv_conf.h: 全局GUI的驱动/应用配置文件
lv_drv_conf.h: 主要的底层驱动接口文件,由不同驱动芯片调用
关键的系统调用接口:
lv_tick_inc(tick_period) 接口:一个系统滴答来了解动画和其他任务所用的时间
lv_task_handler()接口:定时处理 LVGL 的任务
5)驱动接口的移植
搞清楚手上TFTLCD的规格和引脚定义;从原理图或驱动资料中得知这里驱动有两个;一个是显示的驱动芯片ILI9235,另一个是触摸的驱动芯片XPT2046
6)移植文件的文件组织
具体的源码文件需要放置的哪个目录,理清驱动文件和源码的关系
7)结合原理图和W801的引脚定义及驱动要求,考虑硬件接线
文件组织与移植
- 配置文件
lv_conf.h
lv_drv_conf.h - lvgl显示与输入接口
portin中的lv_port_disp和lv_port_indev文件 - 显示驱动接口
lv_drivers->display->ILI9325.c/h - 输入设备驱动接口
lv_drivers->indev->XPT2046.c/h - W801平台接口
lv_env->lv_env_wm80x.c
层次关系说明
硬件引脚连接说明
编译问题说明
1) 编译源码时,很多处地方提示“error: conflicting types“ 的错误
如下图所示:
这里并没有找到原因,临时的解决方案是在lv_conf.h中增加一个头文件 <string.h> 包含来解决;这个还要后续排查一下头文件的包含找找真正的原因