第十八章 AD与触摸屏
本章代码,查看我的github网站:https://github.com/weiqi7777/...
1、ADC和(电阻式)触摸屏的关系
电阻式触摸屏本身工作依赖于AD转换,所以210的电阻触摸屏接口和ADC接口接在了一起。也就是电阻触摸屏接口使用(复用了)ADC的接口。
2、S5pv210的ADC控制器
2.1、ADC特性
2.2、ADC的工作时钟框图
ADCCLK是ADC控制器工作的时钟。通过PCLK_PSYS分频得到。
2.3、ADC的通道
ADC支持10个通道。可以并行转换10个AD。
AD使用的管脚是专用管脚。类型是analog。
从管脚可以看出,可以支持两个电阻式触摸屏,TSYM0、TSYP0、TSXM0、TSXP0是第一个,TSYM1、TSYP1、TSXM1、TSXP1是第二个
ADCIN0、ADCIN1是两个单独可以接外部待转换的模拟电压。
3、ADC主要的寄存器
3.1、TSADCCON
第十六位:设置AD的分辨率选择,10位和12位。
第十五位:只读,判断AD转换是否完成。1完成。当AD开启转换后,需要等待该位为1表示转换完成后,读取的转换的值才是有效的。
第十四位:预分频是否时能
第十三到六位:预分频的值
第二位:备用模式选择,备用模式下,预分频时能要关闭,减小功耗。在备用模式下,AD转换操作停止,TSDATX和TSDATY值保持。
第一位:读AD数据操作后,自动开启AD转换功能开启/关闭。也就是当读取本次AD转换的AD值后,硬件自动开启下一次AD转换。
第零位:开启AD转换,硬件会在开始准换后,自动将该位清零。
3.2、TSDATX
AD转换的值。对于没有使用触摸屏,直接用AD,默认转换的值放在这个寄存器中。
3.3、TSDATY
AD转换的值。
3.4、ADCMUX
通道选择。
因为只有两个寄存器可以存放AD转换的值,所以需要选择当前操作的通道号。
关于start by read模式,设置好模式,先读一次数据丢掉,这样就开启下一次AD转换,然后以后就可以不停的读取AD值即可。
初始化
4、S5pv210的电阻触摸屏控制器
4.1、ADC与触摸屏控制器结构框图
210一共支持10路模拟输入,分别为AIN0-AIN9,其中AIN0和AIN1是只做模拟输入的,AIN2-AIN9分别可以支持2个电阻式触摸屏。所以4个负责一个触摸屏
AD转换和触摸屏控制部分有两个附属单元。其中一个是反向控制AINn引脚的逻辑,主要作用是在触摸屏获取坐标的过程中分时给xy方向供电和测量;第二个是中断产生部件,如果AD转换完成(主要针对AIN0和AIN1这两路)或者是触摸屏被人按下/弹起时,中断产生部件会自动产生一个中断通知CPU来处理时间,这样就不用轮询检测触摸事件了。
4.2、Normal operation mode & separate X/Y Position
AD转换器有2种工作模式:正常操作模式和分时X\Y位置转换模式。
正常操作模式用作普通的AD转换,分析X\Y位置转换模式用作电阻式触摸屏(先测x,再测y)。正常AD转化下将AD转化值放入到TSDATX中,在分时X\Y模式下会将X\Y坐标分别放在TSDATX和TSDATY中。
对于AIN0和AIN1来说没有模式的选择,因为只能工作在普通模式。对于AIN2-AIN9来说,因为被复用,所以才有两种模式。如果要作为普通AD转换,则配置为普通模式,如果配置为电阻式触摸屏检测,则配置成分时X\Y模式。
4.3、中断参与
其实普通AD转换和触摸屏AD转换本身可以不在中断参与下完成。
普通AD转换如果不要中断,那就是用查询方式。开启一次转换后然后不断查询标志位,直到AD转换完硬件自动置位标志位后才去读取转换值。这样效率比较低。控制器提供了一个相应的中断给普通AD转换使用。
触摸屏也可以使用或者不使用中断。但触摸屏的按下\弹起对soc来说是纯粹的异步事件。对于这种事件,一般使用中断方式。
4.4、主要寄存器
TSDLY0 :延时寄存器,即软件发起AD转换后,硬件要延时多久时间才开始进行AD转换。主要用在start by read下。当程序中读取AD值后,硬件就会自动的开启转换,但是实际我们需要延时一会在进行转换,这个时候这个寄存器的作用就出来了。
4.5、电阻式触摸屏和电容式触摸屏的特点对比
1、耐久性 电容式触摸屏不容易坏, 电阻式触摸屏易坏
2、抗干扰性 电容式触摸屏要差一些, 电阻式触摸屏要好一些
3、精准度 电容式触摸屏要差一些, 电阻式触摸屏要好一些
4、用户体验 电容式触摸屏要好一些, 电阻式触摸屏要差一些
5、价格 电容式触摸屏要贵一些, 电阻式触摸屏要便宜很多
系列其他篇
原文首发于骏的世界博客
作者:卢骏.
更多Arm技术相关的文章请关注Arm技术博客极术专栏,每日更新。