S3C2440裸奔触摸屏
来源:互联网 发布:淘宝网人工退款热线 编辑:程序博客网 时间:2024/05/01 08:04
S3C2440对于触摸屏的相关interface有以下几个模式:
1.普通转换模式,手册是这么说的:most likely used for General Purpose ADC Conversion.(不了解这个,所以用原文)
2.分开X/Y转换模式,就是分开来转换X位置和Y位置。X位置的信息会保存在ADCDAT0的低10位,而Y位置信息则保存在ADCDAT1的低10位。
3.自动X/Y转换模式,就是会把和X和Y一起转换,然后X,Y位置信息保存跟上面一样,也是在ADCDAT0,ADCDAT1的低10位。(我想一般会用这个模式)
4.等待中断模式,也就是等待触摸屏的中断,ADCTSC=0xd3就是等待笔尖放下时产生中断,而ADC=0xd3|(1<<8)就是笔尖抬起时产生中断。
参考手册弄出来也不难,只是提醒一下ADCUPDN这个寄存器是会标记当前的中断是笔尖放下还是抬起的。只是读完之后就要记得把它清0,在这个地方卡了很久,后来想到手册既然没说这个寄存器会自动清0,那就自己手动帮他清0吧。。。果然是这样。。。。
下面列出关键代码,使用自动X/Y转换模式:
void __irq lhg_tsINT(void) //中断函数
{
rINTSUBMSK |= ((U32)0x1<<9); //关闭中断服务
if ( rADCUPDN&(U32)0x01 ) //现在是down
{
ts=0; //这是一个全局变量,调试时会来登记一下触摸屏是否转换了新的XY坐标
rADCUPDN=0;
uart_print_str("/r/ndown");//自己做的串口打印函数
//产生X、Y坐标
rADCTSC = (1<<3)|(1<<2); //上拉电阻无效,自动XY坐标转换模式开启
rADCCON|=0x1; //开始A/D转换
while( rADCCON & 0x1 ); //等待AD转换开始
//rADCDLY = 40000; //这里比较郁闷,网上有人用这个值,据手册里说低15位有效,默认值是0xff,屏蔽掉,不删免得以后忘记有这个寄存器。
while( !(rADCCON & ((U32)0x1<<15)) ); //等待AD转换结束
x=(rADCDAT0&0x3ff); //保存x位置
y=(rADCDAT1&0x3ff);//保存y位置
//等待笔触抬起
//rADCCON=(1<<14)+(9<<6); //设置A/D预分频
rADCTSC =0xd3|(1<<8); //再次设置等待中断模式,这一次是判断触笔的抬起
}
if ( (rADCUPDN>>1)&(U32)0x01 ) //现在是up
{
rADCUPDN=0;
uart_print_str("/r/nup");
ts=1;//标志有xy转换
rADCCON=(1<<14)+(9<<6); //设置A/D预分频
rADCTSC=0xd3; //设置触摸屏为等待中断模式。
}
rSRCPND |= (U32)0x1<<31; //清中断标志
rSUBSRCPND |=(U32)0x01<<9;
rINTPND |= (U32)0x1<<31;
rINTSUBMSK &= ~((U32)0x1<<9); //打开中断服务
}
void init_lhg_ts(void) //初始化触摸屏
{
uart_print_str("/r/nTouchScreen init");
//确定中断入口地址
pISR_ADC = (U32)lhg_tsINT;
rADCCON=(1<<14)+(9<<6); //设置A/D预分频
rADCTSC=0xd3; //设置触摸屏为等待中断模式。
//清中断标志
rSRCPND |= (U32)0x1<<31;
rSUBSRCPND |= (U32)0x01<<9;
rINTPND |= (U32)0x1<<31;
rINTSUBMSK &= ~((U32)0x1<<9); //打开中断服务
rINTMSK &= ~((U32)0x1<<31); //打开中断屏蔽
}
此外还参考了赵老的博客:http://blog.csdn.net/zhaocj/archive/2010/04/21/5510536.aspx
- S3C2440裸奔触摸屏
- S3C2440裸奔触摸屏
- s3c2440裸奔之结束语
- S3C2440 裸奔之始
- s3c2440 裸奔 main函数
- s3c2440 裸奔 PWM 分析
- s3c2440 裸奔 RTC
- s3c2440 裸奔ADC
- s3c2440 裸奔 keyscan
- s3c2440 裸奔 TP
- s3c2440 裸奔总结
- S3C2440裸奔之uart0使用
- S3C2440裸奔篇之MMU
- S3C2440裸奔篇之MMU
- s3c2440 linux 触摸屏驱动
- S3C2440之触摸屏
- s3c2440触摸屏程序架构
- S3C2440 触摸屏应用
- FTP RFC959 中文版(转)
- Microsoft CryptoAPI加密技术(一)
- 序列比对
- mysql数据库中创建、删除、更新、插入数据、等语句
- 创办企业 相关
- S3C2440裸奔触摸屏
- Microsoft CryptoAPI加密技术(二)
- mysql数据库内容的导出!
- Android核心分析 之一--------分析方法论探讨之设计意图
- DirectShow编程(3.2)- 关于DirectShow - Filter Graph和它的组件
- Android核心分析 之二 -------方法论探讨之概念空间篇
- SQL Server 2005 各版本系统及硬件要求
- DirectShow编程(3.3)- 关于DirectShow - 构建Filter Graph
- DirectShow编程(3.4) - 关于DirectShow - Filter Graph中的数据流