首页 » 科学 » S3C2440触摸屏接口讲解_坐标_触摸屏

S3C2440触摸屏接口讲解_坐标_触摸屏

乖囧猫 2024-12-04 18:54:05 0

扫一扫用手机浏览

文章目录 [+]

来源:韦东山嵌入式专栏_ARM裸机加强版维基教程

作者:韦东山

S3C2440触摸屏接口讲解_坐标_触摸屏 科学

本笔墨数:2865,阅读时长:4分钟

回顾上节触摸屏利用事理

ADC电阻触摸屏硬件原

在不该用触摸屏的时候,必须要把 S1 S2 S3断开,S4 S5闭合,只有这样当我按下触摸屏,上面的电平才能从高变低,会产生一个中断旗子暗记,而当我去读取X坐标的值时

必须让S1 S3闭合,这样电流才可以通过,同时让S2 S4 S5断开,这时候YP这层膜就相称于探针一样去丈量电压

当我读取y坐标值

必须让S2 S4闭合,这样电流才可以流 下来,同时S1 S3 S5断开,这个时候XP这层膜就相称于探针一样,我可以来丈量这里的电压,从而得到Y坐标的电压值

在丈量x y坐标时,这个S5上拉电阻都要断开, 我们须要掌握这几个开关,实际上2440就供应了这几个开关的掌握方法, 打开2440的芯片手册看触摸屏时怎么操作的, 从440到450统共10页不到, 我们看有一个8:1 MUX的多路选择器,以及XP YP

442页触摸屏接口模式

正常模式,在上节视频中我们有讲解过

x y分离转换模式,

看看我们的X Y坐标事理图,可以单独转换X坐标 单独转换Y坐标

换句话说便是逐个去丈量X Y坐标;

他首先会启动X坐标的ADC转换,转换成功后数据会保存在ADCDAT0里,同时会产生一个中断,在这个中断做事程序里,就可以把X坐标读取出来,然后可以启动Y坐标的转换,转换成功后数据会保存在ADCDAT,同时会产生一个中断;

进入这个中断把Y坐标读取出来 丈量一次会产生2个中断,一个是X坐标中断,一个是Y坐标中断。

自动的或连续的X/Y坐标转换模式

也便是说不须要单独掌握,不须要单独去读取X坐标Y坐标,可以设置寄存器,让它一次性的丈量X坐标丈量Y坐标,X坐标保存在ADCDAT0 Y坐标保存在ADCDAT1,末了产生一个中断,也便是读取X/Y坐标只须要产生一次中断。

等待中断模式所谓等待中断模式,便是等待按下或者等待松开;对付下面这幅图,我按下的时候XP从高电平变为低电平,松开时,XP从低电平变为高电平,这便是按下松开都可以检测到。

我们要等待按下或者松开时 须要设置rADCTSC =0xd3这个值

Standby Mode静默模式/省电模式(我们不关心这个)

443页编程要点

AD转换数据时可以通过中断或者查询模式来得到数据,利用中断模式时,从AD转换开始,到得到数据可能会有些延迟,由于中断做事程序的进入和退出须要一定的韶光,(也便是说,如果你对数据转换的速率哀求的非常高,就可以利用查询办法),可以查询ADCCON[15]来判断是否转换结束

444页 剩下便是寄存器操作

ECFLG状态位 AD转换是否结束PRSCEN 使能ADC转换PRSCVL 设置A/D转换预分频值SEL_MUX选择输入通道,后面我们利用自动转换XY坐标,以是这里不须要设置ENABLE_START 启动转换

ADCTSC这个寄存器是主要的

UD_SEN Bit8是用来判断触摸屏是被按下还是被松开

0表明被按下,1表明被松开

YM_SEN Bit7 YM开关使能掌握S4

0表示断开 1闭合

YP_SEN Bit6 YP开关 0表示闭合 1 表示断开

寄存器位的含义不同

XM_SEN Bit5 XM开关 0 断开 1 闭合

XP_SEN Bit4 XP开关

0 闭合 1 断开

PULL_UP Bit3 掌握S5开关 0 上拉(闭合)

1 断开

AUTO_PST Bit2 自动连续转换X坐标Y坐标

上节视频里我们设置是 0 正常的ADC转换如果须要连续转换ADC坐标的话,须要设置为1 ,如果须要手动转换ADC坐标的话,须要设置为0

XY_PST Bit[1:0] 对付手动转换X Y坐标我们须要手动设置XY_PST 里面的位,是丈量X坐标还是丈量Y坐标, 也可以设置这两位即是11 让其即是等待模式, 也便是等待触摸屏被按下或者被松开.

