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-W801-LVGL8之触摸驱动相关推荐

  1. 中柏平板触摸驱动_工业平板电脑触摸屏种类及故障解决办法,赶紧收藏起来

    如需获得更多信息,文末点击"了解更多" 触摸屏又称为触控面板,一般和液晶显示器相结合做成触控显示设备.工业平板电脑是带有触摸显示设备的工控电脑,整机性能完善.区别在于内部的硬件,多 ...

  2. Android虚拟键盘和虚拟触摸驱动

    1.虚拟键盘驱动 文件位置:kernel/drivers/input/keyboard/zebra_key.c #include <linux/module.h> #include < ...

  3. firefly-rk3288j开发板 TP实验之GT9XX触摸驱动

    linux TP实验之GT9XX触摸驱动 1 准备工作 开发板:aio-rk3288j SDK版本:rk3288_linux_release_20210304 下载工具:Linux_Upgrade_T ...

  4. s5p4418添加触摸驱动

    /kernel/drivers/input/touchscreen/Kconfig config TOUCHSCREEN_FT6X36 tristate "FT6X36 touchscree ...

  5. LittleVGL踩坑指南03:Arduino下显示和触摸驱动配置(TFT_eSPI)

    文章版本7.10,LVGL更新极快,不同版本配置方法可能存在差异 前言   触摸搞了好几天,坑太多了,好在总算飞过来了.顺便把显示驱动也写了:提前说一下,我的硬件是2.4寸ILI9341驱动屏幕+XP ...

  6. 嵌入式驱动移植之触摸驱动初识

    开发环境 BootLoader:u-boot-1.1.6 kernel:linux-2.6.30.4 CPU:s3c2440 开发板:TQ2440 参考资料:<天嵌科技Linux移植手册> ...

  7. Android 基于USB_BUIK 触摸驱动

    1.概述 Android 和PC系统本身是支持 usb hid输入设备的.不过由于业务的发展,需要采用高精度触摸框.重新设计框架,改变原来   串口+usb_hid的方式.采用俩路usb,一路usb_ ...

  8. 基于rk3288平台的gt9xx 触摸驱动移植

                                              基于rk3288平台的gt9xx 触摸驱动移植 一.硬件介绍:     1 core-rk3288j 核心板     ...

  9. UT2416 wince 6.0 调试LCD35 触摸驱动参考

    UT2416 wince6.0 调试LCD35 触摸屏驱动参考 硬件平台:UT2416BV02  [友坚恒天ARM开发平台] 软件平台:wince6.0           [友坚恒天wince6.0 ...

最新文章

  1. Python的一些技巧
  2. 数据分析实例(股票分析实例)
  3. C++学习笔记1:virtual 继承
  4. Async/Await(异步处理)
  5. (活动)MySQL DBA之路 | 性能配置调优篇
  6. 3.SpringBoot 常用配置
  7. springmvc环境的搭建
  8. jquery 文本编辑器插件
  9. Mcafee(麦咖啡)8.5i 使用设置图解 --服务器
  10. 贪心(百练1328):安放雷达(区间问题)
  11. 2 Ubuntu简介
  12. python选手的最后得分_python戏说NBA--NBA近二十年得分王各项数据之最
  13. STM8L051F3单片机竟然没有TIM1定时器,却有TIM2,3,4!!!害我调了一天没调出来
  14. 机器学习基础--梯度下降(Gradient Descent)
  15. Nginx负载均衡轮询访问只会刚开始轮询一次,以后一直访问同一服务器
  16. 【打卡功能实现思路】
  17. Mybatis中给pojo类设置别名需要注意的点
  18. python系统工作原理_Python之路——堡垒机原理及其简单实现
  19. 信息安全第7章 网络安全
  20. STM32-蓝桥杯嵌入式之三行按键检测(按键的长、短,单击、双击)

热门文章

  1. 超快激光微加工的Burst Mode和PSO功能
  2. Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the
  3. 北京东方国信??有谁去过啊。。公司怎么样?
  4. 节点本地范围和链路本地范围_802.11协议精读15:链路模型(基于Free-Space Path Loss)...
  5. linux常用c函数(中文版)
  6. C/C++新手学习项目(三) 魔兽世界之三:开战
  7. 计算机基础知识实验内容及步骤,计算机基础实验报告要点.doc
  8. 浏览器工作流程_浏览器如何工作
  9. 华为平远程windows电脑
  10. 一般企业应用上云架构实践