(1)电阻触摸屏。驱动一般分2种:一种是SoC内置触摸屏控制器,一种是外置的专门触摸屏控制芯片,通过I2C接口和SoC通信。
(2)电容触摸屏。驱动只有一种,外接专用的电容式触摸屏控制芯片,I2C接口和SoC通信。
(1)X210V3使用的触摸屏:ft5x06
(2)X210V3S使用的触摸屏:gslX6803
(1)input子系统相关知识
(2)中断上下半部
(3)I2C子系统
(4)触摸屏芯片本身知识
(1)源码获取
gsl_point_id 厂商提供的预先编译好部分代码
gslX680.c
gslX680.h
一般开发:源码是不编译进内核中的,而是编译成模块方便进行测试,随时修改代码。但这里是无法这样操作的,因为触摸屏厂商提供的代码是不完整的,有部分是提前编译好的,在编译链接的过程中会出现问题.
(2)源码加入内核中:kernel/drivers/input/touchscreen
(3)mach文件中添加board_info,从而生成一个struct i2c_client类型的变量可进行匹配(kernel/arch/arm/mach-s5pv210/mach-x210.c)
参考gslX680.c中的信息:
iic通信中,从地址取决于从设备,可通过从设备的芯片手册得到。查阅手册得到:
上述的这个移位操作在主机代码中操作了所以我们在从设备驱动代码使用 0x40 即可。
修改后的文件:
(1)定义一个宏名,譬如CONFIG_TOUCHSCREEN_GSLX680
(2)在代码中使用宏来条件编译
(3)在Makefile中使用宏来条件配置
文件末尾添加:
(4)在Kconfig项目中添加宏的配置项
文件末尾添加:
(5)make menuconfig并选择Y或者N
(6)make -j4进行编译,生成镜像后去烧录启动。
部分解析请查阅上篇文章:linux驱动之I2C子系统
驱动内基本不定义结构体变量,都是定义结构体指针,然后kzalloc()申请内存,避免栈溢出了
mt表示支持多点触摸
对于该部分代码具体操做设置请仔细阅读触摸屏读数据手册,但有些内容我们是无法探究清楚的,只有专业搞触摸屏驱动的那些原厂工程师清楚。
注:本资料大部分由朱老师物联网大讲堂课程笔记整理而来并且引用了部分他人博客的内容,如有侵权,联系删除!水平有限,如有错误,欢迎各位在评论区交流。
本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com
本文链接:http://www.ksxb.net/tnews/11777.html