admin 管理员组

文章数量: 887021

HLK

HLK-W801-LVGL8之触摸驱动

  • 前言
    • 触摸驱动实现
    • 驱动芯片SPI接口
    • XPT2046驱动接口
    • 显示截图

前言

本篇完成最后一部的触摸驱动移植
前面两部分:
第一部分:HLK-W801-LVGL8之源码移植
第二部分:HLK-W801-LVGL8之LCD驱动

触摸驱动实现

针对触摸驱动,在源码demo中也有关于驱动芯片的实现,这里直接使用XPT2046的相关源代码;
结合驱动XPT2046.c/h的实现,具体只需完成 xpt2046_init()和xpt2046_read()两个接口的编写调试工作,平台驱动主要为SPI驱动,完成lv_drv_conf.h中输入设备的驱动接口:

#define LV_DRV_INDEV_IRQ_READ    // 读取触摸笔中断信号电平
#define LV_DRV_INDEV_SPI_CS(val)   //  使能SPI slave
#define LV_DRV_INDEV_SPI_XCHG_BYTE(val) // SPI总线数据读写

驱动芯片SPI接口

  1. 首先是平台SPI驱动的初始化,需要配置SPI接口(速率,时钟极性/相位,CS使能)
    查询XPT2046了解到其数据接口的时序图:
  • 通过DCLK与数据IO的示意图,可以确定CPOL=0(空闲状态为低电平)CPHA=0(第一个边沿数据采样有效);
  • tACQ最小值为1.5us,这里设置SPI时钟为1MHz
  1. 结合WM 801的SDK提供的host spi接口,可以直接利用,很方便就完成关于触摸屏spi接口的初始化及数据访问接口
  2. 完成 lv_drv_conf.h中输入设备的驱动接口;由于SDK自带的SPI驱动中已包含CS的自动控制,这里的片选的手动控制就不需要实现了;

XPT2046驱动接口

  1. 根据原来XPT2046的驱动实现,根据驱动配置要求和读写数据实现,初始化时先第一次读取XY值,之后PEN输出使能;

  2. 读坐标操作为定时轮询,默认为30ms执行读取坐标操作;SPI驱动支持读取坐标直接获取16bits数据,对原来驱动做了这点修改
  3. 此外,测试调试中发现XY位置相反,需修改lv_drv_conf.h中的驱动配置;
     #define XPT2046_XY_SWAP     1
    
  4. 最后在gui任务中调用lv_touchpad_init()与lv_port_indev_init()就完成了触摸驱动的初始化,到已经全部完成关于显示和触摸驱动就完成了移植工作

显示截图



本文标签: HLK