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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于Linux的觸摸按鍵系統(tǒng)設(shè)計

          基于Linux的觸摸按鍵系統(tǒng)設(shè)計

          作者: 時間:2009-07-14 來源:網(wǎng)絡(luò) 收藏

            電容式技術(shù)目前已經(jīng)趨于成熟,并且已經(jīng)應(yīng)用于量產(chǎn)的產(chǎn)品中,其中最著名的當(dāng)屬蘋果公司生產(chǎn)的iPhone的full touch。電容式技術(shù)較之電阻式技術(shù)生產(chǎn)成本更加低廉,使用壽命更長,反應(yīng)更加靈敏,并且發(fā)展初期的精度不足的問題現(xiàn)在已經(jīng)完全解決,有著越來越多的觸摸產(chǎn)品開始使用電容式感應(yīng)。

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

            觸摸芯片

            本所使用的芯片為ATMEL的AT42QT2160電容式觸摸芯片,主機(jī)平臺AT91SAM9260的2.6嵌入式。該芯片觸摸接口豐富,通用性較強。芯片可外擴(kuò)16個獨立觸摸和一個具有8檔位的滑條,該芯片還具有3個通用I/O口,可由用戶自行配置其功能。

            設(shè)計思路

            觸摸芯片AT42QT2160通過I2C與主MCU通信,并配有一根中斷線用于通知操作有觸摸鍵值發(fā)生。每當(dāng)有中斷發(fā)生時,鍵盤中斷服務(wù)程序通過I2C讀取AT42QT2160中存儲的當(dāng)前鍵值,并與上一次的鍵值作比較,把鍵值改變了的的狀態(tài)發(fā)送給,通過鍵盤tty設(shè)備傳遞給系統(tǒng)。

            硬件設(shè)計

            AT42QT2160部分電路設(shè)計如圖1。根據(jù)實際應(yīng)用的需要,本次設(shè)計只使用了12個觸摸按鍵,沒有用到滑條。由于AT42QT2160是電容式的觸摸芯片,對電容變化極其敏感,所以在布PCB(印制電路板)時一定要防止各感應(yīng)線之間相互串?dāng)_,應(yīng)該讓 X軸和Y軸之間的距離要盡可能得大。


            觸摸鍵盤驅(qū)動設(shè)計

            本驅(qū)動運行在ARM 2.6.25下,驅(qū)動程序共分三部分。

            1. I2C設(shè)備驅(qū)動:用于讀寫AT42QT2160。

            2. 中斷服務(wù)程序:用于響應(yīng)AT42QT2160的中斷,并向系統(tǒng)發(fā)送鍵值。

            3. 字符設(shè)備驅(qū)動:用于與應(yīng)用層交互(動態(tài)設(shè)置AT42QT2160)。

            驅(qū)動程序所要做的就是當(dāng)收到AT42QT2160的中斷信號后,通過I2C總線讀到當(dāng)前的鍵值,然后將改變的鍵值發(fā)送給系統(tǒng),程序流程如圖2。

            在整個觸摸鍵方案的設(shè)計中,PCB的設(shè)計尤為重要,這是觸摸鍵靈敏與否的關(guān)鍵。對于觸摸鍵的控制,寄存器的調(diào)校也十分重要的。AT42QT2160提供了幾個寄存器用于靈敏度、掃描頻率、觸發(fā)閥值等等的設(shè)置,這些寄存器是為了克服PCB的布線差異而提供給客戶去微調(diào)的,設(shè)置好了這些寄存器后,您的觸摸鍵將會達(dá)到一個最佳的狀態(tài)。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關(guān)推薦

          技術(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); })();