<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 牛人業(yè)話(huà) > 牛人工程師與PIC32一個(gè)月發(fā)生的研發(fā)故事

牛人工程師與PIC32一個(gè)月發(fā)生的研發(fā)故事

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

  那是始于2009年7月所發(fā)生的一個(gè)我和的故事。就在我的有關(guān)如何對16位微控制器進(jìn)行編程一書(shū)剛剛出版不久,我聽(tīng)說(shuō)公司一款新的32位微控制器已經(jīng)出爐。該產(chǎn)品使用的是MIPS內核,同時(shí)還聲稱(chēng)與16位的引腳以及系列產(chǎn)品外圍兼容。對我來(lái)說(shuō)這簡(jiǎn)直是太重要了!我立即起身去要到一個(gè)樣片并刷新基于GNU的MPLAB C32 C編譯器的beta拷貝。

本文引用地址:http://dyxdggzs.com/article/248807.htm

  

 

  我只是必須看一下這款新產(chǎn)品像什么。它仍然像是PIC MCU?它能不能在同樣的演示版上工作?畢竟,我已經(jīng)用C語(yǔ)言為寫(xiě)完了15章頗有價(jià)值的16位代碼和例程。長(cháng)話(huà)短說(shuō),在隨后的不到一個(gè)月的時(shí)間里,我不僅完成了代碼移植,而且已經(jīng)開(kāi)始利用所掌握的的經(jīng)驗書(shū)寫(xiě)一本新書(shū)了!

  下面就是對一個(gè)月里所發(fā)生的事情的簡(jiǎn)要敘述。我喜歡從我遵守最好的設計準則并從閱讀數據頁(yè)開(kāi)始講述,如果說(shuō)我從頭到尾全面閱讀了數據頁(yè),那是撒謊!實(shí)際上我所做的與你做的完全一樣。打開(kāi)裝有以前PIC24項目的MPLAB集成開(kāi)發(fā)環(huán)境,點(diǎn)擊F10鍵立即創(chuàng )建。

  二進(jìn)制數字

  一長(cháng)串的錯誤列表出現在輸出窗口中。令我驚奇的是,所報道的所有錯誤都明顯地只與我的二進(jìn)制注釋(0b00000000),即C語(yǔ)言的一個(gè)非標準擴展有關(guān)。我試圖編譯我關(guān)于16位控制器一書(shū)前三章中的第一個(gè)代碼例程。這是一段非常簡(jiǎn)單的代碼,用C來(lái)說(shuō)明I/O,精確定時(shí)以及流控制(用于循環(huán))命令。我立刻決定將所有二進(jìn)制文字轉換成標準十六進(jìn)制的注釋(0x00)并觀(guān)看結果,瞧!編譯器和鏈接器馬上解析出代碼沒(méi)有任何錯誤。

  感覺(jué)很幸運,我決定繼續“前進(jìn)”,并在一些實(shí)際的硬件——即Explorer 16演示板上運行代碼。我獲取了一個(gè)PIC32插件式模塊(PIM),并取代我的16位器件一書(shū)中普遍所用的PIC24 PIM。加電后我抱著(zhù)非常懷疑的態(tài)度觀(guān)察了幾秒鐘,竟然沒(méi)有“冒煙”!然后我取了一塊MPLAB Real ICE調試器和編程器連接到板子上。MPLAB IDE竟然很快識別出該工具并報告已發(fā)現PIC32連接到板子上。

  在快速和自動(dòng)的固件升級后,我便立即按下編程鍵,隨后便是運行命令…。但卻不工作!

  我意識到板子上明顯有什么問(wèn)題,但一點(diǎn)也不像我所期望的那樣。這里需要解釋一下。在我的16位器件一書(shū)的前三章中,我利用C語(yǔ)言向讀者提供了如何生成 “Hello World”這類(lèi)例子。其中,我講到傳統的實(shí)現方法是,向終端發(fā)送一個(gè)字符串,但這在嵌入式控制應用中是不現實(shí)或者不合適的。而是采用一個(gè)“有趣的”方案,即制作一排8個(gè)LED,當把板子拿在手上并揮動(dòng)時(shí),燈將有節奏地閃爍。它將顯示出有用的信息,這要歸功于眼睛的自然成像持久性。實(shí)際上對此進(jìn)行編碼要比描述更容易。

  不同時(shí)鐘

  事實(shí)上是,PIC32得到的I/O引腳和定時(shí)全部都是錯誤的。

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

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

  JTAG默認值設置為on

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

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

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

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

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

  

 

  圖1:用PIC32產(chǎn)生字符串。

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

c語(yǔ)言相關(guān)文章:c語(yǔ)言教程



上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: Microchip PIC32 PIC24

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>