1.9.4_ADC和触摸屏_S3C2440触摸屏接口_P

从上节内容可以知道,检测触摸屏按下和计算触点坐标是通过S1到S5五个开关来完成的,通过控制五个开关在不同时候的关断与闭合就可以得到触点的XY坐标。
在这里插入图片描述
通过2440的芯片手册来查看触摸屏是怎么工作的。
在这里插入图片描述
首先,通过8:1的多路选择器我们可以选择控制哪路通道。

在这里插入图片描述
然后是触摸屏的接口模式:

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

在这里插入图片描述
编程要点

  1. ADC转换数据可以通过中断或者轮询方式获取。中断模式下,ADC转换数据的获取会有一点延时,这是因为中断的进入和退出会有一些额外的开销;在轮询方式下,可以通过查询ADCCON[15]来确定数据是否转换完成。
  2. 推荐使用的是另一个方式。在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。
在这里插入图片描述
那么,怎么写程序呢?

  1. 初始化ADC/TS接口;
  2. 设置TS处于等待中断模式;
  3. 设置中断:INTSUBMSK和INTMSK,防止被屏蔽不发给CPU;
  4. 按下,进入TS中断:a.进入自动采集模式;b.启动ADC;
  5. ADC中断:a.读数据;b.再次进入“等待中断模式”;c.启动定时器;
  6. 定时器中断:a.若松开,结束;b.若按下,跳到4.b进行循环。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值