Linux 多点电容触摸屏实验(1)
1.多点电容触摸简介
2.多点触摸(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 */
void input_mt_sync(struct input_dev *dev)
void input_mt_slot(struct input_dev *dev, int slot)
2.1Type A 触摸点信息上报时序
1 ABS_MT_POSITION_X x[0]
2 ABS_MT_POSITION_Y y[0]
3 SYN_MT_REPORT
4 ABS_MT_POSITION_X x[1]
5 ABS_MT_POSITION_Y y[1]
6 SYN_MT_REPORT
7 SYN_REPORT
对于 Type A 类型的设备,发送触摸点信息的时序如下所示,这里以 2 个触摸点为例:
103 static irqreturn_t st1232_ts_irq_handler(int irq, void *dev_id)
104 {
......
111 ret = st1232_ts_read_data(ts);
112 if (ret < 0)
113 goto end;
114
115 /* multi touch protocol */
116 for (i = 0; i < MAX_FINGERS; i++) {
117 if (!finger[i].is_valid)
118 continue;
119
120 input_report_abs(input_dev, ABS_MT_TOUCH_MAJOR, finger[i].t);
121 input_report_abs(input_dev, ABS_MT_POSITION_X, finger[i].x);
122 input_report_abs(input_dev, ABS_MT_POSITION_Y, finger[i].y);
123 input_mt_sync(input_dev);
124 count++;
125 }
......
140
141 /* SYN_REPORT */
142 input_sync(input_dev);
143
144 end:
145 return IRQ_HANDLED;
146 }
2.2 Type B 触摸点信息上报时序
1 ABS_MT_SLOT 0
2 ABS_MT_TRACKING_ID 45
3 ABS_MT_POSITION_X x[0]
4 ABS_MT_POSITION_Y y[0]
5 ABS_MT_SLOT 1
6 ABS_MT_TRACKING_ID 46
7 ABS_MT_POSITION_X x[1]
8 ABS_MT_POSITION_Y y[1] 9 SYN_REPORT
1 ABS_MT_TRACKING_ID -1
2 SYN_REPORT
78 static void ili210x_report_events(struct input_dev *input,
79 const struct touchdata *touchdata)
80 {
81 int i;
82 bool touch;
83 unsigned int x, y;
84 const struct finger *finger;
85
86 for (i = 0; i < MAX_TOUCHES; i++) {
87 input_mt_slot(input, i);
88
89 finger = &touchdata->finger[i];
90
91 touch = touchdata->status & (1 << i);
92 input_mt_report_slot_state(input, MT_TOOL_FINGER, touch);
93 if (touch) {
94 x = finger->x_low | (finger->x_high << 8);
95 y = finger->y_low | (finger->y_high << 8);
96
97 input_report_abs(input, ABS_MT_POSITION_X, x);
98 input_report_abs(input, ABS_MT_POSITION_Y, y);
99 }
100 }
101
102 input_mt_report_pointer_emulation(input, false);
103 input_sync(input);
104 }
2.3 MT 其他事件的使用
3. 硬件原理分析
Linux 多点电容触摸屏实验(1)相关推荐
- 【正点原子Linux连载】第六十四章 Linux 多点电容触摸屏实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- Linux 多点电容触摸屏实验
1.电容触摸屏驱动框架 1.1 MT协议讲解 ①.电容触摸屏是 IIC 接口的,需要触摸 IC,以正点原子的 ATK7016 为例,其所使用的触摸屏控制 IC 为 FT5426,因此所谓的电容触摸驱动 ...
- 正点原子Linux阿尔法开发板4.3 寸多点电容触摸屏测试问题和gt9xx系列linux驱动移植
正点原子Linux阿尔法开发板4.3 寸多点电容触摸屏测试问题和gt9xx系列linux驱动移植 正点原子官方CSDN 4.3 寸多点电容触摸屏测试问题 正点原子gt9xx系列linux驱动移植 1. ...
- 驱动程序开发:多点电容触摸屏
驱动程序开发:多点电容触摸屏 一.编写驱动前的知识准备 1.CST340触摸屏芯片寄存器 2.CST340触摸屏的硬件原理图 3.电容触摸屏驱动是由几种linux驱动框架组成的 4.linux多点电容 ...
- STM32MP157驱动开发——多点电容触摸屏驱动
STM32MP157驱动开发--多点电容触摸屏驱动 一.简介 二.电容触摸屏驱动框架简介 多点触摸(MT)协议详解 三.驱动开发 1.添加 FT5426 设备节点 2.FT5426 节点配置 3.驱动 ...
- 嵌入式Linux开发12——触摸屏实验
背景知识 关于电容屏的物理原理我们就不去研究了,毕竟我们不是开发电容屏的,而是电容屏的使用者,我们只需要关注如何使用电容屏,如何得到其多点触摸坐标值即可. 我们以触摸控制IC FT5426为例 ...
- i.MX6ULL终结者Linux 电容触摸屏实验硬件原理图
在本实验中使用迅为的7寸屏为例,使用的是FT5426触摸芯片. 图 1 从原理图中得知,7寸屏使用I2C2,触摸屏复位引脚为SNVS_TAMPER9,中断引脚为GPIO_9.
- 正点原子Linux阿尔法开发板4.3 寸多点电容触摸屏测试问题
正点原子给的技术文档如上图,我按照文档上的步骤配置设备树更改驱动发现触摸没有反应,我以为是我的问题,后来发现我的显示屏驱动**IC不是GT9147.**** 附上链接 **https://downlo ...
- Linux驱动开发学习笔记-电容触摸屏驱动
<电容触摸屏驱动框架> 电容触摸屏驱动其实是以下几种 linux 驱动框架的组合: ① IIC 设备驱动,因为电容触摸 IC 基本都是 IIC 接口的,因此大框架就是 IIC 设备驱动. ...
- STM32——触摸屏实验-电容型触摸屏-M4
一.触摸屏 触摸屏(touch screen)又称为"触控屏"."触控面板",是一种可接收触头等输入讯号的感应装置.作为一种新型的电脑输入设备,可以用来取代传统 ...
最新文章
- Oracle 11g 新特性 -- Transparent Data Encryption (透明数据加密TDE) 增强 说明
- java面向对象中的抽象,类与对象
- 汉字与区位码(2) - 分析
- 【RBM】代码学习--DeepLearningToolBox
- 简单又实用的MRP手机平台下软件及游戏破解方法
- sai在别的图层复制图片后粘贴到新的图层中怎么调整图片尺寸?
- 计算机软件的著作权和专利权法律保护资料
- android地图定位到海洋,如何利用卫星导航技术进行高精度海洋测绘定位
- Ubuntu14.04搭建LXR本地服务器阅读Linux内核代码
- 51单片机使用12M晶振串口乱码问题
- 广告联盟的几大防作弊技术
- 随意发表见解易成无效表达
- android rootfs 编译,android rootfs
- linux安装vim plug,VIM 插件管理工具 vim-plug 简明教程
- 原创 | 连面拼多多、美团、头条、快手后给大家划下重点
- 阿里P8大佬的860页分布式微服务笔记,改变你对架构的认知
- java hh24miss_时间日期转换工具类,获取当前时间YYYYMMDD24HHMISS、YYYYMMDDHHMISS
- Windows常用DOS(cmd)目录命令
- OSMO ACTION 电池管家 黄灯什么意思
- 编译必装-DXSDK_Mar09安装详细教程