Linux应用开发(十三)——ADC和触摸屏接口
文章目录前言一、ADC和触摸屏硬件介绍及使用S3C2410 ADC和触摸屏接口概述ADC和触摸屏接口结构图S3C2410 ADC接口和使用方法触摸屏原理及接口电阻触摸屏原理S3C2410触摸屏接口二、ADC和触摸屏操作实例1.硬件设计程序设计总结前言了解S3C2410ADC和触摸屏的结构了解电阻触摸屏的工作原理和等效电路了解S3C2410触摸屏控制器的多种工作模式掌握S3C2410ADC和触摸屏的
文章目录
前言
- 了解S3C2410ADC和触摸屏的结构
- 了解电阻触摸屏的工作原理和等效电路
- 了解S3C2410触摸屏控制器的多种工作模式
- 掌握S3C2410ADC和触摸屏的编程方法
一、ADC和触摸屏硬件介绍及使用
S3C2410 ADC和触摸屏接口概述
S3C2410的CMOS模数转换器(ADC,Analog to Digital Converter)可以接收8个通道的模拟信号输入,并将它们转换为10位的二进制数据。在2.5MHz的A/D转换时钟下,最大的转化速率可达500KSPS(SPS:每秒采样次数)。
S3C2410/S3C2440都提供触摸屏的接口,不过它们有所不同。S3C2410的触摸屏接口向外提供4个控制信号引脚(nYPON,YMON,nXPON,XMON)和2个模拟信号输入引脚(AIN[7],AIN[5]),这6个引脚通过4个晶体管与触摸屏的4个引脚相连。而S3C2440提供了与触摸屏直接相连的4个引脚,不需要外接晶体管。
S3C2410 ADC和触摸屏接口有如下特征
- 分辨率:10位
- 微分线性度误差:±1.0LSB
- 积分线性度误差:±2.0LSB
- 最大转换速率:500KSPS
- 低功耗
- 供电电压:3.3V
- 输出模拟电压范围:0~3.3V
- 片上采样保持功能(On-chip sample-and-hold function).
- 普通转换模式
- 分离的x/y轴坐标转换模式
- 自动(连续)x/y轴坐标转换模式
- 等待中断模式
ADC和触摸屏接口结构图
从上图可以分析,ADC和触摸屏接口中只有一个A/D转换器,可以通过设置寄存器来选择对那路模拟信号进行采样。图中有两个中断信号:INT_ADC,INT_TC,前者表示A/D转换器已经转换完毕,后者表示触摸屏被按下了。
对于S3C2410,在使用触摸屏时,AIN[7]和AIN[5]被用来测量XP,YP的电平。只剩下AIN[6],AIN[4:0]工6个引脚用于一般得ADC输入。对于S3C2440,在使用触摸屏时,引脚XP,YP,XM,YM被用于和触摸屏直接相连,只剩下AIN[3:0]共4个引脚用于一般得ADC输入;当不使用触摸屏时,XP,XM,YP,YM这4个引脚也可以用于一般ADC输入。
S3C2410与触摸屏得连接比S3C2440复杂,需要增加几个外接晶体管,如下
S3C2410 ADC接口和使用方法
ADC的启动方式有两种:手工启动,读结构时就自动地启动下一次转换。也有两种方法获知当前转换是否已经结束:查询状态位,转换结束时发生中断。
ADC地操作只涉及3个寄存器:ADCCON,ADCTSC,ADCDAT0。下面介绍他们的用法,关于触摸屏的数据位后面的章节讲述
ADC的使用分4个步骤。
- 设置ADCCON寄存器,选择输入信号通道,设置A/D转换器的时钟。使能A/D转换器时钟的预分频功能。
- 设置ADCTSC寄存器,使用设为普通转换模式,不能使用触摸屏功能。ADCTSC寄存器多用于触摸屏,对于普通的ADC,使用他的默认值即可,或设置其位[2]为0.ADCTSC寄存器格式下面进行讲述
- 设置ADCCON寄存器,启动A/D转换。如果设置READ_START位,则读转换数据(读ADCDAT0寄存器)时即启动下一次转换;否则,可以通过设置ENABLE_START位来启动A/D转换。
- 转换结束时,读取ADCDAT0寄存器来获得数值。如果使用查询的方式,则可以不断读取ADCCON寄存器的ECFLG位来确定转换是否结束。否则可以使用INT_ADC中断,发生INT_ADC中断时表示转换结束。
触摸屏原理及接口
电阻触摸屏原理
触摸屏已经在现实生活中大量使用,比如银行的自动存/取款机等。触摸屏的种类有很多,比如超声波触摸屏,红外触摸屏,电容触摸屏,电阻触摸屏等。电阻触摸屏由于造价低廉,在电气上可以直接接入用户的系统中而得到大量使用。电阻触摸屏有几种类型,比如“四线”,“八线”线越多,精度也就越高,温度偏移也越少,但基本的操作都是一样的。它本质上是一个电阻分压器,将矩形区域中触摸点(X,Y)的物理位置转换为代表x坐标和y坐标的电压。
S3C2410的触摸屏接口可以驱动四线电阻触摸屏,四线电阻触摸屏的等效电路如下所示
图中粗黑线表示相互绝缘的两层导电层,当按压时,它们在触点处相连;不同的触点在x,y方向上的分压值不一样,将这两个电压值经过A/D转换后即可得到x,y坐标。
S4,S5闭合,S1,S2,S3断开,即YM接地,XP上拉,XP作为模拟输入(对CPU而言),YP作为模拟输入(对CPU而言),XM高阻。
平时触摸屏没有被按下时,由于上拉电阻的关系,Y_ADC为高电平;当x轴和y轴受挤压而接触导通后,Y_ADC的电压由于接触导通后,Y_ADC的电压由于连通到y轴接地而变为低电平,此低电平可作为中断触发信号来通知CPU发生“Pen Down”事件,在S3C2410中,称为等待中断模式。
采样X_ADC电压,得到x坐标,等效电路如下:
S1,S3闭合,S2,S4,S5断开,即XP接上电源、XM接地、YP作为模拟输入(对CPU而言)、YM高阻,XP禁止上拉。这时,YP即X_ADC就是x轴的分压点,进行A/D转换后就得到x坐标
采样Y_ADC电压,得到y坐标,等效电路如上图
S2,S4闭合,S1,S3,S5断开,即YP接上电源,YM接地,XP作为模拟信号输入,XM高阻,XP禁止上拉。这时,XP即Y_ADC就是y轴的分压点,进行A/D转换后就得到y坐标。
S3C2410触摸屏接口
与上面描述的触摸屏工作过程3个步骤对应,触摸屏控制器也有4个工作模式。
- 等待中断模式
设置ADCTSC寄存器为0xD3即可令触摸屏控制器处于这种模式。这时,它在等待触摸屏被按下。当触摸屏被按下时,触摸屏控制器将发出INT_TC中断信号,这时触摸屏控制器要转入以下两种工作模式中的一种,以读取x,y坐标。
对于S3C2410,当触摸屏被按下(Pen DOWN)或松开(Pen Up)时,都产生INT_TC中断信号。
对于S3C2440,可以设置ADCTSC寄存器的位[8]为0或1时,表示等待Pen Down中断或Pen Up中断。 - 分离的x/y轴坐标转换模式
这分别对应上述触摸屏工作过程的第2,3步骤。设置ADCTSC寄存器为0x69进入x轴坐标转换模式,x坐标值转换完毕后被写入ADCDAT0,然后发出INT_ADC中断;相似地,设置ADCTSC寄存器为0x9A进入y轴坐标转换模式,y坐标值转换完毕后被写入ADCDAT1,然后发出INT_ADC中断。 - 自动(连续)x/y轴坐标转换模式
上述触摸屏工作过程的第2,3步骤可以合成一个步骤,设置ADCTSC寄存器为0x0C,进入自动(连续)x/y轴坐标转换模式,触摸屏控制器就会自动转换接触点x,y坐标值,并分别写入ADCDAT0,ADCDAT1寄存器中,然后发出INT_ADC中断。 - 普通转换模式
不使用触摸屏时,触摸屏控制器处于这种模式。在这种模式下,可以通过设置ADCCON寄存器启动普通A/D转换,转换完成时数据被写入ADCDAT0寄存器中
ADCTSC寄存器被用来选择触摸屏的工作模式,格式如下
对于S3C2410,当触摸屏控制处于等待中断模式时,触摸屏被按下时可以不断发出INT_TC中断信号以便进入自动连续x/y轴坐标转换模式转换x,y坐标。发出中断信号的间隔可以通过ADCDLY寄存器来设置
对于S3C2440,当CPU处于休眠模式时,触摸屏被按下时可以不断发出INT_TC中断信号以唤醒CPU。发出中断信号的间隔可以通过ADCDLY寄存器来设置
另外,对于普通转换模式,分离x/y轴坐标转换模式,自动(连续)x/y轴坐标转换模式,都可以通过ADCDLY寄存器来设置采样的延时时间。
ADCDLY寄存器格式如下
ADCDAT1寄存器格式如下。它与ADCDAT0寄存器格式相似,ADCDAT1寄存器中保存y坐标值;而ADCDAT0寄存器中保存普通A/D转换值或x坐标值。
二、ADC和触摸屏操作实例
1.硬件设计
模拟引脚AIN0,AIN1外接可调电阻器,电路如下
两个电阻都是可调电阻器,程序将通过AIN0,AIN1这两个通道采集,转换电压值。
程序设计
提供一个菜单,可以从中选择测试ADC或触摸屏。当测试ADC时,程序不断测量AIN0,AIN1的电压,并在串口上显示出来。当测试触摸屏时,只是测试触笔按下,松开的事件,并且把按下时采集到的x,y坐标打印出来,它们只是原始的数据。
源码,有兴趣的同学在网上收就行。
总结
相信通过这一节,大家明白了触摸屏的工作原理,以及获取x,y轴坐标值的方法和过程。至于具体的控制寄存器来实现某些功能,具体遇到的时候参考数据手册就行。
重点在原理和工作的流程。
更多推荐
所有评论(0)