文章分类 -  触摸屏驱动开发

Android 触摸屏(TP)问题现象分析和解决方法汇总
摘要:No.1现象描述:进入浏览器,网页放大和缩小效果差原因分析:由于TP抖动导致该问题。解决方法:有抖动导致放大缩小不稳定,需要开启防抖功能,在最后主动丢掉2~3个点。开启防抖会降低报点率,需要结合用户效果体验测试来决定防抖功能舍弃几个点。似断线。目前修改的方法为:在驱动中,对Y轴下边大于Y_MAX且小... 阅读全文

posted @ 2015-05-17 22:26 莫回头 阅读(1660) 评论(0) 推荐(0)

android 电容屏(一):电容屏基本原理篇
摘要:关键词:android 电容屏 tp ITO平台信息:内核:linux2.6/linux3.0系统:android/android4.0平台:S5PV310(samsung exynos 4210)作者:xubin341719(欢迎转载,请注明作者)android 电容屏(一):电容屏基本原理篇android 电容屏(二):驱动调试之基本概念篇android 电容屏(三):驱动调试之驱动程序分析篇一、电容屏工作原理 触摸屏的工作原理概括来说就是上报坐标值,X轴、Y轴的值。前面我们分析了电阻触摸屏,它是通过ADC来检测计算X、Y轴坐标值,下面我们分析一下电容触摸屏的工作原理,看它是如何去检测计算 阅读全文

posted @ 2014-01-18 16:05 莫回头 阅读(2019) 评论(0) 推荐(0)

Linux Input子系统第二篇之A/B(Slot)协议
摘要:这段时间一直在忙工作的事情,Input子系统的第二篇博客姗姗来迟了。 将A/B协议这部分单独拿出来说一方面是因为这部分内容是比较容易忽视的,周围大多数用到input子系统的开发人员也不甚理解;另一方面是由于这部分知识一旦扩展到TP(触摸屏Touch Panel)的多点触摸就要与Middleware/Framework一起结合起来看才能完全掌握,复杂性所在。这里的Middleware/Framework是针对android来说的,本人从事android这几个层次的工作,所以就从android的角度来讲讲这部分内容,其他系统虽然代码不同,但原理上是完全一样的。 B协议又称为slot协议,那么inp 阅读全文

posted @ 2013-09-27 18:09 莫回头 阅读(4983) 评论(0) 推荐(0)

和菜鸟一起学android4.0.3源码之鼠标光标绘制简略版 .
摘要:搞定了android4.0.3的触摸屏的适配后(其实只要驱动没有什么问题,加个配置文件就很容易搞定了),新的任务就下来了,就是要寻找android4.0.3中的鼠标是如何绘画的,哪里createSurface,哪里分配空间的。因为如果是软鼠标的话,在播放视频或者玩大型游戏的时候是很卡的,而走overlay,硬鼠标的话,就显得很灵敏了。艰巨的任务啊,看了我好久还是没有找到鼠标是在哪里绘制的。因为android2.3是在WindowManagerService里面new了一个surface,接着画了几条线而得到的,而android4.0.3中,找了n久还是没有发现,可恶的android4.0.3, 阅读全文

posted @ 2013-07-18 14:18 莫回头 阅读(668) 评论(0) 推荐(0)

和菜鸟一起学android4.0.3源码之touchscreen配置+调试记录 .
摘要:记得应该是上上周了,终于毕业了,离开了学校,就得面对现实的社会,以前学校实验室里,老师给了钥匙,那电脑随便用,那元器件随便玩,什么51单片机啊,PIC单片机啊,FPGA啊,arm11啊什么的。想着做什么就直接万用版+电烙铁什么的一起搞定。调试,写程序,焊板子都是自己一手操办啊,多么自由啊。到了公司,可不依你,对于上市公司来说,管理什么的总归还是有些规范化的。 对于嵌入式,虽然早有所耳闻,大三也玩过arm7,编了几个基于GUI的贪吃蛇啊,黑白棋啊,连连看啊什么的。自己也买来arm11,烧写linux系统,搭建环境,最终也成功完成了hello world驱动模块。待以后有时间再好好整理整理。废话. 阅读全文

