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