资讯详情

Linux 下电容触摸屏驱动框架

电容触摸屏的驱动实际上是几种 linux 驱动框架的组合: ① IIC 由于电容触摸,设备驱动 IC 基本都是 IIC 接口,所以大框架是 IIC 设备驱动。 ② 通过中断引脚(INT)向 linux 内核报告触摸信息,需要使用 linux 中断驱动框架。中断坐标报告 完成服务函数。 ③ 触摸屏的坐标信息、屏幕按下和提升信息都属于 linux 的 input 因此,子系统向 linux 触摸屏上报内核 必须使用坐标信息 input 子系统。只是,我们必须遵循 linux 报告坐标信息。

input 多点电容触摸协议在子系统下

通过一系列的触摸点信息 ABS_MT 报告事件(有些信息也叫消息) linux 内核,只有 ABS_MT 该事件用于多点触摸。

MT 协议分为两种类型,TypeA 和 TypeB,这两种类型的区别如下: TypeA:适用于无法区分或跟踪触摸点的设备,报告原始数据在实际使用中很少! Type B:适用于具有硬件跟踪和区分触摸点的触摸设备。这类设备是通过 slot 更新触摸点的信

 #define ABS_MT_POSITION_X 0x35   #define ABS_MT_POSITION_Y 0x36

息,FT5426 属于这类,一般多点电容触摸屏 IC 都有这种能力。

ABS_MT_POSITION_X 和 ABS_MT_POSITION_Y 用于报告触摸点 (X,Y) 坐标信息

对于 Type B 类型设备在报告触摸点信息时需要通过 input_mt_slot()函数区分是哪个触摸点, input_mt_slot()函数原型如下: void input_mt_slot(struct input_dev *dev, int slot)

这个函数有两个参数,第一个参数是 input_dev 设备,第二个参数 slot 用于指定当前报告的触摸点信息。input_mt_slot()函数会触发 ABS_MT_SLOT 事件将告诉接收者目前正在更新哪个触摸点(slot)的数据。

多点电容触摸驱动框架

① 多点电容接触芯片接口一般为 I2C 因此,驱动主框架必须是接口 I2C。 ② 当我们用手点击屏幕时,首先屏幕会被触摸中断,然后我们将在中断服务函数中开始中断以下内容,因为我们必须做的事情非常耗时,所以我们必须在中断以下内容中做这些事情 。linux 里面一般都是通过中断来上报触摸点坐标信息,因此需要用到中断框架。所以我们必须使用中断下文,我们之前谈到了两种方法来实现中断下文,第一种是 tasklet,第二个是工作队列。这里应该用哪一个?因为我们在用i2c_transfer 读写时可能会有休眠,所以要用工作队列。 ③ 多点电容触摸属于 input 因此,子系统也需要使用 input 子系统框架。 ④ 使用中断下文 i2c 通过输入子系统读取数据并报告数据。

标签: y系列电容6410电容屏驱动20008电容触摸屏

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台