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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式linux 電阻觸摸屏 (s3c2440)編程

          嵌入式linux 電阻觸摸屏 (s3c2440)編程

          作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏



          更多5線8線式的觸摸屏介紹:http://www.elecfans.com/baike/waijiepeijian/chugan/20100324205083.html?1324351403
          更多資料:http://yunxiong1020.blog.163.com/blog/static/76344309201110283759386/

          1.2 在S3C2440中的觸摸屏接口
          SOC S3C2440的觸摸屏接口是與ADC接口結(jié)合在一起的,框圖如下:




          3,觸摸屏接口
          XP、XM、YP、YM為四線電阻觸摸屏接口,四條信號(hào)線分別代碼的含義為:
          nXPONPlus X-axis on-off control signalx軸正極開(kāi)關(guān)控制信號(hào)
          XMONMinus X-axis on-off control signalx軸負(fù)極開(kāi)關(guān)控制信號(hào)
          nYPONPlus Y-axis on-off control signaly軸正極開(kāi)關(guān)控制信號(hào)
          YMONMinus Y-axis on-off control signaly軸負(fù)極開(kāi)關(guān)控制信號(hào)
          觸摸屏接口的模式有以下幾種:
          (1)、普通ADC轉(zhuǎn)換模式
          (2)、獨(dú)立X/Y位置轉(zhuǎn)換模式
          (3)、自動(dòng)X/Y位置轉(zhuǎn)換模式
          (4)、等待中斷模式
          我們主要接受觸摸屏接口的 等待中斷模式和自動(dòng)X/Y位置轉(zhuǎn)換模式,自動(dòng)轉(zhuǎn)換模式操作流程如下:觸摸屏控制器自動(dòng)轉(zhuǎn)換X,Y的觸摸位置,當(dāng)轉(zhuǎn)換完畢后將數(shù)據(jù)分別存放在寄存器ADCDAT0和ADCDAT1.并產(chǎn)生INT_ADC中斷通知轉(zhuǎn)換完畢。
          更多詳細(xì)情況請(qǐng)查閱:數(shù)據(jù)手冊(cè)

          等待中斷模式:
          Waiting for Interrupt Modesetting value is rADCTSC=0xd3;//
          XP_PU, XP_Dis, XM_Dis, YP_Dis, YM_En.
          當(dāng)觸摸后,觸摸屏控制器產(chǎn)生INT_TC中斷,等待中斷模式下, Modesetting value (四個(gè)引腳設(shè)置應(yīng)該為):
          rADCTSC=0xd3;XP_PU, XP_Dis, XM_Dis, YP_Dis, YM_En.




          當(dāng)觸摸后,觸摸屏控制器產(chǎn)生INT_TC中斷,四個(gè)引腳設(shè)置應(yīng)該為:

          引腳XPXMYPYM
          狀態(tài)PULL UP/XP DisableDisable (初始值即是)DisableEnable
          設(shè)置1011

          當(dāng)中斷產(chǎn)生后,X/Y的位置數(shù)據(jù)可以選擇獨(dú)立X/Y位置轉(zhuǎn)換模式,和自動(dòng)X/Y位置轉(zhuǎn)換模式進(jìn)行讀取,采用自動(dòng)X/Y位置轉(zhuǎn)換模式進(jìn)行讀取需要對(duì)我們已經(jīng)設(shè)置的TSC寄存器進(jìn)行更改,在原有的基礎(chǔ)上,
          S 3C2410_ADCTSC_PULL_UP_DISABLE| S3C2410_ADCTSC_AUTO_PST | S3C2410_ADCTSC_XY_PST(0)。
          數(shù)據(jù)轉(zhuǎn)換完畢后,也會(huì)產(chǎn)生中斷,通知轉(zhuǎn)換結(jié)束。

          2. 輸入子系統(tǒng)模型分析
          2.1 整體框架:

          輸入子系統(tǒng)包括三個(gè)部分 設(shè)備驅(qū)動(dòng)、輸入核心、事件處理器。
          第一部分 設(shè)備驅(qū)動(dòng)
          是連接在各個(gè)總線上的輸入設(shè)備驅(qū)動(dòng),在我們的SOC上,這個(gè)總線可以是虛擬總線platformbus,他們的作用是將底層的硬件輸入轉(zhuǎn)化為統(tǒng)一事件型式,向輸入核心(Input core)匯報(bào).





          第二部分 輸入核心 的作用如下:
          (1) 調(diào)用input_register_device() used to 添加設(shè)備,調(diào)用input_unregister_device() 除去設(shè)備。(下面會(huì)結(jié)合觸摸屏驅(qū)動(dòng)講述)
          (2) 在/PROC下產(chǎn)生相應(yīng)的設(shè)備信息,下面這個(gè)例子即是:
          /proc/bus/input/devices showing a USB mouse:

          I: Bus=0003 Vendor=046d Product=c002 Version=0120
          N: Name="Logitech USB-PS/2 Mouse M-BA47"
          P: Phys=usb-00:01.2-2.2/input0
          H: Handlers=mouse0 event2
          B: EV=7
          B: KEY=f0000 0 0 0 0 0 0 0 0
          B: REL=103

          (3) 通知事件處理器對(duì)事件進(jìn)行處理

          第三部分是 事件處理器:
          輸入子系統(tǒng)包括了您所需要的大多數(shù)處理器,如鼠標(biāo)、鍵盤、joystick,觸摸屏,也有一個(gè)通用的處理器被叫做event
          handler(對(duì)于內(nèi)核文件evdev.C).需要注意的是隨著內(nèi)核版本的發(fā)展,event handler將用來(lái)處理更多的不同硬件的輸入事件。在Linux2.6.29版本中,剩下的特定設(shè)備事件處理就只有鼠標(biāo)和joystick。這就意味著越來(lái)越多的輸入設(shè)備將通過(guò)event
          handler來(lái)和用戶空間打交道。事件處理層的主要作用就是和用戶空間打交道,我們知道Linux在用戶空間將所有設(shè)備當(dāng)成文件來(lái)處理,在一般的驅(qū)動(dòng)程序中都有提供fops接口,以及在/dev下生成相應(yīng)的設(shè)備文件nod,而在輸入子系統(tǒng)的驅(qū)動(dòng)中,這些動(dòng)作都是在事件處理器層完成的,我們看看evdev.C相關(guān)代碼吧。


          關(guān)鍵詞: linux電阻觸摸屏s3c244

          評(píng)論


          技術(shù)專區(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); })();