历史上的今天
今天是:2025年08月17日(星期日)
2021年08月17日 | 1.9.4_ADC和触摸屏_S3C2440触摸屏接口_P
2021-08-17 来源:eefocus
从上节内容可以知道,检测触摸屏按下和计算触点坐标是通过S1到S5五个开关来完成的,通过控制五个开关在不同时候的关断与闭合就可以得到触点的XY坐标。

通过2440的芯片手册来查看触摸屏是怎么工作的。

首先,通过8:1的多路选择器我们可以选择控制哪路通道。

然后是触摸屏的接口模式:
正常转换模式。用于常规的ADC转换,通过设置ADCCON来初始化ADC,通过读写ADCDAT0来完成转换。
分离的X/Y转换模式。逐个测量X/Y坐标,X坐标保存在ADCDAT0,并且会产生中断,Y坐标保存在ADCDAT1中,同样也会产生一个中断。
自动的X/Y转换模式。不需要单独的读取X/Y坐标,可以一次性的测量X/Y坐标然后一起读取,只需要产生一次中断。
等待中断模式。等待按下或者松开,等待Xp从高电平变为低电平,或者从低电平变为高电平。

编程要点
ADC转换数据可以通过中断或者轮询方式获取。中断模式下,ADC转换数据的获取会有一点延时,这是因为中断的进入和退出会有一些额外的开销;在轮询方式下,可以通过查询ADCCON[15]来确定数据是否转换完成。
推荐使用的是另一个方式。在ADCCON[1]被设为1后,当转换数据被读取后,自动开始下一次转换。
之后就是寄存器的操作,通过ADCTSC寄存器来控制S1-S5开关的关断和闭合。
除了寄存器方面的配置,还有中断方面的配置。
ADC/触摸屏会产生中断,这些中断会发给中断控制器,再由中断控制器发给CPU。其中,中断控制器有寄存器使能/禁止中断的功能。

下图是2440芯片手册中关于中断的流程图。

查看芯片手册,发现ADC和触摸屏共用同一个中断源。

查看SRCPND,第31位表示是否有ADC中断请求,根据上一个图的描述可知,发生触摸屏中断时这一位也会被置1,即触摸屏中断和ADC中断共用同一个中断源向量。


还有INTMOD寄存器,这是选择快中断还是普通模式的中断。


INTMSK寄存器。根据中断的执行框图,在普通中断模式下,发生某个中断时,SRCPND中对应的位会被置1,通过设置INTMSK寄存器,可以选择是否屏蔽该中断的请求。而在快中断模式下,INTMSK寄存器不起作用。


INTPND控制器,表明正在处理某个中断,同样的,该寄存器只在IRQ模式下起作用,在FIQ模式下不起作用。
SUBSRCPND寄存器,bit10表示ADC中断,bit9表示触摸屏中断。
INTSUBMSK寄存器,bit10和bit9分别是ADC中断和触摸屏中断的屏蔽位。

通过SUBSRCPND和INTSUBMSK,我们就可以分辨出是ADC中断还是触摸屏中断了。

总结一下,在IRQ模式下,ADC中断和触摸屏中断会一起发出,可以通过SUBSRCPND来分辨,通过INTSUBMSK来屏蔽,然后发给SRCPND,再通过INTMSK和INTMOD发给CPU。
那么,怎么写程序呢?
初始化ADC/TS接口;
设置TS处于等待中断模式;
设置中断:INTSUBMSK和INTMSK,防止被屏蔽不发给CPU;
按下,进入TS中断:a.进入自动采集模式;b.启动ADC;
ADC中断:a.读数据;b.再次进入“等待中断模式”;c.启动定时器;
定时器中断:a.若松开,结束;b.若按下,跳到4.b进行循环。
史海拾趣
|
先说两句废话为和我以前一样对操作系统(尤其是嵌入式操作系统)迷惑的弟兄解释些概念。因为总是有人在问是不是一定要用操作系统,我的CPU能不能移植操作系统,可以移植什么操作系统,有了操作系统可不可以运行某些程序。 从我的个人经历来讲,这其实 ...… 查看全部问答> |
|
请教一下各位!我现在自己做了个AT89S52的并口ISP下载线,用得是easyPro软件,觉得很好用。不知道换成PonyProg2000(网上说叫小马软件)这软件之后对AVR的单片机比如ATmega88V能否实现下载,并口线还是用AT89S52的。实在懒得做了~~也没找到简单的电 ...… 查看全部问答> |
|
wince5.0 BSP移植到wince6.0过程讨论(S3C2440A)有经验的请进! 本人参照ztg0021和googleman的博文,开始了wince5.0 BSP移植到wince6.0的工作,把KITL和OAL有移植好了,进展很慢,编译过程出现下面的错误: BUILD: [00:0000000068:WARNN ] C:\\WINCE600\\PLATFORM\\ ...… 查看全部问答> |
|
所有这些应用笔记和它们配套的演示程序都可以在STM32的资料网页上下载:http://www.st.com/mcu/modules.php?name=mcu&file=familiesdocs&FAM=110AN2820 使用中等容量STM32F103xx微控制器驱动双极步进电机 (2009年3月)本文介绍了如何 ...… 查看全部问答> |








SUBSRCPND寄存器,bit10表示ADC中断,bit9表示触摸屏中断。

