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