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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 從8/16位向32位圖形MCU升級的技巧

          從8/16位向32位圖形MCU升級的技巧

          作者: 時間:2009-07-06 來源:網絡 收藏

          對于這一點,通常我只需要噼里啪啦地翻開數據頁并按我自己的工作方式來查找問題的根源。出現的問題是,PIC32時鐘產生模塊比16位器件一書中所用的PIC24F要更加復雜一些。實際上,PIC32模塊更像16位系列中最新的PIC24F上的振蕩器模塊。同樣,在PIC32結構中,絕大多數外設模塊被連接到工作頻率不同的彼此分離的外設總線上,這些頻率低于系統(tǒng)時鐘,這有助于功率管理,當然也有助于解決EMI問題。

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


          我耐心找出如何使外設總線工作在與同一項目(16MHz外設總線)中PIC24F所用相同的頻率。我還找出了可以執(zhí)行的相同指令數,而執(zhí)行頻率僅為PIC24F所要求系統(tǒng)頻率的一半,這是因為PIC32內核每個時鐘周期上可以執(zhí)行一個指令。


          JTAG默認值設置為on


          在解決了時鐘問題之后,我快速地瀏覽了一下時鐘模塊。有5個時鐘模塊??瓷先ソ^對與PIC24F完全一樣,進一步回溯PIC 的歷史,一直回溯到PIC16C74(大約1994)都是兼容的。我繼續(xù)驗證I/O端口:同樣的結構,同樣的引腳數,同樣反映“歷史”的寄存器名稱,發(fā)現一個兼容型的軌跡也許可以一直延伸到最初的PIC16C54(大約1991年)。


          最后我對A/D轉換模塊進行了一次快速檢查,對于絕大多數PIC 初學者來說這是一個最難理解的外設。其輸入連接到I/O口的上端(絕大多數16位PIC器件的PORTB),并且先加電,故除非你的配置正確,否則它不會使你的數字輸入工作。顯然它與PIC24兼容,因此我仍然無法解釋LED行為異常的原因。

          更靠近看,我發(fā)現有4個LED,要么從來不亮,要么就恒亮。于是,我又再一次翻開數據頁來檢查引腳圖,最后終于發(fā)現了“元兇”:JTAG端口。


          四線(E)JTAG接口被稱為在線串行編程接口,是一個非正式的行業(yè)標準,它不僅允許邊界掃描,而且還支持器件完全編程和調試控制。當然,這在引腳數很多的32位芯片中是所期望的,PIC32在加電時通過默認的方式將這兩個接口都激活了。如果為了利用一些PORTA I/O而不需要這些JTAG接口,則依賴應用程序來將其關閉。


          自從我注意了JTAG接口后,我的第一個PIC32項目開始按期望工作,并發(fā)送出它的首個“Hello”,如圖1所示。

          圖1:用PIC32產生字符串。

          圖1:用PIC32產生字符串。

          至此所學到的簡單經驗(振蕩器配置和JTAG接口)迅速地證明了它們與我16位器件一書中前面各章節(jié)中絕大多數項目兼容性的關鍵,在隨后幾天的開發(fā)中移植都比較順利。我利用UART與PC通信,用SPI接口與串行EEPROM通信,而利用Parallel Master Port與LCD模塊通信。我利用A/D先讀取電位器,然后讀取溫度傳感器,演示了PIC32如何與模擬應用接口。除了模塊的一些擴展功能以外,所有這些模塊的工作都與我所預期的完全一致。我發(fā)現我的16位代碼完全可以照用,幾乎不需要任何的改變。



          評論


          相關推薦

          技術專區(qū)

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