触摸屏

触摸屏学习:利用状态机编程

爷,独闯天下 提交于 2019-12-05 06:39:32
  一。更高效的使用触摸屏   PENIRQ引脚在没有触摸时都是高电平,只要有触摸就是低电平,直到没有触摸。用中断检测PENIRQ引脚,当产生下降沿中断时就去读取坐标。但是触摸屏也会象按键一样发生抖动,会产生很多上升沿或下降沿,会引起误判。这里我们使用状态机的方式去处理,使用状态机还有一个好处就是可以很方便的去判断长按,短按,双击等状态。   当触摸屏有触点按下时,PENIRQ 引脚会输出低电平,直到没有触摸的时候,它才会输出高电平;而且 STM32 的中断只支持边沿触发(上升沿或下降沿),不支持电平触发,在触摸屏上存在类似机械按键的信号抖动,所以如果使用中断的方式来检测触摸状态并不适合,难以辨别触摸按下及释放的情况。   状态机编程是一种非常高效的编程方式,它非常适合应用在涉及状态转换的过程控制中,上述代码采用状态机的编程方式对触摸状态进行检测,主要涉及触摸的按下、消抖及释放这三种状态转换。在应用时,本函数需要在循环体里调用,或定时调用(如每隔 10ms调用一次)。      通过读取PENIRQ引脚,内部有三种状态,当触摸还没有被按下的时候的状态为:RELEASE状态,是高电平,被按下后PENIRQ引脚变成低电平,进入消抖状态,还要等待一段时间,也就是消抖的过程,当第一次变成低电平的时候记录一个标志i++,记录它变成低电平一次了,然后等待一下,过了一段时间再去检测

触摸屏驱动

自作多情 提交于 2019-12-04 18:43:22
硬件配置 硬件原理 ADC AND TOUCH SCREEN INTERFACE SPECIAL REGISTERS 以 d 3 作 刈 d 了 在砂量X.Y坐标的情况下,应该禁用上拉 程序框架 软件架构:输入子系统 优化措施 ①问题: ADC 转换出来的值变化太大,不稳定; 原因 1 :触摸屏被"触摸",触摸点电压值尚未稳定,已经被ADC转换成数字量; 改善 1 :设置 ADC 转换延时(reg:ADCDLY),把延时值设为最大; 原因 2 :假设在 ADC 转换结束之前,触摸屏已"触摸松开",那么转换出来的值将不正确; 改善 2 : ADC 转换完成,判断触摸屏状态,如果已经"松开",则认为转换无效,丢弃已转换数据; ②为了使 ADC 转换出来的数据稳定可靠,可增加软件滤波算法; 驱动程序 driver.c 1 /* 2 * 参考s3c2410_ts.c 3 */ 4 5 #include <linux/errno.h> 6 #include <linux/kernel.h> 7 #include <linux/module.h> 8 #include <linux/slab.h> 9 #include <linux/input.h> 10 #include <linux/init.h> 11 #include <linux/serio.h> 12 #include

Tslib配置文件ts.conf介绍

匿名 (未验证) 提交于 2019-12-02 23:57:01
Tslib 的配置文件ts.conf 是个十分重要的部分, module_raw input module pthres pmin=1 module variance delta=30 module dejitter delta=100 module linear 在ts.conf 中配置了需要加载的插件、插件加载顺序以及插件的一些约束参数,这些配置参数对触摸屏的触摸效果具有十分重要的影响。 其中:pthres 为Tslib 提供的触摸屏灵敏度门槛插件 默认参数为pmin=1;     variance 为Tslib提供的触摸屏滤波算法插件 默认参数为delta=30;     dejitter 为Tslib 提供的触摸屏去噪算法插件 默认参数为delta=100;    linear为Tslib 提供的触摸屏坐标变换插件。 由于各种因素的影响,在不同的硬件平台上,相关参数可能需要调整。以上参数的相互关系为:采样间隔越大,采样点越少,采样越失真,但因为信息量少,容易出现丢笔划等丢失信息情况,但表现出来的图形效果将会越好;去噪算法跟采样间隔应密切互动,采样间隔越大,去噪约束应越小,反之采样间隔越小,去噪约束应越大。去抖算法为相对独立的部分,去抖算法越复杂,带来的计算量将会变大,系统负载将会变重,但良好的去抖算法可以更好的去除抖动,在进行图形绘制时将会得到更好的效果;灵敏度和ts