posted @ 2013-07-18 14:15 莫回头 阅读(1312) 评论(0) 推荐(0)

Linux & Android 多点触摸协议
摘要:Android4.0多点触摸入门1 KERNEL 对于触摸屏的驱动我们简单的划分为两个主要的部分,一个是注册,另一个是上报。 1.1 注册 单点触摸信息是以ABS承载并按一定顺序发送,如BTN_TOUCH、ABS_X、ABS_Y、SYNC。而多点触摸信息则是以ABS_MT承载并按一定顺序发送,如ABS_MT_POSITION_X、ABS_MT_POSITION_Y,然后通过调用input_mt_sync()产生一个SYN_MT_REPORTevent来标记一个点的结束,告诉接收方接收当前手指的信息并准备接收其它手指的触控信息。最后调用input_sync()函数上报触摸信息开始动作... 阅读全文

posted @ 2013-07-15 09:57 莫回头 阅读(7920) 评论(0) 推荐(0)

Android 触摸屏(TP)问题现象分析和解决方法汇总 .
摘要:No.1现象描述:进入浏览器,网页放大和缩小效果差原因分析:由于TP抖动导致该问题。解决方法:有抖动导致放大缩小不稳定,需要开启防抖功能,在最后主动丢掉2~3个点。开启防抖会降低报点率,需要结合用户效果体验测试来决定防抖功能舍弃几个点。No.2现象描述:TP下边缘划线测试80%几率出现断线原因分析:由于LCD显示区域和TP贴合的问题引起的。解决方法:如果按键区与AA区是连成一块报坐标的,所以下边沿很容易划到AA区以外的值,该值在LCD是显示不出来 的,所以就类似断线。目前修改的方法为:在驱动中,对Y轴下边大于Y_MAX且小于Key_Y值时,则统一上 报为Y_MAX。No.3现象描述:三个点同时 阅读全文

posted @ 2013-07-01 20:32 莫回头 阅读(6166) 评论(0) 推荐(0)

TFT模块闪屏(Flicker)现象分析
摘要:分类: Android Driver 2013-01-14 22:52 412人阅读 评论(0) 收藏 举报androidAndroidANDROIDFlickerLCDlcdTFT闪屏一、FLICKER FLICKER俗称抬头纹,是我们遇到较多的一种闪屏。理想状态下Vcom的中心值与Vpixel的中心值一致且VpixelH和VpixelL的差值与VcomH和VcomL的差值一致,在这样的情况下不会出现FLICKER现象。当这两个电压的中心值或差值出现偏差时,就会出现FLICKER现象。对于FLICKER,如果采用line inversion,则现象如下:拿一个显示模块上下晃动,出现很多横条纹 阅读全文

posted @ 2013-07-01 20:31 莫回头 阅读(2472) 评论(0) 推荐(0)

TFT LCD的几个概念 CLK HSNYC VSNYC等
摘要:关于TFT LCD 操作的几个重要概念:·点时钟(CLK 信号)CLK 是整个LCD 工作的基础。它提供LCD工作的基本脉冲。基本的算法为:CLK = (HCLK)/((CLKDIV+1)*2)其中 HCLK 是系统时钟/2,CLKDIV是在LCD 控制寄存器中的一个可编程数值。·水平同步(HSNYC信号)该信号提供水平方向的图像同步。该信号出错会导致输出水平方向的问题。·水平前廊(HBPD信号)该信号协助提供水平方向的图像同步。该信号出错会导致输出边界和水平方向的天下大小不正确。在波形上它位于水平同步前面。·水平后廊(HBPD信号)该信号协助提供水平方 阅读全文

posted @ 2013-06-20 22:25 莫回头 阅读(1517) 评论(0) 推荐(0)

linux开机logo 和 android开机logo 的修改(修改ANDROID 开机滚动图片)
摘要:一.设置LINUX内核启动LOGO 1、让内核支持启动LOGO 在内核目录中 make menuconfig Device Drivers ----> Graphics support ----> 选中 Bootup logo ----> Standard 224-color Linux logo 2、制作开机logo的图片 将要当作开机LOGO的图片按照你屏幕的大小进行裁减,并将其保存为bmp格式 或 png格式; 例如linuxlogo.bmp 或 linuxlogo.png 在linux下输入以下命令(for bmp): #bmptoppm linuxlogo.bmp 阅读全文

