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

          新聞中心

          EEPW首頁 > 嵌入式系統 > 設計應用 > 采用飛思卡爾Freedom開發平臺的觸摸界面(1)

          采用飛思卡爾Freedom開發平臺的觸摸界面(1)

          作者:TomThompson時間:2013-02-28來源:電子產品世界收藏

            最近由Erich Styger撰寫的一篇博客文章介紹了Freedom開發平臺,這是一款面向Kinetis L系列微控制器()的新型經濟高效開發平臺。這款小型81 mm x 54 mm的線路板由Kinetis L系列和大量實用的外設組成,可以促進新型低功耗軟件應用的設計水平。為您提供用于實驗的板載外設包括以下部件:

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

            * 全速USB 2.0接口(第二個USB接口作為調試端口)
            * MMA8451Q慣性傳感器
            * 提供信號訪問權限、實現附加屏蔽的I/O接頭
            * RGB LED,帶有每種顏色的獨立控制行
            * 可以執行滑塊的電容敏感的觸摸板

            上述提及的最后一種外設——觸摸板引起了我的注意。此前我完成了觸摸接口的工作,特別是在編寫iPhone應用程序的時候。如你所預料的一樣,面向iOS設備的Apple Cocoa Touch API僅允許在極高電平下能夠訪問觸摸屏幕??梢栽诘碗娖较逻M行觸摸接口的實驗,這個機會激起了我的興趣。

            棘手的硬件

            在采用外設操作與裸金屬關系密切的工作時,第一個步驟便是研究硬件接口。除非屬于片上外設,這需要獲得接線圖,以便了解外設與MCU之間的關系。除此之外,你還需要MCU參考手冊,它會描述外設控制與數據寄存器的情況,以及它們駐留在存儲器映射的位置。我找到該線路板產品頁面的FRDM-KL25Z線路板電路圖。KL25子系列參考手冊內包括與寄存器和存儲器映射相關的其他詳細信息。

            圖1展示了該款開發平臺觸摸板接口的簡化結構框圖。線路板上的觸摸板區域采用了一對電容敏感式電極,它可以移動滑塊。電極由兩個形狀類似直角三角形的導體元件組成。由于觸摸板區域在生產過程中進行了輕微的改造,兩個電極(而非元件)的布局可以降低微小的測量誤差。每個電極都擁有通向引腳的自身信號線,它屬于MCU的通用型I/O (GPIO)模塊。端口控制和中斷模塊(PORT)可以配置GPIO模塊,選擇電極線并且設置它們的運行?! ?/p>

           

            因為這會是一個裸金屬程序,我需要一種簡單的方式來顯示滑塊的運動。我計劃占用RGB LED實現這個目的,這就是為何這個部件及其連接在圖中如此所示的原因。

            這其中涵蓋了外部硬件和連接線情況。我會繼續描述內置在MCU之中的觸摸感應輸入(TSI)模塊。該線路板采用Kinetis MKL25Z128VLK4 MCU作為其主處理器。它是一款基于ARM Cortex-M0+內核的低功耗32位器件,帶有128 KB的閃存和16 KB的RAM。這款MCU可以提供大量十分有用的片上外設,其中包括16位ADC、12位DAC、各種定時器、USB OTG控制器、兩個I2C模塊、多個UART和TSI模塊。

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


          關鍵詞: 飛思卡爾 MCU 嵌入式

          評論


          相關推薦

          技術專區

          關閉
          看屁屁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); })();