Linux下触摸屏驱动程序分析

匿名 (未验证) 提交于 2019-12-02 21:59:42
本文以Linux3.5--Exynos4412平台,分析触摸屏驱动核心内容。Linux下触摸屏驱动(以ft5x06_ts为例)需要了解如下知识: 一、背景 》。为了解决这个问题,决定在发生I2C死锁时,断掉I2C触摸屏的电源,然后给它上电,使处理器和触摸屏之间的I2C通信恢复正常。 二、驱动程序的总体框架 i2c_register_board_info (1, smdk4x12_i2c_devs1,ARRAY_SIZE(smdk4x12_i2c_devs1)); [cpp] view plain copy "TINY4412" /* }; __mach_desc_##_type,类型为machine_desc结构体类型。 这个类型的变量放在内核代码段.arch.info.init中,在内核运行初期,被函数lookup_machine_type(汇编)取出,读取流程为: Start_kernel() -> setup_arch() -> setup_processor() -> lookup_machine_type() i2c_register_board_info函数 中会把 i2c_board_info 结构放入 __i2c_board_lis 链表,然后在i2c_scan_static_board_info函数中使用到__i2c_board_list链表,即调用 i2c

触摸屏驱动程序框架分析

耗尽温柔 提交于 2019-12-02 15:42:41
触摸屏驱动程序,用于人机交互lcd上的独立的一个屏,这里指的是电阻屏。下面来分析一下内核自带的触摸屏驱动框架,便于我们自已编写触摸屏驱动程序 触摸屏驱动使用的是Input_subsys系统。我们打开内核的s3c2410_ts.c触摸屏驱动来分析:下面来看一下流程是怎么样 从入口函数开始分析 static struct platform_driver s3c_ts_driver = { .driver = { .name = "samsung-ts", .owner = THIS_MODULE, #ifdef CONFIG_PM .pm = &s3c_ts_pmops, #endif }, .id_table = s3cts_driver_ids, .probe = s3c2410ts_probe, .remove = __devexit_p(s3c2410ts_remove), }; module_platform_driver(s3c_ts_driver); View Code 在这里没有发现所谓的入口函数 init 但我们看到了一条这样的定义 module_platform_driver(s3c_ts_driver); 我们搜索一个这个东西看看是什么, #define module_platform_driver(__platform_driver) \ module

笔记本触摸屏使用技巧

元气小坏坏 提交于 2019-12-02 10:53:49
# 使用那破小米笔记本那么久了,都没细看触摸屏技巧。现在总结一下: ## 1个手指技巧 - 常用的移动、点击技巧 ## 2个手指技巧 - 点击(如同鼠标右击) - 上下左右移动(就是屏幕中如果有如下图的状态栏即可操作) - 3个手指技巧 点击左右移动(任务窗口切换) 点击上移动(多桌面和任务窗口) 点击下移动(回到桌面) - 4个手指技巧 点击左右移动(桌面移动) 点击上下移动(与3个手指上下移动一样的功能。) 来源: https://blog.csdn.net/ljymoonlight/article/details/102754102

计算机概论速读问题

折月煮酒 提交于 2019-11-30 17:38:54
第一章:1. 网络连接的方式一共有几种?2计算技术的使用为什么可能会导致安全隐患的增加? 第二章:1.不同进制之间能随意转化吗?如果可以,该如何转化?2.为什么二进制是计算机硬件主要采用的运算系统? 第三章:1.什么情况下运用有损压缩?2为什么所有类型的数据都必须表现为二进制形式? 第四章:1.门的电路构造是什么?2.一个门可以接收输出多少信号? 第五章:1.触摸屏是如何知道触摸屏幕的位置的?2.为什么存储在ROM中的值不可更改? 第六章:1.伪代码和伪操作的区别是什么?累加器和一般的区别在什么地方? 第七章:1.如何提高算法编写正确率?2.三种复合数据结构机制是什么? 第八章:1.列表能是树吗?2.栈的作用是什么? 第九章:1.自项向下设计与面向世界设计的区别是什么?2.程序设计语言的范型除了命令示范型和声明式范型外还有没有其他范型? 第十章:1.逻辑地址和物理地址之间的区别和联系是什么?2.固定分区法和动态分区法分别在什么情况下使用? 第十一章:1.文本文件和二进制文件的区别是什么?2.顺序文件访问和直接文件访问各有什么好处? 第十二章:1.ER图中,关系连接线连接的是什么?2.电子商务在当今社会的角色是什么 ?在以后的角色会是什么? 第十三章:1.语义网中应该如何表示知识?2.数据库模式是什么意思? 第十四章:1.连续事件模拟和离散事件模拟的区别是什么?2

[翻译完成] 开源LCD触摸屏驱动

帅比萌擦擦* 提交于 2019-11-29 18:10:12
让树莓派支持 uPD161704A和XPT2046芯片的 240×320触摸屏驱动库 这个C库可以让你的树莓派支持µPD161704A和XPT2046芯片. µPD161704A是一个240 x 320像素LCD屏幕控制器 , XPT2046是搭配的触摸屏控制器. 这两个控制器常用于低价的触摸屏, 非常适合用于树莓派. 支持哪些LCD屏? 开发并测试了: WVshare: 2.2英寸-320×240LCD触摸屏 (大约14欧元) Aliexpress: 2.2英寸-320×240LCD触摸屏 (16欧元) 下载及编译 可在 这里 直接下载 在github仓库 linupi/RaspPiTouchLCD 这个库依赖 wiringPi (需求最低版本: Jan 2013). 可用下列命令来载入wiringPi, lib_PD161704A和lib_XPT2046库. 如果你还没安装过git: sudo apt-get install git-core 同样的, 如果你还没安装过wiringPi: git clone git://git.drogon.net/wiringPi cd wiringPi ./build cd .. 从git拉取源码并编译: git clone git://github.com/linupi/RaspPiTouchLCD.git cd

Tslib配置文件ts.conf介绍

无人久伴 提交于 2019-11-29 04:26:19
Tslib 的配置文件ts.conf 是个十分重要的部分, 在ts.conf 中配置了需要加载的插件、插件加载顺序以及插件的一些约束参数,这些配置参数对触摸屏的触摸效果具有十分重要的影响。 其中:pthres 为Tslib 提供的触摸屏灵敏度门槛插件 默认参数为pmin=1;     variance 为Tslib提供的触摸屏滤波算法插件 默认参数为delta=30;     dejitter 为Tslib 提供的触摸屏去噪算法插件 默认参数为delta=100;    linear为Tslib 提供的触摸屏坐标变换插件。 由于各种因素的影响,在不同的硬件平台上,相关参数可能需要调整。以上参数的相互关系为:采样间隔越大,采样点越少,采样越失真,但因为信息量少,容易出现丢笔划等丢失信息情况,但表现出来的图形效果将会越好;去噪算法跟采样间隔应密切互动,采样间隔越大,去噪约束应越小,反之采样间隔越小,去噪约束应越大。去抖算法为相对独立的部分,去抖算法越复杂,带来的计算量将会变大,系统负载将会变重,但良好的去抖算法可以更好的去除抖动,在进行图形绘制时将会得到更好的效果;灵敏度和ts 门槛值为触摸屏的灵敏指标,一般不需要进行变动,参考参考值即 原文: https://www.cnblogs.com/sky-heaven/p/5121083.html 来源: https://www