posted @ 2013-03-31 16:56 莫回头 阅读(543) 评论(0) 推荐(0)

android 开机动画(boot animation)的制作
摘要:Android开机动画有两种修改方法,android 2.0及之后,使用bootanimation程序显示开机画面,如需修改开机画面,不用修改代码,只需按格式要求做bootanimation.zip包,放在系统的/system/media目录中,或/data/local目录中即可,两个目录下都存在时,优先使用/data/local下的。android 2.0之前,则需要修改源码。 开机画面主要是由一个zip格式的压缩包bootanimation.zip组成,压缩包里面包含数张png格式的图片,还有一个desc.txt的文本文档,开机时按desc.txt里面的指令,屏幕上会按文件名称顺序连续的播 阅读全文

posted @ 2013-01-16 22:34 莫回头 阅读(4871) 评论(0) 推荐(0)

让Android设备永不休眠
摘要:触摸屏已经可操作,但是过半小时后系统会去休眠,现在直接改为永不休眠。借鉴以下文章:最近在做一个Android系统的车载终端,在汽车上应该不会休眠,所以设置成永不休眠,没有滑动锁。1. 修改default值,不自动休眠 /frameworks/base/packages/SettingsProvider/res/values/defaults.xml 修改def_screen_off_timeout为-12. 锁屏界面永远不出现 /frameworks/base/policy/src/com/android/internal/policy/impl/KeyguardViewMediat... 阅读全文

posted @ 2012-12-26 21:42 莫回头 阅读(1014) 评论(0) 推荐(0)

对migor_ts.c的修改 .
摘要:本周二,完成了 通过migor_ts.c (经过修改)创建的驱动程序来将C48的报点数据传输到QT界面上,但是总是分辨率不匹配,不知道是不是由于是使用input_report_abs这个函数对QT进行报点所造成的,是不是必须像电阻屏一样进行开机校准,在电阻屏驱动s3c2410_ts.c文件中看到其X,Y设置的限制坐标为1024*1024,另外2440的数据手册上写出了X和Y方向的坐标输出最大也都是1024。将C48配置成1024*1024后,还是不行。将I2C传输数据到QT的驱动过程记录如下:使用的驱动程序为migor_ts.c,结合i2c_s3c2410.c文件添加i2c驱动static s 阅读全文

posted @ 2012-12-22 10:22 莫回头 阅读(318) 评论(0) 推荐(0)

