zl程序教程

您现在的位置是:首页 >  系统

当前栏目

Linux应用开发(十三)——ADC和触摸屏接口

Linux接口应用开发 十三 ADC 触摸屏
2023-09-11 14:18:26 时间


前言

  • 了解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个步骤。

  1. 设置ADCCON寄存器,选择输入信号通道,设置A/D转换器的时钟。使能A/D转换器时钟的预分频功能。
  2. 设置ADCTSC寄存器,使用设为普通转换模式,不能使用触摸屏功能。ADCTSC寄存器多用于触摸屏,对于普通的ADC,使用他的默认值即可,或设置其位[2]为0.ADCTSC寄存器格式下面进行讲述
  3. 设置ADCCON寄存器,启动A/D转换。如果设置READ_START位,则读转换数据(读ADCDAT0寄存器)时即启动下一次转换;否则,可以通过设置ENABLE_START位来启动A/D转换。
  4. 转换结束时,读取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个工作模式。

  1. 等待中断模式
    设置ADCTSC寄存器为0xD3即可令触摸屏控制器处于这种模式。这时,它在等待触摸屏被按下。当触摸屏被按下时,触摸屏控制器将发出INT_TC中断信号,这时触摸屏控制器要转入以下两种工作模式中的一种,以读取x,y坐标。
    对于S3C2410,当触摸屏被按下(Pen DOWN)或松开(Pen Up)时,都产生INT_TC中断信号。
    对于S3C2440,可以设置ADCTSC寄存器的位[8]为0或1时,表示等待Pen Down中断或Pen Up中断。
  2. 分离的x/y轴坐标转换模式
    这分别对应上述触摸屏工作过程的第2,3步骤。设置ADCTSC寄存器为0x69进入x轴坐标转换模式,x坐标值转换完毕后被写入ADCDAT0,然后发出INT_ADC中断;相似地,设置ADCTSC寄存器为0x9A进入y轴坐标转换模式,y坐标值转换完毕后被写入ADCDAT1,然后发出INT_ADC中断。
  3. 自动(连续)x/y轴坐标转换模式
    上述触摸屏工作过程的第2,3步骤可以合成一个步骤,设置ADCTSC寄存器为0x0C,进入自动(连续)x/y轴坐标转换模式,触摸屏控制器就会自动转换接触点x,y坐标值,并分别写入ADCDAT0,ADCDAT1寄存器中,然后发出INT_ADC中断。
  4. 普通转换模式
    不使用触摸屏时,触摸屏控制器处于这种模式。在这种模式下,可以通过设置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轴坐标值的方法和过程。至于具体的控制寄存器来实现某些功能,具体遇到的时候参考数据手册就行。

重点在原理和工作的流程。