如果设置自动连续转换的话,Bit2 AUTO_PST设置为1 XY_PST设置为00

如果利用手动转换的话设置AUTO_PST为0 XY_PST设置为01 手动转换X坐标模式 或者设置为10 Y坐标转换模式

447页

ADCDATA0 ADC数据寄存器

UPDOWN Bit15 可以读取这一位去判断触摸屏是按下还是松开AUTO_PST Bit14 自动丈量XY_PST Bit[13:12] 和上面ADCTSC寄存器中 AUTO_PST Bit2 XY_PST Bit[1:0]事理相同XPDATA Bit[9:0]最低10位用来保存ADC的值

448页

ADCDAT1寄存器 和ADCDAT0功能一样的,只不过保存的数据不同

这个的低10位是用来保存 Y坐标的值

接下来是ADCUPDN触摸屏按下或者松开检讨寄存器

TST_UP Bit1 触摸屏松开中断产生TST_DN Bit0 触摸屏按下中断产生

手册看完了,涉及到中断,我们看下这个图

它会涉及两个中断,按下或者松开,触摸笔的状态中断,其余一个启动ADC往后,ADC结束时也会产生一个中断,但是这个手册里没有看到中断的使能寄存器

那我们预测一下,ADC模块或者触摸屏模块一定会发出中断首先是ADC或者触摸屏产生中断,通过中断掌握器发送中断给CPU

肯定有寄存器禁止/使能ADC或者触摸屏中断

我们看看中断掌握器芯片手册中都须要设置什么

ADC中断源

ADC结束中断或者触摸屏中断,看来他们合起来用一个中断 既然合并一定还会有一个寄存器来分辨到底是ADC还是触摸屏发生的中断变革

SRCPND寄存器 31位为ADC中断

设置Bit[31]

INTMOD寄存器 来决定是普通中断还是快中断模式

设置Bit[31]

INTMSK寄存器 用来表示是否屏蔽这个中断

设置Bit[31]

优先级我们不须要设置

INTPND

设置Bit[31]表示中断是否正在处理

INTOFFSET 设置Bit[31]

到底是ADC中断还是触摸屏中断,肯定有其他寄存器可以设置

SUBSOURCE PENDING寄存器

INT_ADC_S Bit[10]表示ADC中断INT_TC Bit[9]表示触摸屏中断

INTSUBMSK 该当也是同样的位

INT_ADC_S Bit[10]表示ADC中断激活/屏蔽INT_TC Bit[9]表示触摸屏中断激活/屏蔽

我们可以通过INTSUBMSK来屏蔽ADC中断或者TouchScreen中断 当然也可以是能某个中断 可以通过SUBSRCPND来分辨到底产生哪个中断 INTSUBMSK 和SUBSOURCPND这两个寄存器都会搜集到一起 变成一个叫做INT_ADC的中断来发送给CPU

框图便是这样

我们怎么写程序? 写出一个框架

1 初始化ADC/TouchScreen接口ADCCON时钟接口2 一开始触摸屏是没有被按下的,设置TS处于等待中断模式3 设置中断INTSUBMSK使能ADC中断和触摸屏中断,还有INTMSK设置这个寄存器使能ANT_ADC让他能够发给CPU4 按下触摸屏,进入TS中断4.1 进入自动采集模式(自动转换XY坐标)4.2 启动ADC5.转换完之后产生ADC中断5.1 读数据5.2 再次进入 “'等待中断”'模式5.3 启动定时器,处理长按或者滑动6 定时器中断 6.1 判断是否松开,若松开结束 6.2 若按下重新实行 4.2启动ADC步骤

「新品首发」STM32MP157开拓板火爆预售!
首批仅300套

点击“理解更多”阅读更多干系文章。
标签:

相关文章

费马大定理,数学史上的千年难题

费马大定理,又称费马最后定理,是数学史上最为著名和最具挑战性的问题之一。自17世纪以来,无数数学家为之奋斗,然而直至1994年,这...

科学 2025-01-01 阅读0 评论0

贪心算法,C语言中的高效解决问题之路

在计算机科学中,贪心算法是一种在每一步选择中都采取当前最优解的方法。贪心算法适用于求解最优子结构问题,它通过一系列局部最优的选择,...

科学 2025-01-01 阅读0 评论0

赛汉化语言包,助力全球文化交流的桥梁

随着全球化进程的不断加速,各国之间的文化交流日益频繁。为了打破语言障碍,让世界各地的文化爱好者能够更好地欣赏和理解彼此的文化,赛汉...

科学 2025-01-01 阅读0 评论0