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