一.ADC及触摸屏接口图
S3C2440有8路的ADC通道其中触摸屏控制器接口XP,XM,YP,YM与四路ADC通道复用四个IO引脚。从原理图看出8路ADC只有一个A/D转换器,通过一个8选1开关MUX来选通哪一路A/D通道进行转换。触摸屏控制会产生两个中断,一个触摸屏中断INT_TC,一个ADC_转换完成中断INT_ADC。ADC需要时钟才能工作,因为它需要设置采样率。
触摸屏工作流程:
1、选择模式
2、设置触摸屏接口到等待接口状态
3、如果中断发生,激活转换模式
4、获取坐标后,返回等待中断状态
(INT_TC中断用于按下或弹起触摸屏)
(INT_ADC用于坐标转换完成)
二.AD转换时间
当全局时钟频率为50MHz和预分频值为49时,总共10位转换时间如下:
AD转换器频率=50MHz/(49+10=1MHz
转换时间=1/(1MHz/5cycles)=1/200KHz=5us
三.ADC及触摸屏接口特殊寄存器
(1)控制寄存器(ADCCON)
(2)触摸屏控制寄存器(ADCTSC)
(3)开始延时寄存器(ADCDLY)
(4)转换数据寄存器0(ADCDAT0)
(5)转换数据寄存器1(ADCDATA1)
(6)触摸屏指针上下中断检测寄存器(ADCUPDN)
四.触摸屏接口模式:
(1)正常转换模式:通过设置ADCCON来初始化对ADCDATA0的读写操作。
(2)分离XY坐标转换模式:X坐标模式写X坐标转换数据到ADCDAT0,触摸屏接口产生中断源到中断控制器.Y坐标模式写Y坐标转换数据到ADCDAT1,触摸屏接口产生中断源到中断控制器
(3)自动XY坐标转换模式:触摸屏控制器连续转换触摸X坐标和Y坐标.在触摸控制器写X测量数据到ADCDAT0且写Y测量数据到ADCDAT1后,触摸屏接口产生中断源到自动转换模式下的中断控制器.
(4)等待中断模式:当光标按下产生中断信号(INT_TC)。触摸屏控制器的等待中断模式必须设定为触摸屏接口中触点的状态(XP,XM,YP,YM)
触摸屏可以看成是输入设备,工作原理是底层在触摸动作发送时产生一个中断,然后CPU通过外部存储器总线读取坐标,放入一个缓冲区,字符设备驱动管理该缓冲区,而驱动的read()接口让用户可以读取坐标.
Input子系统处理输入事务,任何输入设备的驱动程序都可以通过Input输入子系统提供的接口注册到内核,利用子系统提供的功能来与用户空间交互。输入设备一般包括键盘,鼠标,触摸屏等,在内核中都是以输入设备出现的。下面分析input输入子系统的结构,以及功能实现。
一. Input子系统结构与功能实现
1. Input子系统是分层结构的,总共分为三层: 硬件驱动层,子系统核心层,事件处理层。
(1)其中硬件驱动层负责操作具体的硬件设备,这层的代码是针对具体的驱动程序的,需要驱动程序的作者来编写。
(2)子系统核心层是链接其他两个层之间的纽带与桥梁,向下提供驱动层的接口,向上提供事件处理层的接口。
(3)事件处理层负责与用户程序打交道,将硬件驱动层传来的事件报告给用户程序。
2. 各层之间通信的基本单位就是事件,任何一个输入设备的动作都可以抽象成一种事件,如键盘的按下,触摸屏的按下,鼠标的移动等。事件有三种属性:类型(type),编码(code),值(value),Input子系统支持的所有事件都定义在input.h中,包括所有支持的类型,所属类型支持的编码等。事件传送的方向是 硬件驱动层-->子系统核心-->事件处理层-->用户空间
3.输入子系统设备驱动层实现原理:
在Linux中,Input设备用input_dev结构体描述,定义在input.h中。设备的驱动只需按照如下步骤就可实现了。
①、在驱动模块加载函数中设置Input设备支持input子系统的哪些事件;
②、将Input设备注册到input子系统中;
③、在Input设备发生输入操作时(如:键盘被按下/抬起、触摸屏被触摸/抬起/移动、鼠标被移动/单击/抬起时等),提交所发生的事件及对应的键值/坐标等状态。
Linux中输入设备的事件类型有(这里只列出了常用的一些,更多请看linux/input.h中):
4. 以触摸屏为例说明输入子系统的工作流程:
注:s3c2440的触摸屏驱动所用驱动层对应的模块文件为:s3c2410_ts.c,事件处理层对应的模块文件为 evdev.c
(1)s3c2410_ts模块初始化函数中将触摸屏注册到了输入子系统中,于此同时,注册函数在事件处理层链表中寻找事件处理器,这里找到的是evdev,并且将驱动与事件处理器挂载。并且在/dev/input中生成设备文件event0,以后我们访问这个文件就会找的我们的触摸屏驱动程序。
(2)应用程序打开设备文件/dev/input/event0,读取设备文件,调用evdev模块中read,如果没有事件进程就会睡眠。
(3)当触摸屏按下,驱动层通过子系统核心将事件(就是X,Y坐标),传给事件处理层也就是evdev,evdev唤醒睡眠的进程,将事件传给进程处理。
触摸屏代码分析
在arch/arm/plat-s3c24xx/devs.c定义了触摸屏的资源和platform_device结构体
static struct resource s3c_ts_resource[] = {
[0] = {
.start
文章浏览阅读4.9k次,点赞2次,收藏3次。博主最近想用小程序画几个页面,于是想试试WeUI的样式。但是没找到WeUI的文档,只找到了在线的实例演示。还有的例子是在div上显示的,当时比较疑惑。后来发现,可能是公众号的页面。实例演示的链接:传送门其实这些实例的代码我们在github下载WeUI的时候已经clone到本地了。在这个位置:example文件夹存放了实例的源码,你可以参考这个来使用WeUI,还是很有意思的。不过不要忘记引..._weui在线演示
文章浏览阅读2.2k次。74HC138 三八译码器的应用三八译码器,就是把 3 种输入状态翻译成 8 种输出状态。从图所能看出来的74HC138 有 1~6 一共是 6 个输入引脚,但是其中 4、5\6 这三个引脚是使能引脚。使能引脚和我们前边讲 74HC245 的 OE 引脚是一样的,这三个引脚如果不符合规定的输入要求,Y0 到 Y7 不管你输入的 1、2、3 引脚是什么电平状态,总是高电平。_74h138
文章浏览阅读1.3k次。使用 webpack 打包 ts 代码_使用webpack打包工具,完成项目project的打包,该项目中含有index.ts文件,index.htm
文章浏览阅读143次。em和rem都是相对单位,由浏览器转换为像素值,具体取决于设计中的字体大小设置。1em或者1rem会被浏览器解析成从16px到160px或者其他任意值。em和rem单位之间的区别是浏览器根据谁来转化成px值的。1.emem是相对于被设置元素的font-size的倍数的单位,如图:class sixteen的font-size为16px,则padding:1em..._10em和10rem单位区别
文章浏览阅读1.9k次。大3下学期,是时候考虑暑期实习的问题了。对于IT男来说,进BAT实习是梦寐以求的。 我们学院的传统是能自己找到暑期实习,就能免去暑假在9#的10天强制性实习。 以前的学长学姐,有去百度,去哪网实习的。我也从3月份就开始,跟着实验室的一群哥们找实习,有内推的机会就好好准备面试。正文从这里开始 !-) 4月份初,参加鹅厂的在线笔试,题目大多是设计网络、数据结构和系统等_腾讯产品暑期实习面试是当天面试完还是面几天
文章浏览阅读1.1k次,点赞11次,收藏41次。计算机英语词汇CPU(Center Processor Unit)中央处理单元 mainboard主板 RAM(random access memory)随机存储器(内存) ROM(Read Only Memory)只读存储器 Floppy Disk软盘 Hard Disk硬盘 CD-ROM光盘驱动器(光驱) moni_pressesctocontinue怎么解决
文章浏览阅读132次。本文实例讲述了jQuery层次选择器用法。分享给大家供大家参考,具体如下:/p>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">2-5$(document).ready(function(){//选择 body内的所有div元素.$('#btn1').click(function(){$('body div').css..._(使用 jquery 的层次选择器回答)(1)选取 class 为 two 的 div 以及所有的
文章浏览阅读463次。Guice是一个轻量级的Java依赖注入(DI)框架。使用依赖注入有很多优点,但是手动操作常常会导致编写大量样板代码。Guice是一个框架,用于编写使用依赖注入的代码,而不需要编写大量样板代码,有关动机的更多细节,请参阅本页面。简单地说,Guice减少了对工厂的需求和Java代码中new的使用。把Guice的@Inject看作是新的。在某些情况下,您仍然需要编写工厂,但是您的代码不会直接依赖于..._guice hellow world
文章浏览阅读3.4k次。1. I don't want to have the listening class, so I put the big earphone while the volume is zero; I have no desire to have the oral English class, so I must be the one who doesn't preview the task; I c..._pe老师
文章浏览阅读1k次。一、pom.xml内容:<!--=====依赖swagger2 zhongzk 2019.7.7 --><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version&..._java swagger 左右布局
文章浏览阅读294次。// 解析传递过来的json字符串JsonParser parser = new JsonParser();JsonObject jsonObj = parser.parse(strJson).getAsJsonObject(); Map<String, Object> map = new HashMap<String, Object&..._gson 解析字符串
文章浏览阅读3.6k次,点赞2次,收藏7次。Extinguished philosophies lie about the cradle of every science as the strangled snakes beside that of Hercules. - adapted from T. H. Huxley WHAT IS A_strangled snakes beside that of hercules翻译