從8/16位向32位圖形MCU升級的技巧
對于這一點,通常我只需要噼里啪啦地翻開數(shù)據(jù)頁并按我自己的工作方式來查找問題的根源。出現(xiàn)的問題是,PIC32時鐘產(chǎn)生模塊比16位器件一書中所用的PIC24F要更加復(fù)雜一些。實際上,PIC32模塊更像16位MCU系列中最新的PIC24F上的振蕩器模塊。同樣,在PIC32結(jié)構(gòu)中,絕大多數(shù)外設(shè)模塊被連接到工作頻率不同的彼此分離的外設(shè)總線上,這些頻率低于系統(tǒng)時鐘,這有助于功率管理,當(dāng)然也有助于解決EMI問題。本文引用地址:http://m.butianyuan.cn/article/173681.htm
我耐心找出如何使外設(shè)總線工作在與同一項目(16MHz外設(shè)總線)中PIC24F所用相同的頻率。我還找出了可以執(zhí)行的相同指令數(shù),而執(zhí)行頻率僅為PIC24F所要求系統(tǒng)頻率的一半,這是因為PIC32內(nèi)核每個時鐘周期上可以執(zhí)行一個指令。
JTAG默認值設(shè)置為on
在解決了時鐘問題之后,我快速地瀏覽了一下時鐘模塊。有5個時鐘模塊。看上去絕對與PIC24F完全一樣,進一步回溯PIC MCU的歷史,一直回溯到PIC16C74(大約1994)都是兼容的。我繼續(xù)驗證I/O端口:同樣的結(jié)構(gòu),同樣的引腳數(shù),同樣反映“歷史”的寄存器名稱,發(fā)現(xiàn)一個兼容型的軌跡也許可以一直延伸到最初的PIC16C54(大約1991年)。
最后我對A/D轉(zhuǎn)換模塊進行了一次快速檢查,對于絕大多數(shù)PIC MCU初學(xué)者來說這是一個最難理解的外設(shè)。其輸入連接到I/O口的上端(絕大多數(shù)16位PIC器件的PORTB),并且先加電,故除非你的配置正確,否則它不會使你的數(shù)字輸入工作。顯然它與PIC24兼容,因此我仍然無法解釋LED行為異常的原因。
更靠近看,我發(fā)現(xiàn)有4個LED,要么從來不亮,要么就恒亮。于是,我又再一次翻開數(shù)據(jù)頁來檢查引腳圖,最后終于發(fā)現(xiàn)了“元兇”:JTAG端口。
四線(E)JTAG接口被稱為在線串行編程接口,是一個非正式的行業(yè)標(biāo)準(zhǔn),它不僅允許邊界掃描,而且還支持器件完全編程和調(diào)試控制。當(dāng)然,這在引腳數(shù)很多的32位芯片中是所期望的,PIC32在加電時通過默認的方式將這兩個接口都激活了。如果為了利用一些PORTA I/O而不需要這些JTAG接口,則依賴應(yīng)用程序來將其關(guān)閉。
自從我注意了JTAG接口后,我的第一個PIC32項目開始按期望工作,并發(fā)送出它的首個“Hello”,如圖1所示。
圖1:用PIC32產(chǎn)生字符串。
至此所學(xué)到的簡單經(jīng)驗(振蕩器配置和JTAG接口)迅速地證明了它們與我16位器件一書中前面各章節(jié)中絕大多數(shù)項目兼容性的關(guān)鍵,在隨后幾天的開發(fā)中移植都比較順利。我利用UART與PC通信,用SPI接口與串行EEPROM通信,而利用Parallel Master Port與LCD模塊通信。我利用A/D先讀取電位器,然后讀取溫度傳感器,演示了PIC32如何與模擬應(yīng)用接口。除了模塊的一些擴展功能以外,所有這些模塊的工作都與我所預(yù)期的完全一致。我發(fā)現(xiàn)我的16位代碼完全可以照用,幾乎不需要任何的改變。
評論