input 系统接口及分析 .
摘要:接口前面说了,linux内核input子系统中已经实现了input设备的接口函数,这使得我们工作量大大的减轻了。我们以akm8973芯片(用于智能手机指南针的主功能芯片,实际上就一电子罗盘)为例,来简单看一下写一个input设备我们需要做的工作。首先,在驱动模块加载函数中申请一个input设备,并告知input子系统它支持哪些事件,如下所示:akm->input_dev = input_allocate_device();set_bit(EV_ABS, akm->input_dev->evbit);input_set_abs_params(akm->input_dev, 阅读全文

posted @ 2012-12-22 09:42 莫回头 阅读(1389) 评论(0) 推荐(0)

Linux输入子系统 .
摘要:linux系统提供了input子系统,按键、触摸屏、键盘、鼠标等输入都可以利用input接口函数来实现设备驱动,最重要的数据结构是struct input_dev 在Linux 内核中,input设备用input_dev 结构 体描述,使用input子系统实现输入设备驱动的时候,驱动的核心工作是向系统报告按键、触摸屏、键盘、鼠标等输入事件(event,通过 input_event结构 体描述), 通过input子系统,具体的输入设备驱动只需要完成如下工作:1,在模块加载函数中告知input子系统它可以报告的事件设备驱动通过set_bit()告诉input子系统它支持哪些事件,如下所示:set. 阅读全文

posted @ 2012-12-21 17:50 莫回头 阅读(883) 评论(0) 推荐(0)

Mstar虚拟按键触摸屏驱动(芯片msg2133,按键使用android虚拟按键实现,特定报点,识别为按键)
摘要:#ifndef __LINUX_MSTAR_MSG2133_TS_H__#define __LINUX_MSTAR_MSG2133_TS_H__//#define TS_DEBUG_MSG 1#define VIRTUAL_KEYS1//是否有按键#define MSG2133_UPDATE1//T卡升级功能#define TS_WIDTH_MAX480//LCD分辨率#defineTS_HEIGHT_MAX800//LCD分辨率 //使用虚拟按键,也不需要把这个分辨率提高到按键区域。 #defineTS_ENPIN_LEVEL0//ENPIN(ResetPin)电压,如果TP上有反相MOS管 阅读全文

posted @ 2012-12-21 17:29 莫回头 阅读(1306) 评论(0) 推荐(0)

深入谈谈TFT LCD的使用心得 .
摘要:最近一段时间工作上一直在使用TFT LCD,主要是3、5寸LCD,以SAMSUNG的LTV350QV及其一些台湾的兼容产品为主。工作的内容就是把这些屏在我们的产品上应用起来,经过这一段时间后,发觉对TFT LCD的内部结构还是不怎么清楚,所以最近几天花了一些时间了解TFT LCD的结构以及工作原理,并整理下来加深自己的理解以及提供大家参考,这只是我自己的一些理解,错误的地方请大家多指正。首先,我们了解一些TFT LCD的结构,如下图所示,主要由偏振片、虑色器基板、液晶、TFT基板、片振片、背光源组成。在虑色器基板和TFT基板封入扭曲向列型液晶(TN),构成液晶盒,虑色器基板上制作有透明的公共电 阅读全文

posted @ 2012-12-21 16:18 莫回头 阅读(8381) 评论(1) 推荐(0)

I2C设备驱动编写,struct i2c_device_id,struct i2c_driver,i2c_add_driver,i2c_register_board_info
摘要:我的理念:简单实用即可,不要搞一堆源码出来,结果让人看了以后还不知道怎么用,看我的:1、在arch/arm/mach-xxx/ 自己的平台文件里添加i2c信息,美其名曰:i2c_board_info例如:static struct i2c_board_info __initdata xxxi2c_board_info[] = { { I2C_BOARD_INFO("abcd1", 0x20), /* 字符串要与后面的匹配,0x20是从设备地址 */ .platform_data = 0, }, { I2C_BOARD_INFO("abcd2", 0x21 阅读全文

posted @ 2012-12-11 07:03 莫回头 阅读(5431) 评论(0) 推荐(0)

移植详解(七、LCD背光驱动移植)
摘要:开发板中,LCD背光是通过 CPU的 LCD_PWR引脚来控制的,当 LCD_PWR 输出为高电平“1”时,将打开背光;当输出为低电平“0”时,将关闭背光(注意:这里只是打开和关闭背光,而并没有背光亮度的调节作用)。 我们需要增加一个简单的背光驱动,以便能够通过软件便可简单的控制背光的开关。我们要达到的目的是:在命令终端通过向背光设备发送偶数比如“0”便可关闭背光,发送奇数比如“1”便可打开背光,这样使用起来就方便多了,而不需要专门的应用程序控制它:提示:LCD背光设备文件:/dev/backlight 在命令行种输入:echo 0 > /dev/backlight 可以关闭LCD背光。 阅读全文

posted @ 2012-12-04 19:02 莫回头 阅读(360) 评论(0) 推荐(0)

移植详解(TFT液晶屏驱动移植)
摘要:1、打开 arch/arm/mach-s3c2440/mach-smdk2440.c,先删除之前的 LCD 设备平台代码/* LCD driver info */ static struct s3c2410fb_display smdk2440_lcd_cfg __initdata = { ……}static struct s3c2410fb_mach_info smdk2440_fb_info __initdata = { ……} ----------------------------------------------------------------------------... 阅读全文

posted @ 2012-12-04 18:22 莫回头 阅读(1046) 评论(0) 推荐(0)