原创 嵌入式开发之TQ2440触摸屏学习笔记(转)

2016-3-9 11:11 871 18 26 分类: MCU/ 嵌入式

  硬件平台:TQ2440

  触摸屏检测方法可以分两种:

  1.检测按下、弹起两个状态时的x y坐标值;

  以检测按下状态是读取x y坐标值为例 实现代码如下

  • void Init_Touchpanel(void)  

  • {    

  •     ClearPending(BIT_ADC);  

  •     rSUBSRCPND|=BIT_SUB_TC  ;  

  •     //清adc中断 触摸屏中断  

  •   

  •     rADCDLY=40000; //ADC转换间隔 (1/3.6864M)*50000=13.56ms  

  •     //Normal conversion mode:ADC Start or interval delay 0~65535  

  •       

  •     rADCCON=(1<<14)+(ADCPRS<<6);   //ADCPRS En, ADCPRS Value  

  •     //使能预分频器 预分频值 ADCPRS(9) AD转换器频率=gclk / (9+1)   

  •   

  •     rADCTSC=0xd3;  //Wfait,XP_PU,XP_Dis,XM_Dis,YP_Dis,YM_En  

  •     //ADC触摸屏控制寄存器  检测手写笔按下的中断信号 YM输出驱动有效 YP输出无效 XM输出禁止 XP输出驱动禁止  

  •     // XP上啦使能 adc正常转换模式 等待中断模式  

  •   

  •     pISR_ADC = (int)AdcTsAuto;  

  •     //指定adc中断服务程序   

  •   

  •     rINTMSK=~BIT_ADC;       //ADC Touch Screen Mask bit clear  

  •     rINTSUBMSK=~(BIT_SUB_TC);  

  •     //使能中断 当触摸笔按下时 触发INT_TC中断  

  • }  

  •   

  • //触摸屏中断函数  

  • void __irq AdcTsAuto(void)  

  • {  

  •     //ADCDAT0[15]==1 触摸笔未按下  

  •     //ADCDAT0[15]==0 触摸笔按下  

  •     if(rADCDAT0&0X8000)  

  •         return ;  

  •     rINTMSK |= (BIT_ADC);     

  •     //禁止adc中断  

  •     rSUBSRCPND|=BIT_SUB_TC ;  

  •     //禁止adc的子中断  

  •   

  •     rADCTSC=(1<<3)|(1<<2);         //Pull-up disable, Seq. X,Y postion measure.  

  •     //xp上拉禁止 自动顺序测量x y位置  

  •   

  •     rADCCON|=0x1;                   //start ADC  

  •   

  •     while(rADCCON & 0x1);       //check if Enable_start is low  

  •     //adc一旦开始 将自动使ADCCON[0]=0  

  •       

  •     while(!(rADCCON & 0x8000));        //check if EC(End of Conversion) flag is high, This line is necessary~!!  

  •     //adc结束时,ADCCON[15]==1  

  •           

  •     while(!(rSRCPND & (BIT_ADC)));  //check if ADC is finished with interrupt bit  

  •     //等待ADC结束(不管后级中断是否传递 adc完成后 此处应该被置位)  

  •       

  •     point.x = (rADCDAT0&0x3ff);  

  •     point.y = (rADCDAT1&0x3ff);  

  •     //获取x y方向的adc值 更新坐标点  

  •   

  •     Uart_Printf("XP=%04d, YP=%04dn",point.x, point.y);    //X-position Conversion data              

  •   

  •     ClearPending(BIT_ADC);  

  •     rSUBSRCPND|=BIT_SUB_TC  ;  

  •     //清adc中断  

  •       

  •     Init_Touchpanel();  

  •     //重新初始化触摸屏  

  • }  
     

  2.检测在按下~弹起两个状态中间的x y坐标值 定时检测并更新坐标;

  实现:

  a 将adc 触摸屏接口设置为检测按下触摸笔中断;

  b 在adc按下触摸笔中断函数中 将adc的中断服务程序重新指定为弹起触摸笔中断函数;

  c 在adc按下触摸笔中断函数中 启动定时器定时进行ADC 采集XY坐标值 或在每次读取坐标值的时候进行ad转换 获取坐标值;

  d 在adc弹起触摸笔中断函数中 关闭定时器 停止采集x y坐标;

  感谢博主s_a_n_的分享!

文章评论8条评论)

登录后参与讨论

用户1476573 2016-3-9 11:16

亲可以关注一下我的帖子,不定期会有技术帖更新

用户1476573 2016-3-9 11:13

哈哈你绝对值得拥有

用户1476573 2016-3-9 11:12

是的,因为我们的客户群体范围比较广,所以资料必须要做详细了,这样初学也会很容易上手

用户164119 2016-3-8 09:09

哦,之前在用过2440了,现在在210.资料挺多的

用户1871598 2016-3-7 09:49

看到2440有活动,心痒痒的,学习到这么强大的资料,决定入手啦~谢谢楼主!

用户1871543 2016-3-3 16:26

想当年,老子在大学用的就是2440开发板,哈哈~学习了!

用户1871547 2016-3-3 09:57

路过,帮忙顶一下

用户1871561 2016-3-3 09:43

博主辛苦了,多分享些。有没有关于天嵌的TQE9的去logo的资料分享哈!

用户1831649 2015-3-12 20:43

很好的技术文章,非常适合入门阅读! :)
相关推荐阅读
用户1476573 2016-06-27 15:48
TQ210 WINCE 大分辨率不启动的问题
   有客户在TQ210  WINCE系统下遇到大分辨率无法启动的问题,现解决方法如下:   修改了WINCE600\PLATFORM\COMMON\SRC\SOC\S5PV210_SEC_V...
用户1476573 2016-06-12 11:56
天嵌年中狂欢,只打折不打烊
    天嵌年中狂欢,一不做,二不休,终极抄底价,将打折进行到底,机会不是天天有,该出手时就出手!   活动时间     2016年6月13日至17日 ...
用户1476573 2016-05-27 11:02
Cortex-A9嵌入式开发板电池可充电解决方案
  有客户反应E9卡片电脑的rtc久了电池没电不能保存时间,咨询解决方案。E9卡片电脑在设计之初就考虑到客户产品化后可能遇到的这个问题,预留了可充电电池更换的硬件接口。   具体解决方法如下:...
用户1476573 2016-05-20 10:04
TQ210添加永不休眠选项
    很多朋友在使用TQ210做项目的时候都需要屏幕保持长亮,本文介绍如何修改TQ210 android源码,使系统可以永不休眠,代码如下:   1、添加英文选项   修改package...
用户1476573 2016-04-26 10:50
s5pv210中MFC的帧内存格式(转)
  最近调了一下TQ210的mfc硬件h264编码功能,编码是成功了,但出来的视频却是花的。这个问题困扰了我很久,网上关于这方面的资料也很少,没办法只能查看s5pv210的芯片手册,功夫不负有心人...
我要评论
8
18
关闭 站长推荐上一条 /2 下一条