如今,有大量的嵌入式開發(fā)項目涉及可編程微控制器。在最基本的層面上,微控制器是可編程的數(shù)字集成電路,可以執(zhí)行邏輯操作,具有內(nèi)存,并與外界接口。在大多數(shù)情況下,它們與“外部世界”的連接是通過PCB上的跡線連接到其他設(shè)備。常見的微控制器包括內(nèi)存有限、低成本的8位微型軟件包(如流行的ATtiny85),以及具有數(shù)百個引腳和大量外圍設(shè)備的大型32位設(shè)備(如同樣流行的STM32F407)。對于所有使用某種微控制器的項目,總是存在“哪一個”?
評估微控制器時,需要考慮設(shè)計的許多方面。要實現(xiàn)這個目標(biāo),需要什么樣的處理速度和內(nèi)存大小?項目是否需要硬件外圍設(shè)備,例如特定的通信接口或DMA等高級功能?物理尺寸、功耗和組件成本的要求是什么?有哪些開發(fā)工具和軟件庫可用?參與開發(fā)的開發(fā)人員是否有使用開發(fā)工具的經(jīng)驗,如果沒有,他們將面臨什么樣的學(xué)習(xí)曲線?有哪些外部資源可用,如第三方文檔或在線社區(qū)?
許多嵌入式開發(fā)項目對微控制器外圍設(shè)備有明確的要求。也許需要一個USB接口,設(shè)備需要作為大容量存儲設(shè)備安裝。也許它需要一個SPI或I2C接口來與傳感器、外部閃存或其他微控制器通信。在需要大量外部RAM的項目中,可能需要特殊的硬件接口。在具有音頻的系統(tǒng)中,高質(zhì)量的DAC和ADC外圍設(shè)備可能有用,但類似的功能可能會通過I2S或S/PDIF等數(shù)字音頻接口實現(xiàn)。明智的設(shè)計師在選擇使用多種不同外圍設(shè)備的微控制器時會非常小心。給定微控制器中的單獨外圍設(shè)備共享某些資源是很常見的,例如定時器或物理IO引腳。沒有人愿意花費數(shù)小時或數(shù)天的時間在一個特定的微控制器上工作,在所有這些努力之后,發(fā)現(xiàn)引腳和外設(shè)的預(yù)期配置會產(chǎn)生明顯的資源沖突!
很難評估所有這些設(shè)計特性,更不用說瀏覽數(shù)千種現(xiàn)成的微控制器選項了。對于許多簡單的項目,一個好的答案可能是“用你所知道的去做”,我們有時會有一些嵌入式開發(fā)項目只涉及構(gòu)建一些設(shè)備,例如用于研究的科學(xué)儀器。在這種情況下,如果我們已經(jīng)熟悉的微控制器非常適合這個項目,我們就可以利用過去的經(jīng)驗,節(jié)省大量的開發(fā)時間。當(dāng)以節(jié)省的小時或天來衡量時,工程時間的成本可以使微控制器之間的成本差異相形見絀幾個數(shù)量級。
在許多其他情況下,我們有涉及大規(guī)模生產(chǎn)設(shè)計的項目。對于電子制造業(yè)來說,預(yù)期的幾千或幾百萬單位的生產(chǎn)量是常見的。在這些設(shè)計中,針對成本的微小改進進行優(yōu)化可能會產(chǎn)生巨大的影響。然而,成本評估涉及的不僅僅是微控制器本身的價格。選擇微控制器會對產(chǎn)品的其他元件產(chǎn)生廣泛的影響。想象一個假設(shè)的嵌入式開發(fā)項目,比較STM32F405和STM32F407。雖然407更貴,但它有一個內(nèi)部以太網(wǎng)控制器。如果為這部分產(chǎn)品多付一點錢就意味著不再需要外部以太網(wǎng)控制器,那么BOM(beginning of month的縮寫)尺寸和PCB面積最終可能會節(jié)省成本。在大量生產(chǎn)的情況下,微控制器元件可能會直接從制造商處購買,而不是像Digikey或者Mouser。一個零件的價格會隨著數(shù)量的變化而變化,并且每個零件的價格不一定相同。雖然一個微控制器在1000個數(shù)量時可能比另一個成本低,但在10000個數(shù)量時可能正好相反。
電子行業(yè)最令人興奮的一個方面是微控制器等器件變得越來越強大、越來越高效、成本越來越低。如今,我們有多種選擇,將令人難以置信的性能融入小巧、廉價的封裝中。在嵌入式開發(fā)中,幾乎所有的事情都是如此,對于“我們應(yīng)該使用什么微控制器”這樣的問題,答案可能是“視情況而定”。