android底层驱动学习之focaltech触屏实例理解

android底层驱动学习之focaltech触屏实例理解

 

         这个星期接触了具体的驱动实例—–focaltech公司的触控IC。下面总结下我个人对于触屏驱动的理解,分为两个方面:硬件方面和软件驱动方面

 

硬件方面:

 

1.       简单介绍下触摸屏的发展

随着计算机技术的普及,在20世纪90年代初,出现了一种新的人机交互作用技术–触摸屏技术。利用这种技术使用者只要用手指轻轻地碰计算机显示屏上的图符或文字就能实现对主机操作,这样摆脱了键盘和鼠标操作,使人机交互更为直截了当。因此,触摸屏技术已成为当前最简便的人机交流的输入设备。

 

2.       那触摸屏都由什么组成/strong>

对于我们开发人员来说,触摸屏其实是由显示屏+触控IC,平常的驱动开发指的是对针对触控IC,下面以一个简单的图来模拟下我个人对触摸屏的理解:

 

 

4.       那触控IC是如何把数据传给CPU的呢/strong>

目前电容触控IC用到的基本通讯接口有三种:IIC、UART、SPI,目前一般只用IIC接口,主要的接口引脚有:VDD、GND、SCL、SDA、INT、RESET、VDDIO。

定义

描述

VDD

触控IC电源端口,为TP供电,一般为3.3V/2.8V

GND

触控IC的地线

SCL

I2C通讯接口时钟线,控制I2C总线传输速率

SDA

I2C通讯接口数据线,传输主机与TP之间的数据

INT

触控IC中断信 接口,由触控IC端发出,用于通知主机读取坐标数据,一般为低电平触发

RESET

触控IC的复位信 ,由有主机端发出,一般为低电平时触控IC会复位

VDDIO

触控IC的IO口电压,一般为2.8V/1.8V,须低于VDD

 

还是比较用图来表达意思,个人比较喜欢这种方式,哈哈,下面是CPU与触控IC的电器连接图,注意箭头的方向

 

        放大图一                              放大图二

在放大图一中,我们可以先来看下中断的产生过程,流程:触碰显示屏–à位置信息传递给触控IC–à中断引脚TS_INT_N使能—-执行软件中的中断服务程序

同理放大图二则是其他引脚的硬件连接图。其实对于触屏驱动,只需关心TS_INT_N中断接口,至于SDA、SCL这些是控制数据传输的,是显示驱动做的事,这块在后面可以慢慢了解,应该还是很有意思的。

 

以上就是这个星期对触屏原理及硬件连接的理解了。

 

 

 

 

 

 

 

 

 

 

 

 

软件驱动方面:

 

1.      了解了触屏硬件的实现,那下面是不是要来看下软件驱动方面的实现/strong>

a)        注册初始化触控IC的I2C接口

b)        建立触控IC软件结构体并初始化内部参数(name、fw-name、irq-gpio、reset-gpio、上电,让触屏工作起来等)

c)        设置TP INT引脚,注册中断,装载中断向量表,创建中断服务程序

d)        创建各种debug方式(DEBUGFS、SYSFS等)

e)        等待中断信息,读取手指触摸坐标数据(通过I2C获取-接口是fts_I2C_read),并上 给系统

 

 

参数名称

参数含义

fts_Upgrade_Info   info

更新所需要的信息如CHIP_ID等

char   *name

触屏的名称如fts_ts

char  *fw_name

软件版本名称

u32   irq_gpio

对应中断口,初始化时就设好

u32   reset_gpio

对应Reset口,初始化时会去设置

u32   family_id

 

u32   x_max, y_max, x_min, y_min

显示的坐标范围

u32   panel_minx, panel_miny, panel_maxx, panel_maxy

显示屏幕的坐标范围

u32   group_id

 

u32   hard_rst_dly, soft_rst_dly

Reset时硬件和软件的所需的delay值

u32   num_max_touches

触屏支持的最大触摸点数

u32   button_map[4]

 

u8    num_button

按键的数量

bool  fw_vkey_support

 

bool  no_force_update

 

bool  i2c_pull_up

 

bool  ignore_id_check

 

bool  psensor_support

 

int   (*power_init) (bool)

电源初始化函数

int   (*power_on) (bool)

控制电源开关函数

 

 

 

 

 

 

 

 

具体详细的请见下面:

       (一). focaltech_core.c文件,触屏模块初始化及注册I2C    driver。

 

(三)注册input设备模拟IO口

 

(五)定义reset为输出口、irq为输入口,建立软件变量与硬件的链接

 

(七)创建中断发生时需要report的触屏信息

 

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年11月18日
下一篇 2016年11月18日

相关推荐