一、屏幕介绍

ATK-7016 这款屏幕其实是由 TFT LCD+触摸屏组合起来的。底下是 LCD 面板,上面是触摸面板,将两个封装到一起就成了带有触摸屏的 LCD 屏幕。电容触摸屏也是需要一个驱动 IC的,驱动 IC 一般会提供一个 I2C 接口给主控制器,主控制器可以通过 I2C 接口来读取驱动 IC里面的触摸坐标数据。ATK-7016、ATK-7084 这两款屏幕使用的触摸控制 IC 是 FT5426,ATK-4342 使用的驱动 IC 是 GT9147,ATK-4384 使用的驱动 IC 是 GT1151。这些电容屏触摸 IC 都是 I2C 接口的,使用方法基本一样。

ATK-4384 的电容触摸屏部分有 4 个 IO 用于连接主控制器:SCL、SDA、RST 和 INT,SCL 和 SDA 是 I2C 引脚,RST 是复位引脚,INT 是中断引脚。一般通过 INT 引脚来通知主控制器有触摸点按下,然后在 INT 中断服务函数中读取触摸数据。也可以不使用中断功能,采用轮询的方式不断查询是否有触摸点按下,本章实验我们使用中断方式来获取触摸数据。


二、触摸驱动分析

1、驱动框架分析

按照https://blog.csdn.net/qq_41709234/article/details/128661071的说法:

驱动程序编写主要参考《正点原子开发指南》,在裸机开发中进行触摸屏的驱动,主要流程如下:

①、电容触摸屏是IIC接口的,需要触摸 IC,以正点原子的 ATK4384 为例,其所使用的触摸屏控制 IC 为GT1151,因此所谓的电容触摸驱动就是 IIC设备驱动。 
  ②、触摸IC提供了中断信号引脚(INT),可以通过中断来获取触摸信息。 
  ③、电容触摸屏得到的是触摸位置绝对信息以及触摸屏是否有按下。 
  ④、电容触摸屏不需要校准,当然了,这只是理论上的,如果电容触摸屏质量比较差,或者触摸玻璃和 TFT 之间没有完全对齐,那么也是需要校准的。

那么电容触摸屏的Linux驱动主要需要以下几个驱动框架的组合:

①、IIC 设备驱动,因为电容触摸IC基本都是IIC接口的,因此大框架就是IIC设备驱动。 
  ②、通过中断引脚(INT)向linux内核上报触摸信息,因此需要用到linux中断驱动框架。坐标的上报在中断服务函数中完成。 
  ③、触摸屏的坐标信息、屏幕按下和抬起信息都属于linux的input子系统,因此向 linux 内核上报触摸屏坐标信息就得使用input子系统。

2、多点触摸(MT)协议详解

MT 协议隶属于 linux的 input 子系统,驱动通过大量的 ABS_MT 事件向 linux 内核上报多点触摸坐标数据。根据触摸 IC 的不同,分为 Type A 和 Type B 两种类型,目前使用最多的是 Type B 类型。

老版本的 linux 内核是不支持多点电容触摸的(Multi-touch,简称 MT),MT 协议是后面加入的,因此如果使用 2.x 版本 linux 内核的话可能找不到 MT 协议。

触摸点的信息通过一系列的 ABS_MT 事件(有的资料也叫消息)上报给 linux 内核,只有ABS_MT 事件是用于多点触摸的:

852 #define ABS_MT_SLOT        0x2f /* MT slot being modified */
853 #define ABS_MT_TOUCH_MAJOR  0x30 /* Major axis of touching ellipse */
854 #define ABS_MT_TOUCH_MINOR  0x31 /* Minor axis (omit if circular) */
855 #define ABS_MT_WIDTH_MAJOR  0x32 /* Major axis of approaching ellipse */
856 #define ABS_MT_WIDTH_MINOR  0x33 /* Minor axis (omit if circular) */
857 #define ABS_MT_ORIENTATION  0x34 /* Ellipse orientation */
858 #define ABS_MT_POSITION_X   0x35 /* Center X touch position */
859 #define ABS_MT_POSITION_Y   0x36 /* Center Y touch position */
860 #define ABS_MT_TOOL_TYPE    0x37 /* Type of touching device */
861 #define ABS_MT_BLOB_ID       0x38 /* Group a set of packets as a blob */
862 #define ABS_MT_TRACKING_ID  0x39 /* Unique ID of initiated contact */
863 #define ABS_MT_PRESSURE     0x3a /* Pressure on contact area */
864 #define ABS_MT_DISTANCE      0x3b /* Contact hover distance */
865 #define ABS_MT_TOOL_X        0x3c /* Center X tool position */
866 #define ABS_MT_TOOL_Y        0x3d /* Center Y tool position */ 

