為一個項目選擇合適的微控制器涉及到許多因素。除了成本、性能、功耗和總體尺寸之外,適當?shù)能浖?a href="http://www.asorrir.com/v/tag/1751/" target="_blank">硬件工具的可用性也是首要考慮的因素。
對所選平臺的支持也非常重要——不僅來自供應(yīng)商,而且來自整個社區(qū)。如果所選的微控制器有現(xiàn)成的開發(fā)板,也會有幫助。
最后,如果所選的微控制器具有廣泛的、經(jīng)過充分調(diào)試的、具有良好記錄的應(yīng)用程序編程接口或API的軟件庫,則可以顯著減少開發(fā)時間。
在本文中,將只介紹通常滿足上述條件的微控制器。
所有現(xiàn)代微控制器都有一些共同的基本特征。在處理單元的頂部,它們有一定數(shù)量的閃存用于存儲應(yīng)用程序代碼、一些SRAM,在大多數(shù)情況下,還有一些EEPROM。
他們需要一個時鐘源,這通常是由一個內(nèi)部電阻電容(RC)振蕩器,或通過使用外部晶體用于更多的時序關(guān)鍵應(yīng)用。他們有一些數(shù)字IO端口,和至少一個計時器/計數(shù)器。
此外,除了非常低端的微控制器,大多數(shù)都至少有一個用于串行通信的UART。除此之外,微控制器的區(qū)別還在于它們的內(nèi)存大小、集成在芯片上的其他外設(shè)的數(shù)量和類型,以及它們運行用戶應(yīng)用程序的速度。
這不僅取決于原始時鐘速度。它還取決于處理器的數(shù)據(jù)寬度和所包含的任何硬件加速功能。
嵌入式系統(tǒng)的微控制器主要根據(jù)其數(shù)據(jù)總線的寬度分為三類:8位、16位和32位。還有其他的,但這些是最受歡迎的。
一般來說,8位微控制器是面向低端應(yīng)用的,32位微控制器是面向高端應(yīng)用的,16位微控制器是面向中端應(yīng)用的。
到目前為止,我開發(fā)的大多數(shù)產(chǎn)品都傾向于集成32位微控制器,但對于低端、低成本的產(chǎn)品來說,8位或16位微控制器可能是一個不錯的選擇。
8位微控制器
如果應(yīng)用程序?qū)μ幚砟芰Φ囊蟛皇呛芨撸⑶殷w積相對較小,那么考慮使用8位微控制器是有意義的。
作為參考,大多數(shù)Arduinos都基于8位微控制器。因此,如果你已經(jīng)用Arduino構(gòu)建了早期的原型,那么你就可以在最終產(chǎn)品中使用8位微控制器。
不要讓價格指導(dǎo)你的決定,在很多情況下32位微控制器比8位芯片更便宜。
例如,Atmega328p是用于Arduino Uno的8位微控制器。批量達10,000件時,其成本略高于1美元。它以20 MHz運行,包含32 KB的閃存和2KB的RAM。
另一方面,您只需60美分即可購買運行于48 MHz且具有類似內(nèi)存的32位微控制器。這可能是由于32位微控制器的普及降低了成本。
話雖如此,還有更便宜的8位微控制器可供選擇,價格不到25美分。
對于專用于僅完成一項工作,用戶界面有限且數(shù)據(jù)處理很少的應(yīng)用,通常應(yīng)考慮使用8位微控制器。
8位微控制器有各種尺寸,從小型6-pin設(shè)備到64 pin芯片。它們的閃存大小從512字節(jié)到256KB,SRAM大小從32到8KB或更多,EEPROM大小從0到4K或更多。一個最小的系統(tǒng)可以像一個單片機一樣簡單,供電軌上有一個旁路電容器。
最受歡迎的3個8位微控制器系列是8051系列、來自Microchip的PIC系列和Atmel的AVR系列,現(xiàn)在是Microchip的一部分。
8051系列
該微控制器最初來自英特爾,現(xiàn)在由其他公司生產(chǎn),如今仍廣泛使用,并已嵌入許多設(shè)備中。
盡管它們可作為獨立設(shè)備使用,但8051現(xiàn)在主要用作IP(知識產(chǎn)權(quán))核,這些核嵌入到特定于應(yīng)用程序的芯片中,比如一些專用無線電收發(fā)器。
作為你的產(chǎn)品的主要微控制器,8051很少是正確的選擇。
PIC系列
PIC微控制器非常流行,并且得到了Microchip和第三方的廣泛支持。
Microchip提供了MPLAB?X集成開發(fā)環(huán)境(IDE),其中包括一個免費的C編譯器。還有一個免費的IDE插件是MPLAB代碼配置器,它為板載外設(shè)生成C代碼。
然后可以將其集成到應(yīng)用程序代碼中。PIC模型有USART、SPI、I2C、ADC、USB、LIN、CAN等接口。Microchip還提供了多種開發(fā)工具,包括MPLAB PICkit 4、ICD 4和Real ICE。
更高質(zhì)量的商業(yè)編譯器,有更好的代碼優(yōu)化也可用。這是一個PIC微控制器的快速PDF參考指南。
AVR系列
AVR是另一個非常流行的8位微控制器系列。雖然它們與上面描述的PIC處于同一空間,而且性能也差不多,但它們有一個很大的特點:Arduino。
原始的Arduino,例如Uno,Leonardo和Mega,都使用AVR微控制器。由于Arduino的可用庫種類繁多,因此即使僅用于概念證明原型,AVR也應(yīng)認真考慮8位應(yīng)用程序。
由于Arduino庫是用C++編寫的,因此可以很容易地將它們合并到用C/C++編寫的任何應(yīng)用程序中。
軟件開發(fā)工具包括AVR studio,或者,如果使用Arduino,則Arduino IDE和平臺IO都是常用的。在這些IDE中使用的編譯器是AVR GCC,它是一個免費的、非常好支持和維護的C/C++編譯器。
硬件開發(fā)工具包括Atmel ICE和PICkit 4。此外,成熟的工具,如STK600和AVR Dragon仍然廣泛可用。這里有一個快速的AVR微控制器PDF參考指南的鏈接。
16位微控制器
16位微控制器是8位微控制器的升級版,同時仍然共享許多相同的屬性。它們速度更快,支持更多的外設(shè),而且通常提供更多的內(nèi)存,包括flash和SRAM。
除了更多的IO pin外,與純軟件實現(xiàn)相比,它們中的大多數(shù)還具有明顯更快的硬件倍增器,并且使用更少的程序內(nèi)存。
很容易找到同時具有ADC和DAC的設(shè)備,或者同時具有電容式觸摸傳感器、分段LCD驅(qū)動程序和以太網(wǎng)的設(shè)備。
在內(nèi)部,這些設(shè)備還具有通常在低端設(shè)備中找不到的硬件塊。這些包括加密引擎,運算或可編程增益放大器,和DMA控制器。
盡管可以從各種制造商處找到16位微控制器,例如Microchip(他們的dsPIC33是一個流行的選擇),NXP,Infineon或Cypress,但TI MSP430系列將在此作為該微控制器產(chǎn)品的典型示例。
TI MSP430系列
MSP430是一系列非常低功耗的16位微控制器,有多種型號可供選擇。它們的范圍從一般用途到非常專用的模型。
這些微控制器的特殊變體有一個有趣的地方,那就是它實際上分為兩個極端:非常專用、非常低成本的模型,以及帶有模擬傳感器接口和數(shù)字信號處理(DSP)的高端模型。
一個高端應(yīng)用的例子是這個超聲波流量傳感器。在低端市場,TI還生產(chǎn)基于MSP430的芯片,可以解決許多非常特定的硬件功能。
例如,想要SPI-to-UART接口、I/O擴展器或UART-to-UART橋接器?所有的都在里面,而且這個芯片的價格不到0.30美元。
最后,當然,MSP430得到許多低成本工具和開發(fā)套件的支持。
2位微控制器是功能強大的設(shè)備,具有類似微處理器的功能。一些高級功能包括指令流水線、分支預(yù)測、嵌套矢量中斷(NVI)、浮點單元(FPU)、內(nèi)存保護和板上調(diào)試器。
指令流水線處理意味著處理器內(nèi)核提前預(yù)取了后續(xù)指令,而分支預(yù)測則預(yù)取了if-else條件的兩個結(jié)果的下一條指令,從而加快了代碼執(zhí)行速度。
NVI提供了中斷優(yōu)先級,其中一個中斷可以搶占較低優(yōu)先級的中斷。
FPU的浮點運算速度比SW實現(xiàn)的方法要快得多。
例如,內(nèi)存保護可以確保應(yīng)用程序代碼不會無意中覆蓋專門用于操作系統(tǒng)的關(guān)鍵部分。
最后,on-board調(diào)試允許窺視寄存器和系統(tǒng)的其他區(qū)域,以促進應(yīng)用程序代碼調(diào)試。所有這些都使這些微控制器能夠運行大型、快速和強大的應(yīng)用程序。
此外,它們的原始處理能力意味著它們可以很容易地支持實時操作系統(tǒng)(RTOS),從而提供多任務(wù)處理能力。
盡管市場上有很多32位的微控制器,但本文的重點將放在基于ARM Cortex M的設(shè)備上。
ARM控股實際上只設(shè)計處理器的核心IP,然后將其授權(quán)給各種半導(dǎo)體供應(yīng)商,這些供應(yīng)商將處理器和一些外圍設(shè)備整合到自己的硅芯片中。許多芯片制造商提供基于Cortex-M架構(gòu)的微控制器。
兩家基于ARM的芯片的著名供應(yīng)商是Atmel的SAM設(shè)備系列和STMicroelectronics的STM32產(chǎn)品系列。
由于SAM設(shè)備在一些與Arduino兼容的板中使用,因此在這里值得一提。然而,總的來說,STM32設(shè)備提供了更多的選擇,在設(shè)計嵌入式32位微控制器時應(yīng)該優(yōu)先考慮。
STM32微控制器
ARM Cortex M內(nèi)核有許多版本。最受歡迎的是M0 / M0 +,M1,M3,M4和M7,每個都提供越來越高的性能。STM32微控制器包含M0 / M0 +,M3,M4或M7內(nèi)核。
例如,“主流”類別中可用的主要變體及其相對性能曲線。請注意,在每個族本身中,有許多變體,它們具有外圍設(shè)備和內(nèi)存量的不同組合。
事實上,在這個時候,有超過300個STM32微控制器在這個類別中可用。
STM32硬件支持:STM32系列由ST Microelectronics和第三方提供的各種硬件工具支持。
STLink V2是一種廉價的電路內(nèi)調(diào)試器/程序員。它由ST公司生產(chǎn),可以從Digi Key等地方買到;當然,也可以買到非常便宜的山寨品。
ST Microelectronics在Nucleo和Discovery系列下還擁有大量開發(fā)板。
兩者都包含一個STLink調(diào)試接口。所需要的只是一臺帶USB接口的計算機,運行合適的軟件工具來評估所選的微控制器。
發(fā)現(xiàn)板包括額外的外部設(shè)備,如MEM傳感器和電容觸摸板。但是,Nucle具有與Arduino擴展板兼容的標頭。
在離開本節(jié)之前,值得一提的是另一個非常便宜的開發(fā)板。這款平板電腦俗稱“藍色藥丸”(Blue Pill),采用基于STM32F103 Cortex M3的芯片,從某些渠道購買的價格不到2美元。
該開發(fā)板的一個吸引人的功能是可以使其與Arduino兼容,從而可以使用Arduino IDE或Platform IO編寫和下載代碼以快速驗證概念設(shè)計。
雖然Arduino兼容的過程有點復(fù)雜,但有幾個地方出售Arduino板。只需搜索“STM32duino”。
STM32軟件支持:意法半導(dǎo)體為其所有STM32產(chǎn)品線提供ARM Mbed開發(fā)套件版本。這包括一個IDE、編譯器和一組廣泛的庫。
對于喜歡使用其他編譯器的開發(fā)人員,ST提供了它的STMCube。這是一個代碼生成器軟件,它為STM32外圍設(shè)備生成初始化代碼。
這樣,就不需要完全通過多個寄存器的位設(shè)置來設(shè)置外圍設(shè)備,例如IO端口或定時器。
ESP32是Espressif Systems的微控制器。如圖3所示,它具有典型的32位微控制器上的所有功能。
然而,這個特殊的微控制器與其他的不同之處在于它的芯片上包含了WiFi和藍牙硬件。
這不僅包括協(xié)議棧,還包括實際的無線電收發(fā)器。ESP32也可以作為一個集成天線的小型預(yù)認證模塊使用。
對于需要WiFi或藍牙連接的應(yīng)用程序,ESP32值得認真考慮。ESP32的價格(包括分立芯片和模塊)是非常實惠的價格,特別是考慮到該芯片的功能和性能的數(shù)量。
微控制器可以說是您必須為您的產(chǎn)品選擇的最重要的組件。在項目中期切換到新的微控制器可能是一場噩夢,所以一定要提前做出正確的選擇。
設(shè)計中的其他組件通常可以在不需要大量系統(tǒng)級更改的情況下進行更改。但作為產(chǎn)品核心的微控制器卻不是這樣。
在選擇微控制器時,通常希望選擇一個能給您的產(chǎn)品增長空間的微控制器。例如,如果您確定需要16個GPIO pin,那么您就不想選擇只有16個GPIO pin的微控制器。
如果您決定在未來添加一個新的按鈕,因此需要另一個GPIO pin,會發(fā)生什么?如果你的微控制器沒有給你足夠的發(fā)展空間,那么你可能會發(fā)現(xiàn),看起來簡單的設(shè)計升級在未來將需要一個大規(guī)模的重新設(shè)計,因為一個新的微控制器是必要的。
另一方面,您不希望選擇超出預(yù)期需要的性能或特性。
例如,如果您的產(chǎn)品只是簡單地監(jiān)測溫度和濕度,那么您將永遠不需要運行在數(shù)百兆赫的高級32位微控制器。那將會給你的產(chǎn)品增加不必要的成本和設(shè)計復(fù)雜性。
相反,你需要找到一個最佳的平衡點,既要有足夠的發(fā)展空間,又不需要為永遠不會真正需要的性能或功能付費。
為您的產(chǎn)品選擇最佳的微控制器(以及所有其他組件)是我們可預(yù)測的硬件報告服務(wù)的關(guān)鍵部分。
? ? ? ?責任編輯:tzh
評論