在ARM Cortex-M3/M4大行其道的今天,可能大家都遺忘了在很久很久以前還有MIPS架構的單片機,MIPS架構的芯片在路由器上應用得很多,單片機上也是有,沒錯今天說的就是Microchip的PIC系列單片機。和當年如火如荼的AVR類似,PIC32的知名度是越來越小,現在PIC32可能也只剩下所謂的穩定性了吧(難怪Microchip會收購Atmel, 簡直臭味相投啊?)
相信大家對STM32應該了如指掌,今天就帶大家從STM32的角度,簡單過一下如何從新上手PIC32,從以下方面進行對比,并嘗試總結一下PIC32為什么流行不起來
為什么不是PIC8/PIC16/PIC24?因為沒必要,就是這么簡單,32位的成本已經相當相當低了。這里使用的是PIC32MX795F512H, 擁有512K Flash, 128K RAM,運行頻率在80MHz,支持USB 2.0 Full Speed, 以太網MAC,淘寶價格在35左右。
黑人問號臉?!!
什么這個價格要35?相類似的STM32F407ZGT6也才24左右,嚶嚶嚶。
最小系統板,我們就直接參考開源項目Fubarino SD,這里對其的SD卡和USB部分進行了DIY,讓手工制作更加容易,希望拿到eagle文件的同學,留下你的郵箱。
實際的焊接出來的效果圖如下
PIC32代碼的開發,即可以使用Linux下MIPS gcc進行編譯,也可以使用XC32在Windows/Linux/MacOS里編譯。編譯的問題相對簡單,但是燒錄略有不同,這個涉及到PIC32的內存分布,較ARM上手更為復雜。
PIC32通常需要燒寫一個bootloader,就算是僅App的工程,他也需要一個bootloader來進行代碼的跳轉。
這里我們使用的是PICKit3.5,淘寶88塊。
PICKit3.5功能強大,亮點在于支持脫機固件燒寫,支持目標板電源檢測與供電,但恰恰是其功能過于強大,導致其使用也相對復雜,穩定性也更差。
首先下載安裝mpalb-x-ide及xc32 compiler,當前最新mplab-x-ide是v5.40版本
https://www.microchip.com/mplab/mplab-x-ide
https://www.microchip.com/mplab/compilers
建議先安裝好XC32 compiler并添加到系統PATH當中。
這里需要注意的是XC32有Free版本,Free版本不支持代碼的優化,一般情況下也是夠用了,如果需要Pro License,可以申請60天的試用。安裝完成,會出現2個程序,一個是MPLAB X IDE,一個是MPLAB X IPE, 其中IPE就是單獨的燒寫工具,而IDE是開發環境后面會單獨聊到。
你可能注意到,安裝一個IDE需要占用可能近10個G的空間,真的是很夸張。
這里我們需要燒錄Fubaino的SD 512K版本固件,
https://github.com/chipKIT32/PIC32-avrdude-bootloader
不帶512字眼的是基于32MX440F256H的V1.4版本
打MPLAB X IDE明顯能感覺到這個軟件加載的速度異常的慢,這都是2020年了,i7 8代+SSD+16G內存加速的速度也能明顯感覺遲滯。
這個界面還是挺正常的吧,沒有什么奇怪的,當點擊Connect之后選擇好Hex并進行Program時,你有可能會發現在真正Program之前需要先下載PICKit3的固件?
什么神仙操作,而且這個過程相當緩慢,有時甚至會失敗!為什么要這么做?前面有提到過為了讓PICKit3支持更多功能,PICKit3可以加載不同的固件大大提高靈活性,而隨之而來的就是復雜性,不穩定性,燒寫個代碼真的不輕松,不干脆。
打開MPLAB X IDE,不過在這之前,如果你的電腦配置不行還是建議不要打開了,這感覺能讓你回想到之前在老古董上用Eclipse上開發Android應用的痛苦經歷。
這里以Bootloader的source code為例,從File->Open Project導入工程,進行編譯Production->Build Project進行編譯,如果需要進行代碼的下載調試,直接點擊Debug->Debug Project,操作的方式倒是大同小異,
不過你可能又會發現,啟動慢可能是因為太吃內存的原因?和Chrome真的有得一拼!
等到下載下程序時,有可能你又會發現,MPLAB X IDE在做和IPE一毛一樣的事情,重新給PICKIT3下下載固件,真是***。
事實上既然有了toolchain也可以不使用IDE,直接用Makefile進行軟件的開發,不是更香?
另外,還有一個叫PicKit3的精簡的軟件是用來專門燒寫固件的
好了,又要切換固件,簡直了,然而,切換完之后,你還會發現,他不支持PIC32!
Harmony是一套可以使用GUI配置芯片的工具,非常類似STM32CubeMX, 但這在Microchip里是一段痛苦的過程,首先要從MPIDE X 的Plugin里啟用Harmony
這里選擇gitee的URL,在國內速度會快很多
瘋狂地吃掉CPU和硬盤,雖然我這個是1T的機械
終于看到熟悉的界面,但是真的再沒有興趣再繼續,這是一段痛苦的旅程。
從PIC32的簡單試用來看,PIC32失敗真的不冤枉它,總結以下幾點,歡迎補充
前面發表了兩篇關于單片機入門方面的文章,受讀者們的要求,今天給大家呈獻的是單片機系統開發平臺(或者叫開發環境)的搭建。
單片機系統開發環境,包括硬件開發環境和軟件開發環境。其中軟件開發環境其實就是一個運行在電腦上的程序編輯和編譯的軟件工具。
本文以市面上常用的STM8S003單片機為例,講述其硬件開發環境和基于IAR的軟件開發環境的搭建。
一、硬件開發環境的搭建
圖示電路板上所用單片機即為STM8S003,仿真器(或者叫下載器、調試工具)為ST-Link V2,再加一臺電腦。
在電腦上首次插上ST-Link V2需要安裝驅動軟件,驅動軟件可以自己上網搜一下,或者向ST-Link V2的賣家索取。
二、軟件開發環境的搭建
STM8S003屬于ST公司的STM8系列單片機,其開發軟件比較主流的有兩種:
(1)ST公司自己開發的STVD(程序編輯和編譯)+STVP(程序下載工具);
(2)IAR公司提供的IAR-EWSTM8(for STM8)。
這兩種開發軟件各有優勢,使用起來都很方便,其在ST公司的官方網站上都可以找到下載地址。
兩者的區別是:
STVD短小精悍,專門用于STM8系列單片機;但STVD本身不具備C編譯器,如果不另外安裝C編譯器,用STVD則只能用匯編語言開發程序。C編譯器在ST公司官網也有下載的,上圖中綠色框框里面的就是C編譯器下載鏈接。
IAR比較全面,除了支持STM8還支持市面上很多其它單片機的軟件開發。IAR是集成有C編譯器的。
本人一直使用的是IAR,有時候會用STVP進行程序下載,因為STVP下載程序比較直觀和方便,我的這個使用習慣供大家參考。
前面都是鋪墊,下面才是正題,大家下面就跟著我一步一步開始搭建STM8的軟件開發環境。
第一步:安裝IAR-EWSTM8,這個不多講,大家都會。
第二步:創建STM8軟件工程:
打開IAR后,在Project菜單下面選“Create New Project…”,然后出現下面這個界面:
現在一般用C語言開發單片機程序,所以這一步選“C”,點OK后是選擇工程文件保存目錄。后面按提示一步一步做就可以了。
第三步:工程選項配置
按上圖指示,選“Options…”后,就進入工程配置界面。
在這里選擇單片機型號STM8S003F3。
在這里選擇調試工具:ST-LINK。
其余配置項保持默認值即可,然后這就配置好了,可以寫單片機軟件代碼了。
三、編譯、連接、下載調試
軟件編寫好以后,按上圖所示,可以進行編譯、連接、下載調試。
四、結束語
單片機軟件開發是一件比較辛苦費腦子的事情,軟件開發的過程其實就是消滅各種奇怪的bug 的過程。
但是大家可能會發現軟件工程師為什么可以連續的整日整夜地在電腦前面調試軟件呢?那是因為這事雖然在外人看來比較辛苦,但是也有很大的樂趣,每次成功消滅一個bug都會獲得一種巨大的成就感(快感),這種快感只有身在其中的人才能體會到。
祝愿大家快樂地開發單片機軟件,痛快地消滅bug,每天獲得無數次快感!
本頭條號將每天給大家分享單片機開發的軟件、硬件技術經驗,歡迎大家跟我交流,留言加關注是對本人最大的支持和愛護!