4選擇正確的MCU
本章是關(guān)于微控制器單元(MCU)選擇的速成課程,主要針對那些沒有深厚硬件背景的工程師。它并不試圖成為一份詳盡的清單,列出你在為新項(xiàng)目選擇硬件時需要知道和考慮的一切。它確實(shí)提供了關(guān)于區(qū)分和選擇MCU設(shè)備的許多因素的介紹。最后,你將了解足夠多的關(guān)鍵考慮因素,以便有效地研究MCU并與團(tuán)隊(duì)中的硬件工程師討論潛在的候選人。通過加強(qiáng)硬件/固件合作,并在第一時間為項(xiàng)目選擇合適的MCU,你將避免硬件重新設(shè)計和進(jìn)度延誤。
我們將首先介紹為你的項(xiàng)目選擇一個合適的MCU所要考慮的廣泛因素。之后,我們將討論不同開發(fā)硬件之間的權(quán)衡。對STM32系列進(jìn)行簡短的介紹,以顯示供應(yīng)商如何傾向于對其產(chǎn)品系列進(jìn)行分組。在本章的最后,我們將比較幾個以STM32 MCU為核心的不同開發(fā)板(dev board),以說明為什么我們要使用這樣的開發(fā)板。
參考資料
- 軟件測試精品書籍文檔下載持續(xù)更新 https://github.com/china-testing/python-testing-examples 請點(diǎn)贊,謝謝!
- 本文涉及的python測試開發(fā)庫 謝謝點(diǎn)贊! https://github.com/china-testing/python_cn_resouce
- python精品書籍下載 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
MCU 考慮因素
選擇微控制器本身而不是開發(fā)板時需要考慮一些因素。 假設(shè)該項(xiàng)目包含完全定制的電子產(chǎn)品,則對選擇的確切 MCU 沒有限制,就像您僅在開發(fā)板之間進(jìn)行選擇時一樣。 學(xué)生和愛好者有時會人為地進(jìn)一步限制自己,有時會忠于某些生態(tài)系統(tǒng)并且只從這些生態(tài)系統(tǒng)內(nèi)的開發(fā)板(例如 Arduino 或 mBed)中進(jìn)行選擇。 雖然任何生態(tài)系統(tǒng)在本質(zhì)上都沒有錯,但如果您無法考慮其他解決方案或無法理解每個硬件為特定項(xiàng)目帶來的獨(dú)特優(yōu)勢,您將無法成長為專業(yè)工程師。
核心考慮
- 是否適合?
- 能運(yùn)行我所有的代碼嗎?
- 成本是多少?
- 是否容易獲得?
物理尺寸
根據(jù)設(shè)計的不同,MCU的尺寸可能是一個重要的因素。如果你正在開發(fā)一個可穿戴或便攜式設(shè)備,尺寸很可能是你的首要考慮因素。有時,預(yù)包裝的MCU太大,設(shè)計者需要采用板載芯片(MCU的硅芯片直接粘合在印刷電路板(PCB)上,而不是放在單獨(dú)的塑料包裝中)。另一方面,大型的機(jī)架式設(shè)備往往有足夠的空間容納任何尺寸的MCU,以完成工作。
給那些有興趣設(shè)計自己硬件的提示--包裝類型將在PCB的復(fù)雜性以及組裝的難易程度上起作用(特別是在原型設(shè)計階段)。如果你的原型將被手工組裝,任何鷗翼式封裝,如四平盒(QFP),都是最容易的。在QFP之后,四平包無引線(QFN)封裝仍然容易手工焊接。除非你是個焊接高手,否則一般最好不要手工組裝球柵陣列(BGA)!
ROM
只讀存儲器(ROM Read-only memory)是同一個系列的MCU的相當(dāng)大的區(qū)別因素,ROM大小與價格密切相關(guān)。根據(jù)一個產(chǎn)品系列中不同型號的數(shù)量,可能有多個MCU具有非常相似的外圍設(shè)備。這些MCU很可能具有相同的物理尺寸,但卻有明顯不同的內(nèi)存數(shù)量。如果你的應(yīng)用對成本很敏感,但所需的ROM是未知的,可以考慮以下方法:
- 選擇一個MCU系列,在兼容的空間里提供多種閃存尺寸。
- 從該系列中擁有最多ROM的MCU開始開發(fā)。這為增加功能提供了最大的靈活性。
- 在知道最終的image尺寸后,可以在開始大規(guī)模生產(chǎn)前選擇精確的MCU(具有較小的閃存尺寸)。
當(dāng)采取這種方法時,你需要確保為未來的功能留下足夠的空間,假設(shè)你的產(chǎn)品能夠接受現(xiàn)場更新的固件。另外,一定要仔細(xì)檢查不同型號的外設(shè)分配情況--針腳兼容并不總是意味著固件兼容!
所需的ROM數(shù)量差別很大,取決于有多少代碼需要加載到設(shè)備上。如果你一直在使用8位MCU,那么當(dāng)你轉(zhuǎn)到32位架構(gòu)(如ARM)時,你可能會感到非常驚訝。與8位架構(gòu)相比,在32位架構(gòu)上實(shí)現(xiàn)類似的程序?qū)⑿枰嗟拈W存空間。好消息是,閃存的尺寸已經(jīng)跟上了,所以幾乎總是可以找到一個具有足夠板載閃存的MCU來滿足你的應(yīng)用。將第三方庫拉到你的代碼庫中,通常在閃存方面是相當(dāng)昂貴的,所以如果你選擇走這條路,就要注意了。
RAM
片上隨機(jī)存取存儲器(RAM random access memory)的數(shù)量是另一個需要考慮的因素--它通常會跟隨特定設(shè)備的閃存數(shù)量。具有較大ROM的部件通常會有更多的RAM。需要大量RAM的幾個例子是:需要大型數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)處理、復(fù)雜的網(wǎng)絡(luò)堆棧、用于通信的深層緩沖區(qū)、GUI(尤其是那些需要幀緩沖區(qū)的GUI),以及任何運(yùn)行虛擬機(jī)的解釋語言(即MicroPython和Lua)。
例如,假設(shè)你的應(yīng)用程序需要一個高分辨率的顯示器。如果顯示器沒有自己的幀緩沖器的板載控制器,你可能已經(jīng)在外部RAM領(lǐng)域了。驅(qū)動這種類型的顯示器所需的緩沖區(qū)大小可能會超過MCU上的可用RAM。另一方面,如果你正在建立簡單的控制系統(tǒng),只有有限的連接和用戶界面能力,那么少量的RAM可能就是所需的全部。
另外,請注意FreeRTOS中的每個任務(wù)都需要它自己的堆棧(一般在Cortex-M端口上至少有512字節(jié)),所以如果需要大量的任務(wù),將很容易快速利用幾KB的RAM。
從固件工程師的角度來看,外部RAM似乎是免死金牌(誰不想把可用的RAM增加近一個數(shù)量級)--但所有這些功能都是有代價的。除非你的系統(tǒng)絕對需要它,否則最好避免在MCU的地址/數(shù)據(jù)總線上使用外部RAM。它需要額外的PCB空間,消耗更多的電力,并最終推高PCB和材料清單(BOM)的成本。由于長度調(diào)整的要求和所涉及的信號數(shù)量,在增加用于訪問外部RAM的外部高速并行總線時,PCB布局會相當(dāng)復(fù)雜。由于所有的高速信號,該設(shè)計也將更有可能發(fā)出EMI。盡管它提供了大量的空間,但外部RAM通常比板載RAM稍慢,這可能導(dǎo)致更復(fù)雜的鏈接器文件(如果某些功能有非常嚴(yán)格的時間限制)。其他值得考慮的因素包括正確設(shè)置RAM的時序參數(shù)和緩存一致性問題,如果你試圖通過使用數(shù)據(jù)緩存來加速對外部RAM的訪問(詳情請參考進(jìn)一步閱讀部分)。
盡管有這么多的缺點(diǎn),擁有外部RAM可以實(shí)現(xiàn)很多功能,比如在RAM中緩存整個固件鏡像以便升級的能力,功能豐富的GUI框架,復(fù)雜的網(wǎng)絡(luò)堆棧,以及復(fù)雜的信號處理技術(shù)。與其他任何要求一樣,需要做出權(quán)衡。
CPU時鐘
由于我們將討論限制在具有相同底層架構(gòu)的MCU上,因此具有更快的核心時鐘速率的MCU將比具有較慢時鐘速率的MCU更快地執(zhí)行同一組純軟件功能。請注意前面聲明中的關(guān)鍵詞 "純"--有時,有一些板載硬件外設(shè)可以對執(zhí)行速度產(chǎn)生巨大的影響,而這與CPU時鐘速率無關(guān)(例如Cortex-M4內(nèi)核上的硬件浮點(diǎn)和DSP功能)。
另一件需要注意的事情是設(shè)備的絕對最大時鐘速率與應(yīng)用的實(shí)際時鐘速率。例如,一些MCU的最大時鐘頻率與生成USB外設(shè)所需的內(nèi)部48MHz時鐘不兼容,因此,如果同時使用USB外設(shè),它就不能以最大速度使用。
中斷處理
在ARM Cortex-M系列中,中斷處理都非常相似。所有器件都包括一個帶有可重定位向量表的嵌套向量中斷控制器(NVIC)和一個外部中斷控制器(EXTI)。器件的具體考慮包括可用的外設(shè)中斷和如何將其映射到NVIC,以及如何將外部中斷復(fù)用到EXTI。
價格
根據(jù)不同的應(yīng)用,BOM的成本可能是一個重要的驅(qū)動因素,也可能幾乎不是考慮因素。一般來說,在大批量的應(yīng)用中,BOM成本會受到越來越多的關(guān)注。然而,對于小批量產(chǎn)品,通常明智的做法是更多地關(guān)注最大限度地減少產(chǎn)品的開發(fā)時間和努力,而不是盡可能地實(shí)現(xiàn)最低的BOM成本。通過專注于最小化小批量產(chǎn)品的工程努力和開發(fā)時間,該產(chǎn)品將更快地進(jìn)入市場。產(chǎn)品不僅能更快地開始產(chǎn)生收入,而且還能減少非經(jīng)常性工程(NRE)成本。更少的NRE導(dǎo)致正在開發(fā)的產(chǎn)品的投資回報率(ROI)更快。更快的投資回報率最終使經(jīng)理和首席執(zhí)行官們非常高興 在這種情況下,為每年銷售幾十種產(chǎn)品的BOM花費(fèi)幾美元而擔(dān)心--犧牲幾周或幾個月的開發(fā)努力--很少是一個明智的權(quán)衡。
可用性
初級工程師經(jīng)常忽略的一個方面是MCU的預(yù)期和保證可用性。一個零件在項(xiàng)目開始時可以購買并不意味著它在最終產(chǎn)品銷售的整個過程中都可以使用。在消費(fèi)類設(shè)備的情況下,這可能不是一個大問題。這是因?yàn)檫@些設(shè)備可能有極高的產(chǎn)量,但任何單一的修訂版只在有限的時間內(nèi)(從幾個月到一兩年)進(jìn)行生產(chǎn)。
將消費(fèi)電子的計劃淘汰思維與工業(yè)、電信或航空航天方面的東西進(jìn)行對比。在這些行業(yè)中,開發(fā)時間表可以用年來衡量,所需的支持期往往是十年或更長。這就是為什么零件的可用性是一個非?,F(xiàn)實(shí)的考慮。一定要調(diào)查制造商對可用性的保證,并根據(jù)他們的歷史、聲譽(yù)和對項(xiàng)目的風(fēng)險進(jìn)行權(quán)衡--在完成了80%的設(shè)計后,卻發(fā)現(xiàn)在預(yù)生產(chǎn)期間無法找到MCU,這不是一個令人愉快的經(jīng)歷!
外圍設(shè)備
與CPU的桌面世界相比,處理器本身通常是關(guān)注的中心,由于范圍的增加,選擇合適的MCU更為復(fù)雜。許多不同的硬件都包含在同一個芯片上,這使我們能夠針對速度、功率、CPU利用率或BOM成本優(yōu)化解決方案。在一個高度受限的設(shè)計中,所有這些因素都可能起作用,需要做出權(quán)衡。
本節(jié)將介紹一些基于Cortex-M的MCU上常見的硬件外設(shè),旨在對它們進(jìn)行極為簡要的介紹,目的是告訴你為什么每種類型的外設(shè)在設(shè)計中都會有幫助。
連接性
在當(dāng)今物聯(lián)網(wǎng)(IoT Internet of Things)不斷增長的連接生態(tài)系統(tǒng)中,MCU上的板載網(wǎng)絡(luò)功能對項(xiàng)目來說是一個福音。...只要有合適的固件來驅(qū)動它。重要的是要認(rèn)識到,擁有一個外設(shè)并不等同于擁有全部功能。例如,僅僅因?yàn)镸CU支持縮小的媒體獨(dú)立接口(RMII reduced media independent interface)和網(wǎng)絡(luò)中的物理層(PHY)并不意味著你可以立即獲得完整的TCP/IP協(xié)議棧--所有的固件功能都需要從某個地方來。植入設(shè)備的潛在連接性可以包括以太網(wǎng)、RMII、802.11(WiFi)、802.15.1(藍(lán)牙)和802.15.4(Zigbee、HART等等)。
當(dāng)涉及到無線通信時,事情就變得有點(diǎn)復(fù)雜了,因?yàn)楫a(chǎn)品將需要通過適當(dāng)機(jī)構(gòu)的批準(zhǔn)程序,這取決于地理位置的不同。預(yù)先認(rèn)證的射頻(RF)模塊可用于最大限度地減少開發(fā)適當(dāng)認(rèn)證的終端產(chǎn)品所需的努力和成本。
由于專門的PCB布局、監(jiān)管要求和復(fù)雜的網(wǎng)絡(luò)堆棧,促進(jìn)無線通信的板載MCU外設(shè)并不像它們對小批量產(chǎn)品首次出現(xiàn)時那樣有用。同樣,不要因?yàn)楹唵蔚刂付ㄒ粋€有硬件的部件而陷入虛假的成就感,因?yàn)闊o線通信堆棧可能非常復(fù)雜,無線認(rèn)證測試也很昂貴。
內(nèi)存保護(hù)單元
內(nèi)存保護(hù)單元(MPU Memory protection units )是用來確保代碼只訪問它被允許的RAM范圍。如果使用得當(dāng),MPU可以確保更高的系統(tǒng)穩(wěn)定性和更高的安全性,因?yàn)閼?yīng)用程序不太可能通過訪問它不應(yīng)該訪問的內(nèi)存而造成意外的后果。
硬件浮點(diǎn)單元
如果你的應(yīng)用要計算大量的浮點(diǎn)數(shù)字,那么硬件浮點(diǎn)單元(FPU hardware floating-point unit )會非常有用。直到過去十年左右,在大多數(shù)基于MCU的嵌入式系統(tǒng)中,浮點(diǎn)數(shù)字通常是最好避免的。更快的處理器的出現(xiàn)開始改變了這一點(diǎn)?,F(xiàn)在,F(xiàn)PU通常在硬件中實(shí)現(xiàn)。由于有了FPU,許多不同的應(yīng)用可以從使用浮點(diǎn)數(shù)學(xué)中受益,而不會產(chǎn)生通常與基于軟件的庫實(shí)現(xiàn)有關(guān)的CPU性能缺陷。
單精度(32位)FPU在Cortex-M4處理器上是可選的,而基于Cortex-M7的處理器增加了對雙精度(64位)浮點(diǎn)運(yùn)算的可選硬件支持。
數(shù)字信號處理功能
除了基于硬件的浮點(diǎn)支持所帶來的性能提高外,基于Cortex-M4和Cortex-M7的MCU還在硬件中嵌入了可選的數(shù)字信號處理(DSP digital signal processing)功能,這可以大大加快一些復(fù)雜的算法,并可能有助于減少固件工程師的編碼負(fù)擔(dān)。
直接內(nèi)存訪問通道
直接內(nèi)存訪問(DMA Direct memory access)在需要高帶寬或高度事件驅(qū)動代碼的各種情況下都非常有用。DMA控制器通常能夠與MCU外設(shè)以及RAM的不同部分互動。它們負(fù)責(zé)填充外設(shè)寄存器和RAM,完全不涉及CPU。這些自主傳輸可以通過大大減少中斷負(fù)荷和上下文切換來釋放大量的CPU時間。
關(guān)于DMA外設(shè)需要記住的一點(diǎn)是,所有通道并不總是映射到所有外設(shè)。某些通道的帶寬可能比其他通道高。這在需要多個高帶寬設(shè)備的系統(tǒng)中最為顯著。對于像這樣具有挑戰(zhàn)性的系統(tǒng),固件和硬件工程師必須一起工作,以確保硬件設(shè)計不會給固件帶來障礙。
通信接口
我們已經(jīng)介紹過相對于以太網(wǎng)和無線技術(shù)的外部網(wǎng)絡(luò)連接。有許多不同的通信接口,這些接口在傳統(tǒng)上與嵌入式設(shè)備有關(guān),通常作為MCU上的硬件外設(shè)提供。用于與板上和板下的傳感器和執(zhí)行器進(jìn)行通信的接口如下:
- IC間通信(I2C Inter-IC Communication)
- 串行外設(shè)接口(SPI Serial peripheral interface)
- 通用同步/異步接收發(fā)射器(USART Serial peripheral interface)
以下外設(shè)經(jīng)常被用于汽車和工業(yè)環(huán)境中的模塊間通信:
- USARTs
- 控制器區(qū)域網(wǎng)絡(luò)(CAN Controller area network )
- 本地互連網(wǎng)絡(luò)(LIN Local interconnect network)
硬件加密引擎
如果你的應(yīng)用需要外部連接,那么你的心思也應(yīng)該集中在安全方面。就像FPU使浮點(diǎn)運(yùn)算的CPU效率更高一樣,一些MCU上也有基于硬件的加密引擎,這將大大減少在公共網(wǎng)絡(luò)上安全傳輸數(shù)據(jù)所需的CPU負(fù)擔(dān)。
計時硬件
一個MCU上通常包括幾個不同的定時外設(shè)。這些外設(shè)本身通常至少包括輸入捕捉、輸出比較和脈沖寬度調(diào)制(PWM pulse width modulation)功能。一些器件還包括與正交編碼器接口的定時硬件。
集成模擬
數(shù)模轉(zhuǎn)換器(DAC Digital to Analog Converters )和模數(shù)轉(zhuǎn)換器(ADC Analog to Digital Converters)在連續(xù)變化的模擬值和該值的相關(guān)數(shù)字表示之間進(jìn)行轉(zhuǎn)換時使用。大多數(shù)情況下,這些類型的板載外設(shè)將比你發(fā)現(xiàn)的外部芯片的分辨率和頻率更低。然而,根據(jù)你的系統(tǒng)的要求,它們可能是非常有用的。另一個有用的外設(shè)是板載比較器,當(dāng)一個模擬值高于或低于一個給定的閾值時,它將向處理器發(fā)出信號。
一些更專業(yè)的器件(例如賽普拉斯PSoC)包括完全可重新配置的模擬外設(shè)(包括運(yùn)算放大器、DAC和ADC)以及靈活的數(shù)字外設(shè),靈活地將非常大的功能集集成到一個信號芯片中。Analog Devices和Maxim提供一些更奇特的混合信號MCU,這些MCU傾向于將特定應(yīng)用的元件與MCU集成在同一芯片上,使特定終端產(chǎn)品的開發(fā)更加容易。你可以找到非常廣泛的特定應(yīng)用MCU,其目標(biāo)是工業(yè)過程控制、汽車距離傳感、物聯(lián)網(wǎng)傳感器到電視遙控應(yīng)用。
如果有一個流行的混合信號問題的用例,很可能也有一個完全集成的硅片,將MCU與大部分所需的模擬前端集成在一起,以解決大部分的問題。那么問題就變成了平衡BOM成本、詳細(xì)規(guī)格、尺寸、開發(fā)時間和長期采購風(fēng)險的問題。
專用的觸摸接口
由于觸摸接口的日益普及,現(xiàn)在一些MCU上已經(jīng)包含了觸摸控制器的完整實(shí)現(xiàn)。這可以大大減少擁有完整功能和強(qiáng)大的觸摸接口實(shí)現(xiàn)所需的專業(yè)知識和努力。
顯示界面
復(fù)雜的顯示接口,甚至是圖形加速,通常出現(xiàn)在引腳數(shù)更多的高性能器件中,變得相當(dāng)普遍。期待在大量的部件上發(fā)現(xiàn)并行的LCD/TFT接口(例如6800和8080),MIPI DSI等接口能夠驅(qū)動廉價、高分辨率的顯示器到只有幾行的顯示器。硬件協(xié)議轉(zhuǎn)換IC可以用來適應(yīng)一些不同的顯示標(biāo)準(zhǔn),如LVDS和HDMI。現(xiàn)在的MCU能夠提供豐富的用戶體驗(yàn),增加了硬件加速和高效編寫的中間件和驅(qū)動程序。CPU負(fù)載也是完全可以承受的。
外部存儲器支持
在較高引腳數(shù)的封裝中,預(yù)計會發(fā)現(xiàn)對靜態(tài)隨機(jī)存取存儲器(SRAM static random access memory)的支持。同步動態(tài)隨機(jī)存取存儲器(SDRAM Synchronous dynamic random access memory )支持,板載控制器負(fù)責(zé)處理嚴(yán)格的時間要求和刷新周期,可以在更高性能的設(shè)備中找到。以性能為目標(biāo)的設(shè)備一般會支持四路SPI。通常情況下,外部RAM,甚至是四SPI設(shè)備,可以被內(nèi)存映射,使用起來與內(nèi)部存儲類似,盡管會有性能上的影響。許多設(shè)備也有多媒MultiMediaCard )和安全數(shù)字卡(SD卡 MultiMediaCard)控制器,因此,商品消費(fèi)級可移動存儲很容易被添加。
實(shí)時時鐘
一些設(shè)備上也有硬件日歷;所需的只是一個32kHz的晶體和一個備用電源,如CR2032原生鋰電池。一般還提供這種能力的東西是有限的電池備份的RAM。
音頻支持
通過Inter-IC Sound (I2S)的高保真音頻支持通常是可用的。期待發(fā)現(xiàn)連接到I2S外設(shè)的DMA通道,以最大限度地減少在這些總線上為數(shù)據(jù)饑渴的DAC供貨和從ADC收集數(shù)據(jù)所需的CPU干預(yù)量。
功率消耗
十多年來,低功耗MCU一直是一種趨勢。然而,由于市場上出現(xiàn)了大量基于電池供電的物聯(lián)網(wǎng)設(shè)備,歷史上專門的使用案例和有限的選擇(如16位MSP430)現(xiàn)在已經(jīng)成為主流?,F(xiàn)在,有了完整的32位MCU,它們可以在低速深度睡眠和高時鐘速率、數(shù)據(jù)緊縮的運(yùn)行模式之間快速循環(huán)。
電源效率
這聽起來很簡單,但確保某樣?xùn)|西少耗電的一個相當(dāng)好的方法是將其關(guān)閉(不要笑--由于各種漏電流的存在,這可能出乎意料地復(fù)雜,取決于所涉及的部件?。?。如果有幾十個外設(shè)的復(fù)雜的MCU有希望實(shí)現(xiàn)節(jié)能,就需要有一種方法來關(guān)閉任何不需要的功能,以盡量減少浪費(fèi)的電力。這通常是通過關(guān)閉不使用的外設(shè)的時鐘和確?;贑MOS的I/O引腳不浮動來實(shí)現(xiàn)的(記住,CMOS設(shè)備中的轉(zhuǎn)換是最耗電的)。
數(shù)據(jù)表中常見的另一個規(guī)格是每MHz的CPU時鐘消耗多少功率--通常以μA/MHz為單位。如果每個喚醒期的處理量是相當(dāng)恒定的,這就提供了另一個衡量標(biāo)準(zhǔn)來比較不同的MCU型號。
低功耗模式
針對低功率應(yīng)用的設(shè)備通常會有一些不同級別的關(guān)機(jī)狀態(tài)可供選擇。這些狀態(tài)將允許程序員在電流消耗、可用功能(如保持RAM內(nèi)容完整和一些外設(shè)開啟)、可用于觸發(fā)喚醒事件的中斷數(shù)量和喚醒時間之間進(jìn)行權(quán)衡。值得慶幸的是,許多低功耗的物聯(lián)網(wǎng)應(yīng)用的操作范圍相當(dāng)有限,所以有時某個MCU的新功能的組合將被證明是非常適合特定的應(yīng)用。
喚醒時間
如果一個設(shè)備具有驚人的低關(guān)機(jī)電流,但需要異常長的時間來喚醒并使自己進(jìn)入可用的運(yùn)行狀態(tài),那么它可能不是需要相當(dāng)頻繁喚醒的應(yīng)用的最佳選擇,因?yàn)榇罅康臅r間將被用于使系統(tǒng)啟動和運(yùn)行,而不是讓它執(zhí)行必要的處理,然后再回到睡眠。
電源電壓
較低的電源電壓通常會導(dǎo)致較低的電流消耗。根據(jù)設(shè)計,可以在消除電源調(diào)節(jié)電路(由于效率低于100%而消耗電流)和擴(kuò)大特定電池單元的可用工作電壓范圍之間進(jìn)行權(quán)衡。MCU的電壓要求(以及任何輔助電路)將是調(diào)節(jié)方面有多少靈活性的驅(qū)動因素。另外,要注意最大的時鐘通常也會隨著電源電壓的變化而變化,所以不要期望能夠以最大的指定頻率和盡可能低的電源電壓來驅(qū)動CPU。
項(xiàng)目中期遷移MCU
偶爾,100%的項(xiàng)目需求不會在前期就被知曉,或者每個人都可能沒有100%的信心在第一天就確切地解決每個細(xì)節(jié)問題。如果你碰巧幸運(yùn)地知道有高度的不確定性,那么最好的辦法是為它做計劃,而不是被嚇一跳。這里有幾個領(lǐng)域,選擇一個屬于更大的家族或生態(tài)系統(tǒng)的MCU可以幫助減輕與項(xiàng)目不確定性相關(guān)的一些風(fēng)險。
引腳兼容性的重要性
在計劃潛在的MCU轉(zhuǎn)變時,如果可能的話,提前確定引腳兼容的替代MCU。例如,恩智浦LPC1850的部件與LPC 4350 MCU引腳兼容。STM32器件在一個系列(和封裝)中都是引腳兼容的,但偶爾也會與其他系列(例如STM32M4和STM32M7)幾乎引腳兼容。意法半導(dǎo)體定期發(fā)布遷移指南,供那些已經(jīng)超越了一個MCU系列并需要更多能力的工程師使用。如果事先選擇了一些可能的候選產(chǎn)品和替代產(chǎn)品,那么PCB上一些簡單的跳線可能會促進(jìn)具有明顯不同性能(和成本)的不同MCU之間的遷移,有助于消除項(xiàng)目中期所需的PCB返工時間。
周邊相似性
在一個特定的系列中,大多數(shù)MCU將繼承相同的外圍IP。芯片供應(yīng)商不一定在每次創(chuàng)建新的MCU系列時都會從頭開始重新設(shè)計外設(shè),因此,屬于某個供應(yīng)商的外設(shè)的寄存器映射和行為通常會有大量的重疊現(xiàn)象。通常情況下,如果你的應(yīng)用程序只使用最基本的外設(shè)功能的子集,那么你可能會幸運(yùn)地使用基本相同的驅(qū)動程序,即使供應(yīng)商決定在MCU系列之間大幅改變其API。具有諷刺意味的是,有時原始硬件被證明比它上面的抽象層更具有一致性。
MCU系列的概念
許多芯片供應(yīng)商都有器件家族的概念,意法半導(dǎo)體(STM)也不例外--數(shù)據(jù)手冊通常是為整個器件家族編寫的。STM系列器件之間最明顯的差別通常是RAM/ROM和封裝尺寸。然而,更多的外設(shè)也被添加到更有能力的器件中--例如,更大的封裝將開始包括并行RAM控制器。具有更多RAM/ROM的器件將包括能力更強(qiáng)的定時器外設(shè)、更多的通信外設(shè)或特定領(lǐng)域的外設(shè),如加密模塊。
在一個給定的設(shè)備系列中的設(shè)備之間移動應(yīng)該是很容易做到的,所以建議從該系列的一端開始(通常建議從高處開始),看看項(xiàng)目的發(fā)展。如果范圍內(nèi)的蠕變保持在最低限度,那么在所有的主要功能開發(fā)完成后,就有可能無痛地降低MCU的等級,從而節(jié)省一些BOM成本。
開發(fā)板的考慮
開發(fā)板是工程師在項(xiàng)目的早期開發(fā)階段使用的任何硬件。開發(fā)板不僅僅適用于MCU;它們對許多不同類型的硬件都很有用--從運(yùn)算放大器到現(xiàn)場可編程門陣列(FPGA field-programmable gat arrays)的任何東西。
單片機(jī)開發(fā)板應(yīng)提供幾個關(guān)鍵功能:
- 輔助電路,為MCU供電和運(yùn)行所需。
- MCU編程并通信
- 方便與外部電路連接的連接器
- 連接外設(shè)。
開發(fā)平臺及其重要性
開發(fā)平臺是一個產(chǎn)品的生態(tài)系統(tǒng),允許跨多個供應(yīng)商的高度抽象。平臺的主要重點(diǎn)是以最小的努力提供大量的功能,當(dāng)主要目的是盡快創(chuàng)建原型時,這是很好的。
為了在多個供應(yīng)商之間提供大量的功能,標(biāo)準(zhǔn)化的接口、易用性和靈活性往往會被強(qiáng)調(diào)。有了這些價值,平臺本身就是焦點(diǎn)(因?yàn)樗鼞?yīng)該是),而特定設(shè)備的個別差異化特征往往在很大程度上沒有被注意到,也就是說,除非你對專門的編碼感興趣,這需要額外的時間,最終要求你把更多的注意力放在為平臺開發(fā)上,而不是與平臺一起。
生態(tài)系統(tǒng)圍繞著平臺發(fā)展,溫和地引導(dǎo)平臺用戶使用工具、工作流程、最小公分母功能集和可用硬件。如果目標(biāo)是在盡可能短的時間內(nèi)產(chǎn)生概念驗(yàn)證,這一切都很好。然而,如果要使用平臺方法找到一個長期的開發(fā)和值得生產(chǎn)的解決方案,該平臺可能需要高質(zhì)量、極其完善和穩(wěn)定。這通常意味著使用基于多個供應(yīng)商提供的工業(yè)標(biāo)準(zhǔn)的平臺(如SMARC、QSeven和COM Express)。
通常情況下,平臺特定的功能是如此重要,以至于平臺代碼將簡單地虛擬化接口以使它們更容易被訪問,通常要付出非常大的代價(也就是說,對PWM或SPI進(jìn)行比特化處理,以便將它們分配給特定的預(yù)定引腳)。因此,如果你選擇使用一個平臺來評估硬件(或具體地說,一個MCU),你應(yīng)該意識到你可能是在評估平臺和它在特定硬件上的實(shí)現(xiàn),而不是硬件本身。
評估套件(eval kit)
評估套件(eval kit)在涉及到標(biāo)準(zhǔn)化腳印與關(guān)注硬件本身時處于另一個極端。評估套件通常配備了最大的、功能最豐富的MCU模型,其唯一目的是為了展示該硬件。這意味著它們通常不會在不同的目標(biāo)MCU之間共享腳印或連接器(參考下圖),因?yàn)槊總€MCU都有不同的主要功能,并且針對不同的市場。評估板將有盡可能多的外設(shè)被分解成實(shí)際的連接器(如串行、以太網(wǎng)、SD卡、CAN總線和多個USB)。它們通常還包括一系列的外圍硬件,如RAM、eMMC、按鈕、滑塊、電位器、顯示器和驅(qū)動揚(yáng)聲器的音頻編解碼器。他們幾乎總是將所有有趣的MCU引腳分解到容易訪問的頭端,因此開發(fā)人員能夠快速嘗試他們能夠夢想的任何特定硬件配置。制造商通常也會在評估套件板上展示他們的其他非MCU硅產(chǎn)品,以努力推動與他們自己的產(chǎn)品有關(guān)的更多銷售:
為了最好地展示設(shè)備的能力,評估套件還將提供大量的工作示例代碼,使工程師能夠與所有的外設(shè)進(jìn)行互動。與一般基于平臺的實(shí)現(xiàn)方式不同,這些例子是為展示待評估的目標(biāo)設(shè)備的獨(dú)特差異化功能而定制的。在本章的第一部分,我們討論了根據(jù)具體的使用情況來選擇硬件。如果你正在為設(shè)計中具有挑戰(zhàn)性的方面尋求具體的解決方案,那么與必須自己從頭開始實(shí)現(xiàn)所有這些功能相比,有指導(dǎo)性的例子來演示MCU的關(guān)鍵差異化方面的工作代碼的重要性可以大大節(jié)省時間(和開眼界)。
所有這些功能都是有代價的--完整的評估套件通常需要幾百美元。然而,如果你的目標(biāo)是快速評估有特定目的的潛在MCU,它們可以通過節(jié)省工程時間和減少風(fēng)險來快速地支付自己的費(fèi)用。
低成本示范板
近年來,低成本的示范板已經(jīng)真正進(jìn)入了他們的視野。價格已經(jīng)大幅下降;制造商有時會以與放置在上面的裸體IC相同的價格出售示范板(有時,它們實(shí)際上比購買單個IC的價格更低!)。與硬件平臺不同,這些板子往往會有類似的腳印,但不一定有相同的連接器或引腳。
最近,更多模糊了平臺和示范板之間界限的低成本示范板(也叫演示板)已經(jīng)出現(xiàn)在市場上。由于Arduino?無處不在,大多數(shù)低成本的板子至少會有一組Arduino引腳兼容的接頭。然而,是否有兼容的針座和擁有完全擁抱生態(tài)系統(tǒng)的開發(fā)板是非常不同的事情。演示板可能沒有任何軟件來配合這些針座;僅僅因?yàn)橛布嬖诓⑶铱梢圆迦氚遄?,并不自動意味著你會得到目?biāo)MCU的兼容庫來驅(qū)動硬件。這并不意味著它們是不兼容的,但要讓一些東西啟動和運(yùn)行所需的努力要比簡單地插入板子和跟著 "hello world "演示走要大得多。
一些制造商也在創(chuàng)建他們自己的標(biāo)準(zhǔn)化頭,這些頭在演示板之間是通用的,這在不同產(chǎn)品系列之間遷移時至少是有幫助的(但顯然只限于該制造商)。ST Nucleo和NXP Freedom的標(biāo)準(zhǔn)化頭文件就是一些例子。為了使用戶更加方便,這些板子通常也會具有mBed兼容性。
STM32產(chǎn)品系列
在過去的幾年里,STM已經(jīng)開發(fā)了相當(dāng)廣泛的MCU。在這里,我們將討論該產(chǎn)品組合中的幾個主要部分是如何相對于本章MCU考慮因素部分所討論的。大多數(shù)其他供應(yīng)商也將他們的產(chǎn)品分為主要部分,這往往會使選擇過程更容易一些。
主流產(chǎn)品
STM32產(chǎn)品線從2007年的STM32F1開始,這是一款基于Cortex-M3的MCU。該產(chǎn)品線的這一部分旨在為大多數(shù)大批量應(yīng)用提供服務(wù),在這些應(yīng)用中,成本和性能必須得到平衡,而復(fù)雜的應(yīng)用卻很少。該產(chǎn)品線的STM32F0和STM32G0部分是基于Cortex-M0和Cortex-M0+的器件,主要面向低成本應(yīng)用。最初的STM32F1基于Cortex-M3,具有非常廣泛的功能集,但與其他器件相比,其性能已經(jīng)開始顯老。
STM32F3是STM在提供集成的、更高精度的模擬外設(shè)方面的首次嘗試(其他供應(yīng)商提供比STM更高精度的模擬元件);然而,該系列沒有提供真正的高性能模擬。它包括一個16位sigma delta ADC,但有效位數(shù)(ENOB)據(jù)說只有14位,比STM的12位逐次逼近(SAR)ADC外設(shè)稍好,而這是最常包括的。較新的基于Cortex-M4+的STM32G4系列擁有最多的模擬外設(shè),包括許多實(shí)例的可編程增益運(yùn)算放大器(PGA)、DAC、ADC和幾個比較器,但在撰寫本文時,還沒有集成的高精度ADC。
到2020年,STM32G0和STM32G4系列將增加其產(chǎn)品的廣度--它們都是較新的產(chǎn)品線,STM可能會開始用更多的器件來填補(bǔ)這些產(chǎn)品線。
高性能
STM的高性能MCU始于基于Cortex-M4的STM32F4。Cortex-M4與Cortex-M3非常相似,但它包括(可選)硬件32位FPU和DSP指令,這在所有STM3F4器件上都有。只要有所需的RAM(通常是MCU的外部),高性能系列中的所有器件都能夠舒適地驅(qū)動無控制器顯示器上非常有吸引力的GUI。各種硬件外設(shè)提供的加速(如MIPI顯示串行接口(DSI),通過FMC和DMA的內(nèi)存?zhèn)鬏?,以及使用Chrom-Adaptive Real-Time(Chrom-ART)加速器的一些基本圖形加速),使得與顯示器通信所涉及的相當(dāng)多的工作可以卸載到各種外設(shè)上,以便CPU可以花時間執(zhí)行其他任務(wù)。
下面是對該家族兩個主要成員和一些顯著特征的快速分解:
這類MCU可以被認(rèn)為是交叉型MCU。它們的功能足夠強(qiáng)大,可以用于一些傳統(tǒng)上保留給完整的CPU的應(yīng)用任務(wù),但它們?nèi)匀痪哂蠱CU的易用性。
異構(gòu)多核
2019年,意法半導(dǎo)體推出了STM32MP系列,這是該公司首次進(jìn)入應(yīng)用處理器領(lǐng)域。這個系列提供650MHz的單核或雙核Cortex-A7,以及運(yùn)行在209MHz的單核Cortex-M4。意法半導(dǎo)體公司的這些解決方案似乎是針對大批量、低成本的市場,專注于較少的內(nèi)核數(shù)和需要較少PCB層的封裝,使用較少的制造技術(shù)。
從軟件角度看,意法半導(dǎo)體的MCU產(chǎn)品與新的微處理器單元(MPU)之間的主要區(qū)別是,由于MPU有內(nèi)存管理單元(MMU),它們能夠通過主線Linux內(nèi)核運(yùn)行完整的操作系統(tǒng),這就開啟了完全不同的開源軟件生態(tài)系統(tǒng)(你不需要親自編寫)。
異構(gòu)多核方法允許設(shè)計者將設(shè)計的一部分分割開來,在它們最適合的領(lǐng)域中解決。例如,一個具有GUI和網(wǎng)絡(luò)功能的專用過程控制器可以使用Cortex-A7來利用Linux并獲得Qt框架和復(fù)雜的網(wǎng)絡(luò)堆棧,同時使用Cortex-M4來處理所有的實(shí)時控制方面的問題。
μClinux的實(shí)現(xiàn)已經(jīng)在STM32F4和STM32F7 MCU上使用多年,但由于這些器件上缺乏MMU,通常會有相當(dāng)大的性能損失。
當(dāng)然,隨著功能的增加,復(fù)雜性也隨之增加。與MCU不同,STM32MP系列沒有辦法集成外部RAM,所以要準(zhǔn)備好一些相當(dāng)復(fù)雜的PCB布局(與獨(dú)立的MCU解決方案相比)。
低功率
意法半導(dǎo)體的低功率產(chǎn)品線主要針對電池供電的設(shè)備。下面是所有不同家族成員之間的快速比較:
根據(jù)特定物聯(lián)網(wǎng)應(yīng)用的具體工作負(fù)荷,使用低功耗的32位MCU可能是有意義的,比如前述表格中的那些。然而,對于非常簡單的應(yīng)用,也應(yīng)考慮使用低功耗的8位和16位MCU。
無線
STM32WB實(shí)現(xiàn)了一個帶有專用Cortex-M0+的Cortex-M4,以運(yùn)行藍(lán)牙BLE協(xié)議棧。該系列提供了大量的集成,從大型閃存和RAM到混合信號模擬外設(shè),包括觸摸傳感器和小段LCD。各種安全功能,如加密算法和隨機(jī)數(shù)字發(fā)生器,也都存在。由于使用該系列器件的產(chǎn)品需要FCC認(rèn)證,因此它們對大批量應(yīng)用最有意義。
如何選擇開發(fā)板
STM是我們評估的唯一制造商,以便將例子限制在容易消化的范圍內(nèi)。在實(shí)際的產(chǎn)品工程工作中,設(shè)計者有必要對所有可能的供應(yīng)商進(jìn)行重新審視。雖然每個人都有自己喜歡的方法來完成跨供應(yīng)商的搜索,但一個簡單的方法是使用分銷商的網(wǎng)站。
由于有精心策劃的面向原型設(shè)計的分銷商網(wǎng)站(如Digikey和Mouser),工程師能夠在許多不同的供應(yīng)商之間進(jìn)行參數(shù)搜索和比較。這種方法的一個缺點(diǎn)是,搜索僅限于特定的分銷商所經(jīng)營的任何產(chǎn)品系列。另一個潛在的缺點(diǎn)是,參數(shù)化搜索結(jié)果受制于分銷商的數(shù)據(jù)輸入準(zhǔn)確性和分類。直接使用分銷商網(wǎng)站的好處是,許多不同的供應(yīng)商都在一個地方,可以立即檢查產(chǎn)品的可用性,而且半真實(shí)世界的價格很容易看到和過濾。
以原型為導(dǎo)向的分銷商的定價被認(rèn)為是半真實(shí)的,因?yàn)橥ǔG闆r下,在產(chǎn)品進(jìn)入全面生產(chǎn)后,使用以數(shù)量為導(dǎo)向的分銷商或直接向供應(yīng)商購買大批量的產(chǎn)品會更經(jīng)濟(jì)。
要求
到此為止,我們已經(jīng)涵蓋了在理論層面上為項(xiàng)目選擇MCU的所有考慮。現(xiàn)在,是時候?qū)⑺羞@些付諸行動并選擇將用于所有實(shí)際操作練習(xí)的MCU了。需要記住的幾件事如下:
- 我們將選擇一個開發(fā)板和MCU--因此,一些要求將針對開發(fā)板,如果你正在制作一個需要長期生產(chǎn)的產(chǎn)品,這通常不是一個好主意。
- 要求將是針對這本書的--使某些東西成為一本書的好選擇的要求可能不會轉(zhuǎn)化為你正在進(jìn)行的項(xiàng)目。很明顯,你的選擇標(biāo)準(zhǔn)將為你的項(xiàng)目量身定做。
必須具備的條件,也就是要求,如下所示:
- 基于STM32 Cortex-M的CPU。
- 內(nèi)存保護(hù)單元(MPU)。
- 顯示狀態(tài)的可見手段。
- 相對較低的成本(如<50美元)。
好的方面,也就是需要的條件,如下:
- 多功能性: 如果開發(fā)板能與其他硬件一起使用就更好了。
- 通過USB的虛擬通信可作為調(diào)試端口。
- 多核心。
要求的理由
我們將把搜索范圍限制在STM32部件上,因?yàn)檫@就是我們在本書中使用的例子系列。在第15章,F(xiàn)reeRTOS內(nèi)存管理中,我們將介紹如何防止任務(wù)訪問他們不應(yīng)該訪問的內(nèi)存,這將要求我們利用具有內(nèi)存保護(hù)單元的部件。本書的目標(biāo)之一是盡可能保持硬件交互的可訪問性,這導(dǎo)致了下兩個要求:狀態(tài)顯示和成本。
一些顯示狀態(tài)的手段可能會轉(zhuǎn)化為簡單的LED(最好是多個)。應(yīng)該有某種形式的反饋,使程序員能夠一目了然地看到正在發(fā)生的事情,以確保代碼確實(shí)在做什么。在真正的嵌入式環(huán)境中,這可能會采取額外儀器的形式,如示波器、邏輯分析儀和DMMs。為了使盡可能多的人能夠使用這些工具,我們將明確地避免使用這些工具。因此,我們不是僅僅依靠外部工具和調(diào)試器,而是要尋找板載指標(biāo)。
這些好的東西并不是硬性要求,但它們是系統(tǒng)在完美世界中所擁有的理想品質(zhì)。理想情況下,目標(biāo)開發(fā)板也將是更大的硬件生態(tài)系統(tǒng)的一部分,這將使人們能夠使用他們可能已經(jīng)擁有的現(xiàn)有硬件來進(jìn)一步探索本書的概念。連接到目標(biāo)MCU上的USB端口也是很好的選擇--這樣的話,我們就可以使用一個虛擬的通訊端口來輸出調(diào)試,而不是只使用調(diào)試器。最后,在第16章 "多處理器和多核系統(tǒng) "中,我們將看一下關(guān)于用多CPU開發(fā)板的簡要介紹和一些提示。盡管這個主題值得自己寫一本書(已經(jīng)有很多人從架構(gòu)的角度寫了),但如果有一些我們可以在實(shí)際硬件上付諸行動的代碼就更好了。
選擇開發(fā)板
下面是一個例子,說明我們使用美國一個受歡迎的分銷商DigiKey來縮小搜索范圍的步驟:
- 在DigiKey的主頁上,https://www.digikey.com/,我們開始搜索STM32,并從選擇中選擇MCU和DSP的評估板。
- 我們只對目前可用的零件感興趣(不是過期的)。
- 開發(fā)套件也必須是有庫存的。
下面是結(jié)果:
根據(jù)我們對STM32產(chǎn)品系列的了解,我們選擇了帶有內(nèi)存保護(hù)單元的MCU。目前,這個標(biāo)準(zhǔn)提供了73個可用的開發(fā)平臺,范圍從9-550美元不等,范圍相當(dāng)大。我們已經(jīng)滿足了大部分的硬性要求--除了板載指示器,它不可能出現(xiàn)在搜索中。讓我們看看我們是否可以通過包括一些愿望來縮小這個領(lǐng)域。
意法半導(dǎo)體將他們的微處理器稱為微處理器單元(MPU),這就造成了一個過載的術(shù)語,而且在談?wù)搩?nèi)存保護(hù)單元(MPU)時也有一些歧義。在瀏覽網(wǎng)站和文檔時,你可能會碰到這個縮寫的兩種用法。
如果我們正在尋找多核,那么STM32H7和STM32MP1系列是有效的選擇。事實(shí)證明,有一些帶有這些部件的發(fā)現(xiàn)板,其成本相對合理(就其包含的內(nèi)容而言)為80美元,但我們最好是尋找接近20美元范圍的硬件--讓我們不要讓欲望干擾硬性要求!"!
把重點(diǎn)縮小到不違反<50美元定價要求的處理器,我們就可以看到STM Nucleo系列的開發(fā)板。所有的Nucleo系列都是與mBed兼容的,如果我們選擇使用它,就可以使用整個生態(tài)系統(tǒng)。STM對Nucleo的另一個認(rèn)識是,支持現(xiàn)有的流行平臺是一個好主意--因此,除了將幾乎所有更相關(guān)的MCU引腳放在一個專有的接頭上之外,Nucleo板還提供各種Arduino風(fēng)格的接頭。所有的Nucleo板還包括一個ST-Link板載編程器,其中一些可以重新刷新,看起來與SEGGER J-Link相同,這是一個巨大的優(yōu)勢,將消除購買一個額外硬件的需要:
我們的目標(biāo)平臺將是Nucleo-F767ZI,它集成了最廣泛的連接,包括最靈活的調(diào)試。我們將在第6章 "實(shí)時系統(tǒng)的調(diào)試工具 "中介紹重新刷新板載ST-Link以使用SEGGER J-Link固件。由于不需要配置額外的接口,三個用戶LED燈將使交流固件狀態(tài)反饋?zhàn)兊梅浅:唵?。?nèi)置的以太網(wǎng)允許開發(fā)網(wǎng)絡(luò)化的應(yīng)用。對于我們的目標(biāo)平臺來說,如果有多核MCU是很方便的,但沒有一個符合我們成本要求的MCU:文章來源:http://www.zghlxwxcb.cn/news/detail-482246.html
盡管在選擇MCU或開發(fā)板時有很多選擇,但這不需要是令人生畏的過程,特別是當(dāng)你知道你的要求和要做的權(quán)衡時。文章來源地址http://www.zghlxwxcb.cn/news/detail-482246.html
到了這里,關(guān)于微控制器實(shí)時操作系統(tǒng)實(shí)踐4選擇正確的MCU的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!