【项目原理】多点触摸屏驱动原理相关推荐

  1. 工业物联网LCD数码屏的驱动原理及低功耗设计(华大半导体HC32L136)

    目录 1.驱动原理 2.驱动程序 3.低功耗设计 在工业物联网传感器可视化设计时,仅仅为显示传感器的数值变化,多选用低成本.低功耗.尺寸合适的LCD数码屏,本次博客为各位分享华大半导体HC32L136 ...

  2. 二极管区分极性以及驱动原理

    二极管原理 首先需要了解一下什么是二极管,二极管是由P-N MOS组成的一个半导体材质,它不是完全导体,它没有回路,也就是说二极管只能有一个方向可以导通,另外一个方向就不可以导通. 它是由P-N组成的 ...

  3. LoRa SX1278/76驱动原理 附代码

    LoRa SX1278/76驱动原理 附代码 原理解释 LoRa 关键参数说明 前导码: 报头: 显式报头模式: 隐式报头模式: LoRa 调制解调: 扩频因子: 编码率: 信号带宽: 代码说明 SP ...

  4. 常见电机分类和驱动原理动画

    常见电机分类和驱动原理动画 文章目录 常见电机分类和驱动原理动画 基本分类 直流有刷电机 直流无刷电机(BLDC) 步进电机(Stepper motor) 舵机(steering engine) 伺服 ...

  5. 通过mtd读写flash_NOR Flash读写原理及驱动

    本文主要是关于NOR Flash的相关介绍,并着重对NOR Flash读写原理及驱动进行了详尽的阐述. NOR Flash NOR Flash是现在市场上两种主要的非易失闪存技术之一.Intel于19 ...

  6. STM32 PWM输出原理和直流电机PWM驱动原理详解及例程

    这次讲一讲STM32输出PWM的原理以及PWM可以作为信号传输数据的原理. PWM会有很多地方用到,有控制灯的亮度,控制电机,控制舵机或者其他一些外设,有时候你的单片机所输出的PWM是作为信号去控制, ...

  7. 无刷电机无感六步方波驱动原理整理以及过零现象产生分析

    无刷电机无感六步方波驱动原理整理以及过零现象产生分析 1.序言 近期在琢磨关于无刷电机驱动,发现在谈论无感六步方波驱动时,都只是提及到会有这么一个过零现象,而没有具体分析为什么,根据本人有限的电磁学理 ...

  8. 段码LCD段码屏的驱动原理

    LCD段码屏的驱动原理是:具有偶极矩的液晶棒状分子在外加电场的作用下其排列状态发生变化,使得通过液晶显示器件的光被调制,从而呈现明与暗或秀光与不透光的显示效果.液晶显示器件中的每个显示像素都单独被电场 ...

  9. 74HC595使用说明与驱动原理

    74HC595使用说明与驱动原理 功能简述 8位 串行输入与并行输出移位寄存器并提供一个8位D型存储寄存器,该存储寄存器具有8位3三态输出. 高速率传输, 在VDD等于6V时最大数据传输速率可达59M ...

最新文章

  1. anaconda创建一个虚拟环境
  2. 机器人核心:感知与规划
  3. MVP open day 2009 (二)
  4. LeetCode 6 Z 字形变换
  5. ta是什么职位_想好了吗~你为什么来博智林
  6. 普通背包问题-枚举算法(《算法竞赛宝典》 第二部 基础算法艺术)
  7. (69)信号发生器DDS正弦波设计(一)(第14天)
  8. sqlserverv中处理字符串包含、截取
  9. 我去补了个牙,然后发现,未知的恐惧让人很绝望
  10. Firefox修改快捷键插件SakaKey使用教程
  11. 电子计算机奏出美妙的交响改为把字句,北师大版三年级下册语文的期中试卷
  12. docker-compose安装nginx配置hppts 报错
  13. ubuntu下固定IP地址
  14. 巨人网络纽交所上市揭幕 市值将望超过盛大网易
  15. private static final long serialVersionUID = 1L 的作用
  16. 金融监管背后有何真实意图?“数字人民币”是真正的金融创新吗?
  17. 微信小程序扫码实现web自动登录
  18. 经纬度度与度分格式转化
  19. Unity 编辑器开发实战【Custom Editor】- AudioDatabase Editor 音频库编辑器
  20. 怎么将CAD图纸中的新符号导入图库?

热门文章

  1. 中国方言输入法Rime入门
  2. c 文件夹打包解包_原创 | 西门子TIA MPK文件解包分析
  3. 三大运营商争夺iPhone,活体免费
  4. c语言----windows系列教程之音频录入与处理
  5. 小学生C++编程基础 课程11(共8题)
  6. PAT甲级1002 All Roads Lead to Rome
  7. OpenGL.ES在Android上的简单实践:10-曲棍球(拖动物体、碰撞测试)
  8. 怎样做到音频合并无缝衔接
  9. Mysql定时器使用(本人亲笔亲测-开发使用)
  10. 支持emoji表情的文本输入框