
拿到一顆新項目需求單我第一件事不是打開淘寶搜開發(fā)板也不是翻ST官網(wǎng)的選型手冊而是先把需求拆成一張“選擇題”。說實話做了這么多年嵌入式見到的MCU選型翻車案例遠(yuǎn)比芯片本身的問題多。要么是算力不夠后期各種優(yōu)化救火要么是外設(shè)資源差一路腳導(dǎo)致改板要么是選了個冷門封裝結(jié)果貼片廠排產(chǎn)都費勁。MCU選型這事表面看是選芯片本質(zhì)上是把項目需求翻譯成芯片參數(shù)的能力。這篇文章我打算用STM32這條產(chǎn)品線當(dāng)主線把選型這件事從需求拆解到型號落地的完整過程捋一遍。不管你是剛開始接觸單片機的學(xué)生還是在公司里被硬件同事問到“這個項目用哪顆片子”的軟件工程師或者是獨立做產(chǎn)品的創(chuàng)客這篇都適合你。我會從實際項目里最常見的坑出發(fā)講清楚STM32各系列的真實差異、怎么算資源、怎么避開封裝和外設(shè)的暗坑最后給出一份可以直接拿去評審用的選型檢查清單。1. 選MCU最怕的不是性能不夠而是需求根本沒拆清楚我見過不少項目硬件同事上來就拍板“用F103吧我們一直用的”。結(jié)果做到中途發(fā)現(xiàn)需要兩個CAN、三路UART做Modbus網(wǎng)關(guān)F103的資源捉襟見肘又或者項目明明要做低功耗便攜設(shè)備結(jié)果選了顆沒有低功耗模式的芯片只能靠軟件硬扛。芯片選型翻車九成不是因為不懂芯片而是因為需求清單壓根沒列完整。1.1 選型失誤的隱性代價改板、延期、成本失控很多人覺得選型錯了就換個芯片唄這想法在開發(fā)板驗證階段沒問題但到了產(chǎn)品階段一顆芯片的更換往往意味著原理圖重畫、PCB重排、軟件驅(qū)動重寫、EMC測試重跑。我見過最夸張的一個例子某團(tuán)隊用一顆帶USB接口的MCU做了量產(chǎn)設(shè)計結(jié)果USB控制器對晶振精度要求高用的無源晶振偏差大導(dǎo)致批量性USB枚舉失敗最后全盤換方案。這類問題的根子不在晶振而在選型時沒有人把“USB外設(shè)對時鐘精度的要求”寫進(jìn)需求清單。選型失誤的隱性代價通常包括硬件返工引腳不兼容、封裝不合適、電源域不符合要求只能重新畫板軟件返工換了芯片等于換了寄存器、換了啟動文件、換了外設(shè)庫已經(jīng)寫好并驗證過的驅(qū)動全廢認(rèn)證重跑消費電子要做EMC、家電要做3C重新送樣檢測的周期是按周算的供應(yīng)鏈風(fēng)險選了個供貨緊張的型號采購周期從8周變成26周項目被迫停擺。1.2 為什么先用STM32推演選型邏輯是合理的市面上MCU廠商很多瑞薩、NXP、Microchip、TI、國民技術(shù)等等各有優(yōu)勢但STM32是我見過產(chǎn)品線最完整、資料最豐富、生態(tài)最成熟的一個系列。從8塊錢以內(nèi)量大的F0系列到跑Linux不夠跑RTOS富余的H7系列中間各個檔位的產(chǎn)品都有對應(yīng)的型號。更關(guān)鍵的是ST的CubeMX工具和HAL庫幾乎把外設(shè)初始化的門檻壓到了最低很多外設(shè)的配置直接圖形化點選就能生成代碼。這不代表STM32永遠(yuǎn)是最佳選擇但它非常適合用來建立“選型坐標(biāo)系”。一旦你搞懂了STM32是怎么按內(nèi)核、主頻、存儲、外設(shè)來劃分產(chǎn)品線的再看其他廠商的選型手冊會輕松很多因為底層邏輯都類似。2. 選型先鎖需求從應(yīng)用場景反推MCU參數(shù)清單我不主張拿著芯片手冊去對需求而是反過來先把項目需求拆成一張參數(shù)清單再拿著清單去篩芯片。這張清單要在一開始就鎖死否則選型評審的時候大家各說各話最后只能靠拍腦袋。2.1 算力需求主頻、內(nèi)核架構(gòu)與數(shù)學(xué)運算單元算力需求是第一道篩選條件。你需要問自己幾個問題項目里有沒有音頻處理、FFT頻譜分析、PID控制環(huán)路、圖像采集這類對計算量有硬性要求的任務(wù)STM32的產(chǎn)品線按內(nèi)核劃分大致是內(nèi)核主頻范圍代表系列適合場景Cortex-M0/M016-64MHzF0, G0, L0傳感器采集、簡單控制、I/O擴展Cortex-M372MHzF1, L1工業(yè)控制、電機驅(qū)動、通用控制Cortex-M4F100-180MHzF3, F4, G4, L4帶DSP/FPU需求、音頻、復(fù)雜控制Cortex-M7480MHzF7, H7人機交互、機器視覺、邊緣計算很多初學(xué)者看到這里會有一個誤區(qū)主頻越高越好。實際上主頻高的芯片往往功耗大、封裝大、價格高而且布線的EMC壓力也更大。正確做法是算一下你的控制環(huán)路或者算法在最壞情況下需要多少MIPS然后留出1.5到2倍的裕量。比如一個典型的FOC電機控制環(huán)路電流環(huán)頻率一般跑20kHz每個周期要做Clark變換、Park變換、PI調(diào)節(jié)、SVPWM計算。用Cortex-M4F帶FPU的G4去跑單環(huán)計算時間大概是十幾微秒20kHz周期里占比不到30%非常從容但如果你用沒有FPU的F1去跑同樣代碼經(jīng)過編譯器優(yōu)化可能要花五六倍的時間環(huán)路響應(yīng)就差很多。2.2 存儲資源Flash和RAM的容量要結(jié)合“擴展性”一起算Flash和RAM的估算也是常見翻車點。初學(xué)者經(jīng)常只看“程序大概多大”但實際產(chǎn)品里面Flash還要存Bootloader、字庫、配置文件、日志記錄RAM還要考慮協(xié)議棧緩沖區(qū)、DMA緩沖、多任務(wù)棧開銷。我的經(jīng)驗是用這個公式大致估算Flash需求 應(yīng)用代碼 × 1.3編譯器優(yōu)化后的實際體積常有波動 Bootloader占用 固件升級備份區(qū)如果做OTA 掉電保存的數(shù)據(jù) 字庫/資源文件RAM需求 全局變量 最大調(diào)用棧路徑 最大的單個數(shù)據(jù)緩沖區(qū) × 2發(fā)送和接收各一 RTOS內(nèi)核對象開銷如果用RTOS。舉個例子一個帶Wi-Fi的產(chǎn)品Wi-Fi模塊通過串口與MCU通信光TCP/IP協(xié)議棧的緩沖區(qū)就可能吃掉幾十KB RAM。如果選了F103系列的型號——標(biāo)準(zhǔn)配置是64KB Flash和20KB RAM——你會發(fā)現(xiàn)RAM非常緊尤其做OTA升級的時候Flash也不夠用。這種場景就應(yīng)該往F401或者G4系列看或者直接上F4系列中Flash/RAM更大的型號。2.3 外設(shè)需求不止是“數(shù)量”還要考慮引腳復(fù)用沖突外設(shè)需求是最需要仔細(xì)摳的部分。很多人選型只看數(shù)量幾個UART、幾個SPI、幾個I2C、幾個ADC通道。但實際布局時常發(fā)現(xiàn)你需要的UART2和SPI1的引腳是復(fù)用的當(dāng)它們同時要使用時要么改引腳配置要么就得換芯片。以一個帶4路PWM電機驅(qū)動、1路RS485通信、1路TFT-LCD顯示屏、2路ADC采集的項目為例??此艶103足夠但當(dāng)TFT-LCD用FSMC接口時很多引腳會與調(diào)試接口、定時器通道相互沖突最終只能把刷新率降低改用SPI接口的屏。這類問題我在選型時一般畫一張“外設(shè)-引腳占用表”把每個外設(shè)需要的引腳列出來再做一次引腳復(fù)用沖突檢查。引腳復(fù)用沖突檢查套路打開CubeMX選擇候選型號在Pinout視圖中把所有需要的外設(shè)引腳逐個分配觀察左下角是否有紅色沖突提示如果沖突優(yōu)先考慮能否換引腳通常是同一個功能可以在多組GPIO之間切換如果換不了再考慮換更大封裝或者換系列。另外還要注意DMA通道沖突。STM32的DMA請求映射在各個系列上并不完全一樣多路UART要同時收發(fā)時DMA通道分配也可能打架。這些細(xì)節(jié)在做方案選型時就該確認(rèn)掉不要等到寫代碼才發(fā)現(xiàn)。2.4 功耗、工作溫度與封裝三張“一票否決”清單這三個參數(shù)經(jīng)常被忽視但它們往往是“一票否決”級別的硬約束。功耗如果是電池供電你必須優(yōu)先考慮STM32L系列或G0系列的低功耗模式。L系列在Stop模式下的典型電流可以做到微安級別而F系列即使進(jìn)了Stop模式功耗也會高出幾個數(shù)量級。功耗需求還需要看不同工作狀態(tài)Run模式電流、Sleep模式電流、Stop模式電流、RTC備份域電流每一項都要對照數(shù)據(jù)手冊。工作溫度工業(yè)級芯片和商業(yè)級芯片的溫度范圍不同商業(yè)級一般是0°C到70°C工業(yè)級是-40°C到85°C汽車級是-40°C到125°C。如果項目要做戶外設(shè)備或者車規(guī)認(rèn)證溫度范圍就是硬門檻不是“超了也能用”的問題。封裝封裝直接影響到PCB加工難度、散熱、手焊還是機貼。QFN封裝的芯片引腳在底部散熱好但手焊難度高返修也比較痛苦LQFP封裝引腳在外側(cè)方便手工焊接也方便飛線調(diào)試。如果你在打樣階段經(jīng)常自己焊接優(yōu)先選LQFP如果項目要大批量機器貼片QFN反而因為占用面積小而有優(yōu)勢。3. STM32產(chǎn)品線拆解別被幾十個系列嚇住記住定位邏輯就好很多人打開ST官網(wǎng)的MCU選型頁面看到密密麻麻的型號列表直接放棄。其實只要把握住STM32產(chǎn)品線的三條脈絡(luò)就能把復(fù)雜問題簡化產(chǎn)品線按照功耗等級、性能等級和功能集來劃分。3.1 入門級F0、G0到底差在哪F0和G0都定位在入門級常被拿來替代8位機。F0基于Cortex-M0內(nèi)核主頻48MHz沒有FPUFlash最大512KB價格低廉但是外設(shè)相對簡單。G0是后來推出的也是Cortex-M0內(nèi)核主頻64MHz但引入了更靈活的時鐘樹、更多的通信接口還支持從48腳到100腳不等的封裝覆蓋。從用過的感受來說如果只是做簡單的傳感器采集、繼電器控制、溫度檢測這類純邏輯控制F0夠用且便宜如果還需要USB、多路UART、甚至一小段DSP運算G0的性價比就更突出。注意G0系列雖然性能看起來只比F0強一點但它換用了新的GPIO設(shè)計每個引腳的功能復(fù)用更靈活這在做緊湊型PCB設(shè)計時非常有用。3.2 主流出貨主力F1、F4、G4各自的分工F1系列是STM32的經(jīng)典款基于Cortex-M372MHz主頻Flash從16KB到1MB都有外設(shè)組合很標(biāo)準(zhǔn)。很多工業(yè)控制設(shè)備、家電控制板都在用這顆片子資料多到幾乎任何問題都能搜到答案。但F1的價格這幾年并不便宜而且它的ADC精度和DAC外設(shè)在競品面前已經(jīng)不占優(yōu)勢。F4系列基于Cortex-M4F帶FPU和DSP指令主頻從84MHz到180MHz性能比F1強很多而且內(nèi)置了更豐富的通信外設(shè)比如多個SPI/I2S硬件加密模塊以及USB OTG。如果你要做音頻、圖像處理、或是指令復(fù)雜的算法F4是比F1舒服很多的選擇。F4系列中F401、F411、F405、F407是最常見的幾款F405和F407在F4家族里屬于性能較高的帶有更多的RAM和硬件加密。G4系列則是面向電機控制和數(shù)字電源場景推出的產(chǎn)品基于Cortex-M4F內(nèi)核主頻170MHz最大的特點是內(nèi)置了高分辨率定時器HRTIM和多個12位ADC還帶比較器和運算放大器。做數(shù)字電源、雙向Buck-Boost、PFC、高頻逆變器這些應(yīng)用G4比F4更對路。它的定時器分辨率可以達(dá)到幾百皮秒級別普通定時器根本做不到。這三者的選擇邏輯可以簡化成傳統(tǒng)控制、邏輯為主、要求資料多選F1需要浮點運算、更強的整體性能、更豐富的外設(shè)選F4做電源、電機這類對時間精度非常敏感的應(yīng)用選G4。3.3 高性能F7/H7與無線WB/WL的選擇邊界F7和H7都是Cortex-M7內(nèi)核。F7主頻216MHz帶雙精度FPU適合人機界面和音頻處理H7更夸張雙核版本可以跑Cortex-M7加Cortex-M4F主頻480MHz內(nèi)置大量RAM甚至可以跑輕量級AI推理或者更復(fù)雜的GUI。但H7的功耗和PCB設(shè)計難度也隨之上升電源管理復(fù)雜Layout要求也比F1高。WB/WL系列則是ST面向無線物聯(lián)網(wǎng)推出的產(chǎn)品無線協(xié)議棧集成在芯片內(nèi)部。WB系列支持藍(lán)牙5.0和ZigbeeWL系列支持LoRa等遠(yuǎn)距離無線通信。用這類芯片的好處是協(xié)議棧已經(jīng)過認(rèn)證不用像外掛無線模塊那樣自己做認(rèn)證。不過它們的生態(tài)成熟度相比Nordic、樂鑫這些專攻無線的廠商還是弱一些除非你對ST平臺特別熟否則做無線產(chǎn)品時還是要認(rèn)真比較。3.4 引腳兼容性與選型“向上兼容”的實操技巧選型時還有一個重要技巧盡量選擇同一個系列的“大中小”三個型號讓引腳定義保持一致。這樣硬件設(shè)計上可以預(yù)留一顆更大容量芯片的位置先用小容量型號開發(fā)驗證后期需要升級時直接換上大容量芯片PCB板子不用改。舉個例子STM32F103系列有RCT6、RBT6、VCT6等型號引腳數(shù)量和封裝不同但同一封裝下不同F(xiàn)lash/RAM容量的型號往往引腳兼容。類似地STM32G4系列的多個型號在相同封裝下基本能做到替換。這種“向上兼容”在項目早期很有價值因為你無法100%確定后期功能會膨脹到什么程度。當(dāng)然跨系列替換就得小心了比如F1和F4雖然有些型號引腳兼容但外設(shè)寄存器不同、時鐘樹不同軟件上要移植。國產(chǎn)廠商能提供Pin-to-Pin替換選項比如國民技術(shù)的某些MCU可以Pin-to-Pin替換ST同編號型號這在芯片緊缺時是救命稻草但替換前需要仔細(xì)核對片上外設(shè)寄存器的差異不能想當(dāng)然。4. 實際項目選型演練從需求到型號的三次實戰(zhàn)講了一堆理論下面直接上三個真實場景的選型推演。每個場景我都會按“需求參數(shù) → 候選篩選 → 最終定案”的順序走一遍你會發(fā)現(xiàn)選型其實是一個不斷收窄范圍的過程。4.1 案例一無刷電機驅(qū)動器F103好還是G431好一個常見的無刷電機驅(qū)動器需求三相無刷電機FOC控制電流環(huán)頻率20kHz一路CAN通信用于上位機參數(shù)下發(fā)兩路ADC采集相電流分辨率要求12位以上一路PWM輸出用于剎車?yán)^電器工作溫度-20°C到70°C。先看F10372MHz的Cortex-M3沒有FPU12位ADC有CAN和定時器。從資源數(shù)量上似乎能滿足但如果做FOCPark變換、PI運算全程用定點數(shù)處理開發(fā)效率和調(diào)試效率都遠(yuǎn)低于浮點。20kHz的電流環(huán)在M3上雖然勉強能跑但代碼稍顯臃腫就沒有裕量了。再看G431G4系列170MHz主頻帶FPU和DSP指令內(nèi)置高精度ADC、比較器、運放和HRTIM這幾個外設(shè)簡直就是為電機控制量身定做的。G4系列的運放可以直接對采樣電阻的信號做放大處理不用額外加外部運放PCB面積更小、BOM成本更低。最終方案選擇G431理由很充分算力有富余、關(guān)鍵外設(shè)集成度更高、后續(xù)做固件升級或者算法迭代的余量大。F103在這個場景只是一個“看起來能用”的選擇而G431是“為這個場景而存在”的選擇。4.2 案例二帶TFT-LCD的智能家居中控面板一塊3.5寸TFT-LCD彩色屏分辨率為320x480需要做簡單GUI一個Wi-Fi模塊用于聯(lián)網(wǎng)多路觸摸按鍵輸入還有一段開機動畫需要解碼播放。LCD驅(qū)動的核心問題是顯示數(shù)據(jù)量。320x480x16位色一幀的數(shù)據(jù)量大概300KB。如果用SPI接口的屏SPI時鐘跑40MHz全屏刷新一幀需要至少幾十毫秒如果用8080并口或者RGB接口刷新速度快很多但占用GPIO也多。STM32F4系列內(nèi)部有靈活的靜態(tài)存儲控制器FSMC/FMC可以像訪問內(nèi)存一樣訪問LCD控制器屏的刷新效率非常高CPU干預(yù)很少。這種場景F103就有點吃力了因為F103雖然也有FSMC但總線和DMA性能都不如F4。選型結(jié)果偏向F40x系列比如STM32F405或F407。F407有硬件JPEG編解碼器、更多RAM如果開機動畫需要快一些硬件解碼會幫不少忙。同時F4系列的USB OTG可以做固件升級Wi-Fi模塊通過UART或者SDIO接口連接資源也足夠。溫度范圍、封裝則根據(jù)外殼尺寸選LQFP100或者LQFP144封裝。整個選型的關(guān)鍵是屏幕刷新這塊的帶寬需求把所有需求里面對帶寬和性能要求最高的外設(shè)找出來選型就成功了一半。4.3 案例三紐扣電池供電的溫濕度記錄儀產(chǎn)品要求一顆CR2032紐扣電池供電壽命超過一年定時采集溫濕度數(shù)據(jù)并存儲支持藍(lán)牙回傳。這種應(yīng)用第一個想到的就是STM32L系列比如L4或者L0。選型時要重點對比低功耗模式下的電流參數(shù)。L4在Stop模式下的典型電流約1.1uARTC開啟的情況下可能到1.4uA一個電流小于3uA的配置。一個溫濕度傳感器在測量時電流大概是幾百微安每次測量幾毫秒藍(lán)牙模塊也不建議常開通過GPIO控制電源只在需要回傳數(shù)據(jù)時才上電。用這種方式一年的平均電流可以控制在10uA以內(nèi)CR2032的容量約220mAh基本能撐過一年。低功耗選型還有一個容易忽略的地方串口喚醒、GPIO外部中斷喚醒、RTC鬧鐘喚醒、以及從Stop模式退出的喚醒時間。L4從Stop模式喚醒到執(zhí)行代碼需要幾微秒到幾十微秒對于慢速傳感器采集足夠用了但對于需要快速響應(yīng)的實時控制場景就不合適。低功耗設(shè)計里“睡多久”“醒多快”“醒了干什么”都要提前算清楚。5. 選型落地開發(fā)環(huán)境、供貨與量產(chǎn)才是最終拍板項很多時候選型評審到最后拼的不是芯片參數(shù)而是軟件生態(tài)和供應(yīng)鏈。5.1 開發(fā)環(huán)境和調(diào)試工具鏈對選型的影響被嚴(yán)重低估我見過不止一個團(tuán)隊因為換了芯片廠商結(jié)果整個團(tuán)隊要重新學(xué)工具鏈、重寫驅(qū)動、重新移植中間件。STM32在這塊的優(yōu)勢實在太明顯了CubeMX圖形化配置工程、HAL庫覆蓋絕大多數(shù)外設(shè)、Keil MDK和IAR都有完整的Device Family Pack支持點幾下就能生成工程。如果你在選型階段就已經(jīng)搜索到了大量現(xiàn)成的BSP、驅(qū)動和示例代碼那后面的開發(fā)周期會大幅縮短。選型的時候我一般會順便搜一下“候選型號開發(fā)環(huán)境”的關(guān)鍵字看看資料熱度。Keil5在STM32項目中的兩個小坑安裝芯片支持包時新手很容易漏掉“STM32CubeF1”這類固件包結(jié)果在Device列表里找不到自己芯片的型號實際要裝的不只是Keil本體還要裝對應(yīng)的芯片系列支持包。不同系列的芯片支持包不能混用F1和F4的SVD文件、Flash算法都不一樣經(jīng)常有人打開工程后下載失敗就是因為Device選錯或者芯片包版本不對。5.2 芯片的“第二供應(yīng)商”思維一顆料不能吊死在ST上經(jīng)歷過最近幾年芯片缺貨的工程師應(yīng)該都有體會一顆料被市場卡住脖子整個項目組就要陪著等貨。所以現(xiàn)在選型的時候供應(yīng)鏈穩(wěn)定性已經(jīng)是一項硬指標(biāo)。我在選型時一般會確認(rèn)三件事該STM32型號是否在ST官方長期供貨承諾列表里是否有對應(yīng)的國產(chǎn)Pin-to-Pin替代型號比如國民技術(shù)、GD32的替換方案關(guān)鍵時候可以應(yīng)急采購渠道是否可見樣品能否快速拿到量產(chǎn)后訂貨周期是多少。Pin-to-Pin替換不是說換個芯片就行還要檢查啟動文件、外設(shè)庫、Flash燒錄算法是否兼容。GD32早期就有人拿ST的庫去燒結(jié)果在USB和定時器上出過兼容性問題。所以“第二供應(yīng)商”是保險絲不是常規(guī)路線平時可以用國產(chǎn)物料做預(yù)研和降本備份但不要在項目結(jié)項前臨時更換主力芯片。5.3 一張“選型評審自查表”評審會上照著逐項過最后分享一張我內(nèi)部一直在用的選型評審自查表。拿去硬件評審會上逐項過能擋掉大部分低級失誤檢查項關(guān)鍵問題通過標(biāo)準(zhǔn)算力最復(fù)雜算法在最壞情況下耗時占比低于50%留足裕量Flash是否包含Bootloader/OTA/資源文件預(yù)留40%以上余量RAM是否包含協(xié)議棧/DMA/RTOS棧預(yù)留50%以上余量外設(shè)引腳所有外設(shè)引腳分配是否無沖突CubeMX無紅色沖突封裝是否支持手工焊接或返修打樣階段優(yōu)先LQFP功耗模式電池低功耗模式是否達(dá)標(biāo)平均電流滿足電池壽命溫度等級工業(yè)/商業(yè)/車規(guī)是否匹配環(huán)境選型下限嚴(yán)于實際溫度連接器/PCB引腳間距是否適合PCB工藝滿足加工最小線寬線距開發(fā)工具鏈Cube/HAL/Keil包是否齊全官網(wǎng)資料完整有示例供貨芯片是否長期供貨/是否有備選能拿到樣品訂貨周期可控這張表不是固定的你可以根據(jù)自己項目的行業(yè)特點往里面加項。比如醫(yī)療器械還會加“長期可追溯性”家電產(chǎn)品會加“ESD防護(hù)等級”——像是TFT-LCD這類裸露在外的顯示模組整機ESD設(shè)計必須提前考慮MCU的GPIO要選帶保護(hù)二極管的型號必要時還得加TVS管做電源相關(guān)的項目則會加“ADC采樣精度”和“參考電壓溫漂”這兩項。選型做到最后你會發(fā)現(xiàn)真正重要的不是某個單一指標(biāo)有多強而是整張表過下來沒有短板。6. 寫在選型之后幾個從量產(chǎn)項目中總結(jié)的額外提醒說點題外話這些是我在項目量產(chǎn)之后回頭看選型決策時總結(jié)出來的經(jīng)驗。第一有條件的話同一顆料至少要手焊一版驗證板。很多問題不是看手冊能發(fā)現(xiàn)的。比如LQFP48封裝的芯片個別引腳挨得很近手工焊時容易連錫又比如某型號芯片的ADC在參考電壓噪聲比較大的時候采樣跳動明顯這些問題都得實際跑起來才看得到。第二不要把CubeMX生成的初始化代碼當(dāng)成銀彈。HAL庫封裝程度高代碼體積大寄存器操作隱蔽在某些低成本項目里HAL庫可能讓Flash占用飆升。選型階段就得考慮是直接用標(biāo)準(zhǔn)外設(shè)庫、寄存器操作還是HAL庫這會影響你對Flash容量的判斷。第三給Bootloader和升級功能留位置。凡是做產(chǎn)品不是做玩具的都要認(rèn)真考慮遠(yuǎn)程升級或者主控升級的需求。選型時優(yōu)先選Flash容量大、支持在應(yīng)用編程IAP的型號哪怕第一版不上OTA也要預(yù)留在硬件上不然后續(xù)要升級時只能返廠拆殼。第四也是我最想說的一點選型是動態(tài)的不是一錘子買賣。產(chǎn)品在研發(fā)過程中需求可能會變市場上芯片的價格和供貨也會變。每隔半年回看一次選型在改版窗口期做一次重新評估比一開始花一個月反復(fù)糾結(jié)型號要靠譜得多。我自己養(yǎng)成的一個習(xí)慣是每次評審選型方案時都問一句這顆芯片如果停產(chǎn)或者斷供你的Plan B是什么如果能馬上說清楚說明這個選型是成熟的如果支支吾吾那大概率還沒有真正完成選型。換芯片這件事預(yù)留方案永遠(yuǎn)比臨時找方案容易一百倍。