ADC和触摸屏(1)——硬件原理介绍
- 硬件平台:韦东山嵌入式Linxu开发板(S3C2440.v3)
- 软件平台:运行于VMware Workstation 12 Player下UbuntuLTS16.04_x64 系统
- 参考资料:开发版原理图,S3C2440A datasheet
- 源码仓库:https://gitee.com/d_1254436976/Embedded-Linux-Phase-1
一、硬件原理
1、ADC
如上图所示,通过采集模拟量x,然后通过ADC转换,将模拟量x转换成数字量,其中得到的数字量并不是实际中我们所需要的,要通过公式计算将得到的数字量运算,得到实际中需要的数字量a.
-
ADC的分辨率
指的是模数转换器所能表示的最大数是多少,即ADC的位数,如上图中的ADC是10位ADC,那么分辨率是2的10次方,即1024的分辨率。 -
基准电压
对于带AD的单片机内部会给你提供一个基准电压(3.3V),其次AREF是单片机基准电压外部输复入引脚,也可以通过AREF去连接外部基准源。
2、触摸屏
触摸屏硬件电路如图所示,是由两张“膜”上下拼接而成的,无触摸时,“膜”之间是有空隙的。
-
原理
这个“膜”相当于一个滑动变阻器,按下的位置就是读取该点的对地电压。
当按下时,X“膜”和Y“膜”会通过ADC转换得出两个电压值,通过公式可以根据电压值可以计算出该点的(x, y)坐标。 -
等待中断模式
此时触摸屏等待被按下,各个开关(通过寄存器控制开闭)的开闭与X/Y_ADC的高低电平情况如下图所示。
-
读取X坐标等效电路
当触摸屏被按下时,此时开关闭合状态如下,Y_ADC的电压由高变为低(根据此设置按下中断),YP作为探针,通过X_ADC的ADC转换得到蓝色点的电压值。
-
读取Y坐标等效电路
当测量Y“膜”的电压时,此时开关闭合状态如下,XP作为探针,通过Y_ADC的ADC转换得到蓝色点的电压值。
二、使用触摸屏流程
在使用触摸屏时,会有大致以下两种情况:按一下松开与持续按着一段时间后松开,针对这两种情况,流程如下:
{
- 按下触摸屏,产生触摸中断
- 在触摸中断中,启动ADC
- ADC初始化完成后,产生中断
- 在ADC中断中,读取(x, y)坐标
- 启动定时器中断
- 定时器中断发生时,判断触摸屏是否被持续按下
- 若是继续执行 2 步骤,若无则判断为无按下,结束整个流程
}