<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          S3C2440裸奔觸摸屏

          作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏
          S3C2440對(duì)于觸摸屏的相關(guān)interface有以下幾個(gè)模式:

          1.普通轉(zhuǎn)換模式,手冊(cè)是這么說(shuō)的:most likely used for General Purpose ADC Conversion.(不了解這個(gè),所以用原文)

          本文引用地址:http://www.ex-cimer.com/article/201611/322379.htm

          2.分開(kāi)X/Y轉(zhuǎn)換模式,就是分開(kāi)來(lái)轉(zhuǎn)換X位置和Y位置。X位置的信息會(huì)保存在ADCDAT0的低10位,而Y位置信息則保存在ADCDAT1的低10位。

          3.自動(dòng)X/Y轉(zhuǎn)換模式,就是會(huì)把和X和Y一起轉(zhuǎn)換,然后X,Y位置信息保存跟上面一樣,也是在ADCDAT0,ADCDAT1的低10位。(我想一般會(huì)用這個(gè)模式)

          4.等待中斷模式,也就是等待觸摸屏的中斷,ADCTSC=0xd3就是等待筆尖放下時(shí)產(chǎn)生中斷,而ADC=0xd3|(1<<8)就是筆尖抬起時(shí)產(chǎn)生中斷。

          參考手冊(cè)弄出來(lái)也不難,只是提醒一下ADCUPDN這個(gè)寄存器是會(huì)標(biāo)記當(dāng)前的中斷是筆尖放下還是抬起的。只是讀完之后就要記得把它清0,在這個(gè)地方卡了很久,后來(lái)想到手冊(cè)既然沒(méi)說(shuō)這個(gè)寄存器會(huì)自動(dòng)清0,那就自己手動(dòng)幫他清0吧。果然是這樣。

          下面列出關(guān)鍵代碼,使用自動(dòng)X/Y轉(zhuǎn)換模式:

          void __irq lhg_tsINT(void) //中斷函數(shù)
          {
          rINTSUBMSK |= ((U32)0x1<<9); //關(guān)閉中斷服務(wù)

          if ( rADCUPDN&(U32)0x01 )//現(xiàn)在是down
          {
          ts=0; //這是一個(gè)全局變量,調(diào)試時(shí)會(huì)來(lái)登記一下觸摸屏是否轉(zhuǎn)換了新的XY坐標(biāo)
          rADCUPDN=0;
          uart_print_str("/r/ndown");//自己做的串口打印函數(shù)

          //產(chǎn)生X、Y坐標(biāo)
          rADCTSC = (1<<3)|(1<<2); //上拉電阻無(wú)效,自動(dòng)XY坐標(biāo)轉(zhuǎn)換模式開(kāi)啟
          rADCCON|=0x1;//開(kāi)始A/D轉(zhuǎn)換
          while( rADCCON & 0x1 ); //等待AD轉(zhuǎn)換開(kāi)始
          //rADCDLY = 40000; //這里比較郁悶,網(wǎng)上有人用這個(gè)值,據(jù)手冊(cè)里說(shuō)低15位有效,www.linuxidc.com默認(rèn)值是0xff,屏蔽掉,不刪免得以后忘記有這個(gè)寄存器。
          while( !(rADCCON & ((U32)0x1<<15)) ); //等待AD轉(zhuǎn)換結(jié)束
          x=(rADCDAT0&0x3ff); //保存x位置
          y=(rADCDAT1&0x3ff);//保存y位置

          //等待筆觸抬起
          //rADCCON=(1<<14)+(9<<6);//設(shè)置A/D預(yù)分頻
          rADCTSC =0xd3|(1<<8);//再次設(shè)置等待中斷模式,這一次是判斷觸筆的抬起
          }

          if ( (rADCUPDN>>1)&(U32)0x01 )//現(xiàn)在是up
          {
          rADCUPDN=0;
          uart_print_str("/r/nup");
          ts=1;//標(biāo)志有xy轉(zhuǎn)換

          rADCCON=(1<<14)+(9<<6);//設(shè)置A/D預(yù)分頻
          rADCTSC=0xd3;//設(shè)置觸摸屏為等待中斷模式。

          }

          rSRCPND |= (U32)0x1<<31; //清中斷標(biāo)志
          rSUBSRCPND |=(U32)0x01<<9;
          rINTPND |= (U32)0x1<<31;
          rINTSUBMSK &= ~((U32)0x1<<9); //打開(kāi)中斷服務(wù)

          }

          void init_lhg_ts(void) //初始化觸摸屏
          {
          uart_print_str("/r/nTouchScreen init");

          //確定中斷入口地址
          pISR_ADC = (U32)lhg_tsINT;
          rADCCON=(1<<14)+(9<<6);//設(shè)置A/D預(yù)分頻
          rADCTSC=0xd3;//設(shè)置觸摸屏為等待中斷模式。

          //清中斷標(biāo)志
          rSRCPND |= (U32)0x1<<31;
          rSUBSRCPND |= (U32)0x01<<9;
          rINTPND |= (U32)0x1<<31;
          rINTSUBMSK &= ~((U32)0x1<<9);//打開(kāi)中斷服務(wù)
          rINTMSK &= ~((U32)0x1<<31);//打開(kāi)中斷屏蔽

          }



          關(guān)鍵詞: S3C2440裸奔觸摸

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();