HLK-W801-LVGL8之LCD驱动

前言

接着开始第二部分,LCD驱动的移植工作
链接:第一部分源码移植

这一篇主要说明在LCD移植中的思路及遇到问题的解决方案

LCD驱动思路

  1. 了解显示驱动芯片的基本使用和寄存器的说明
    显示屏的默认参数为:尺寸:240 RBG x320 dots; 默认水平240,垂直320
    使用16bit数据接口并口驱动(8080并口),控制时序
    请添加图片描述

    显示屏的初始化配置,电源相关,显示基本参数(显示方向,帧率,时钟等)这些相关寄存器说明

  2. 移植平台GPIO驱动到显示驱动芯片的适配与调试
    主要为GPIO的驱动移植,参考硬件引脚,需要完成控制IO和16bit并口IO驱动读写,这里考虑到IO设置执行速度,未使用SDK中的IO应用接口,而是重新通过宏定义方式来完成GPIO的驱动设置

W801的IO驱动重写

GPIO主要包括IO的读写方向配置,读IO数据,写IO数据等接口,这个接口主要放在平台的驱动文件中lv_env文件夹的lv_env.h里定义实现

  • IO引脚定义,参考前面文章的硬件接口宏定义;
    请添加图片描述
  • 读写方向配置,读IO数据,写IO数据接口宏定义
    请添加图片描述
  • 16bit并口数据读写接口宏定义
    请添加图片描述

ILI9325显示驱动数据访问接口

1)并口数据读写访问接口封装, 函数采用inline关键子定义,放在平台驱动lv_env.h中
请添加图片描述
2) lv_drv_conf.h中并口驱动的适配,这里和官方接口有不同,在CS定义直接通过宏定义区分置高或置低的操作,增加读数据的宏定义请添加图片描述
3)显示驱动芯片ILI9325的接口实现,目前只需实现init和flush接口就可以基本满足显示要求;下面主要说明一下flush函数的实现,这个是disp接口的关键,
请添加图片描述
lv_port_disp_init中初始化显示驱动实例,其中

#define MY_DISP_HOR_RES  240
#define MY_DISP_VER_RES   320

请添加图片描述

编译调试硬件接口

1) 首先要确认硬件接线的正确性,因为涉及的杜邦线连接W801和TFTLCD板,容易线序错误,这里在仔细检查后,在通过读取驱动芯片ID方式来验证接线的正确性
请添加图片描述
读取ILI9325的00寄存器若正确可以返回ID,这样就可以确保接线的对的,如果这里显示都不对后续的工作也无法进行;
当然这里的调试也是比较花时间的,也包括了IO驱动控制逻辑的调试,时序调试要求满足规格书要求,详细参考上面的[W801的IO驱动重写]章节,已经过多次调试测试调整
请添加图片描述
如图所示下载后读取ID成功,显示为9325,表示硬件连接基本上没问题

LVGL的接口调用

1) 依据文档的参考,由于SDK中基于Freertos,这里的心跳接口lv_tick_inc(1)放入系统tick钩子回调函数中 (注意在配置文件中TickHook的选项需是能)
2) 创建gui的显示任务,负责lv_task_handler的调用,5ms延时调用一次
3) 另外针对手上的这个TFTLCD还需注意一下参数配置,lv_port_disp_init(void)中LCD的水平尺寸为 240,垂直尺寸为320,
请添加图片描述

调试中主要问题记录

  1. 一开始编译调试下载,看到屏幕是这样子的,LCD显示满满的花屏,因为前面已经确定硬件接线是OK的,所以主要排查软件配置,驱动和接口问题了;
    请添加图片描述
  2. 一通排查后,发现初始化部分设置错误,这个驱动芯片ILI9325版本比较低,在帧率设置中不支持最大值0x0E的配置,找了几个不同版本的ILI9325数据手册对比,早期版本只支持到0x0D,
    请添加图片描述
  3. 结果一修改,图片就显示得比较正常了。
    请添加图片描述
  4. 上部和底部像素还是乱得,检查代码发现lv_conf.h 前面在设置时打开了MONIOR功能,这里的花屏应该时局部刷新不对
    请添加图片描述
    这时把问题定位到flush函数实现上了,结果发现存在bug,只指定坐标开始,并未指定区域,这应该是问题所在了,
    原来是这样子的: 请添加图片描述
    修改后增加填充区域位置坐标指定
    请添加图片描述
    编译下载运行,终于显示驱动大功告成
    请添加图片描述
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值