新選擇)
1. 從8位到32位小封裝里的大升級(jí)8-pin MCU這個(gè)領(lǐng)域過去十幾年幾乎是8位機(jī)的天下。PIC10F、ATtiny10、STM8L001這類芯片基本就是一顆8位內(nèi)核加上幾個(gè)IO跑個(gè)幾兆赫茲塞在SOT-23-6或者TSSOP-8封裝里做點(diǎn)簡(jiǎn)單的邏輯控制、電平轉(zhuǎn)換、小燈閃爍之類的活兒。做硬件的老工程師基本都有個(gè)固定思維封裝越小功能越簡(jiǎn)單8個(gè)引腳能接出來什么復(fù)雜東西但這兩年情況變了。幾家主流MCU廠商陸續(xù)推出了8-pin封裝的32位產(chǎn)品比如基于Cortex-M0內(nèi)核的小封裝芯片跑在48MHz甚至更高頻率Flash從16KB到64KB不等RAM也普遍給到4KB以上。也就是說過去需要一顆20腳甚至32腳芯片才能實(shí)現(xiàn)的處理能力現(xiàn)在一顆8腳芯片就能做到。這件事對(duì)硬件開發(fā)的影響說實(shí)話比表面看起來大得多。這篇文章主要聊三個(gè)事32位內(nèi)核塞進(jìn)8-pin封裝之后到底解決了什么問題這類芯片在實(shí)際項(xiàng)目里適合做什么、不適合做什么以及在選型和開發(fā)過程中有哪些常規(guī)文檔里不會(huì)寫的坑。適合正在評(píng)估低引腳方案、被8位MCU算力或外設(shè)憋得難受、或者純粹想了解MCU選型趨勢(shì)的工程師看。1.1 8-pin封裝的演進(jìn)邏輯8-pin封裝本身不稀奇SOIC-8、TSSOP-8、DFN-8這些都是非常成熟的封裝形式。過去MCU廠商也一直有8-pin產(chǎn)品線但基本策略都是“夠用就好”一個(gè)8位內(nèi)核幾KB Flash幾百字節(jié)RAM幾個(gè)IO一個(gè)定時(shí)器可能再加個(gè)ADC。這類芯片的定位很簡(jiǎn)單——替代邏輯門電路、處理最簡(jiǎn)單的控制任務(wù)。這種局面維持了很長(zhǎng)時(shí)間不是沒有原因。8-pin封裝的引腳數(shù)量極其有限電源和地就占掉兩個(gè)引腳剩下6個(gè)引腳要么做IO要么復(fù)用成通信接口或模擬輸入。在這么少的引腳上做文章過去普遍認(rèn)為塞個(gè)32位內(nèi)核純屬浪費(fèi)——性能發(fā)揮不出來成本和功耗反而更高。但制程進(jìn)步和MCU廠商的成本控制能力把這個(gè)邏輯打破了?,F(xiàn)在一顆Cortex-M0內(nèi)核的小封裝芯片裸片成本已經(jīng)可以壓到很低再加上Flash工藝成熟16KB甚至32KB的存儲(chǔ)空間在低引腳封裝里早已不成問題。于是廠商開始重新思考既然成本差距不大為什么不把更強(qiáng)的內(nèi)核、更大的存儲(chǔ)和更豐富的外設(shè)塞進(jìn)這個(gè)傳統(tǒng)上只能跑8位的封裝里1.2 32位MCU的“降維打擊”優(yōu)勢(shì)在哪8-pin 32位MCU第一個(gè)直觀優(yōu)勢(shì)是主頻。傳統(tǒng)8位MCU在這個(gè)封裝里主流頻率是4MHz到16MHz而32位產(chǎn)品普遍做到了32MHz到64MHz。這個(gè)差距意味著同樣的任務(wù)處理速度翻了4到16倍。我實(shí)測(cè)過一顆48MHz的Cortex-M0芯片跑一個(gè)簡(jiǎn)單的PID控制循環(huán)同樣的代碼邏輯放到8位MCU上采樣頻率差了將近10倍。對(duì)需要實(shí)時(shí)性的應(yīng)用來說這個(gè)差距是本質(zhì)性的。第二個(gè)優(yōu)勢(shì)是硬件乘除法器。8位MCU做16位乘法往往要軟乘法循環(huán)消耗幾十到上百個(gè)周期而M0內(nèi)核自帶硬件乘法器單周期完成32位乘法。對(duì)于傳感器數(shù)據(jù)處理、校準(zhǔn)算法、簡(jiǎn)單濾波這些數(shù)學(xué)運(yùn)算頻繁的任務(wù)這個(gè)優(yōu)勢(shì)非常明顯。另外M0內(nèi)核還支持中斷嵌套、向量表重映射、SysTick等這些在過去8位平臺(tái)上要么沒有要么實(shí)現(xiàn)得非常簡(jiǎn)陋。第三個(gè)優(yōu)勢(shì)是外設(shè)集成度。8-pin 32位MCU的典型外設(shè)配置包括多通道12位ADC、比較器、多路定時(shí)器支持PWM輸出、UART、I2C、SPI甚至有些型號(hào)還帶了DMA和CRC。這意味著在一個(gè)8腳芯片上你可以同時(shí)做信號(hào)采集、數(shù)據(jù)處理和PWM輸出再通過I2C或UART跟外部通信。這在過去至少要一顆20腳以上的芯片才能實(shí)現(xiàn)。接下來我會(huì)把這顆小芯片的實(shí)際使用感受、應(yīng)用場(chǎng)景和選型經(jīng)驗(yàn)拆開講。2. 8-pin也能塞進(jìn)32位核心引腳分配與資源局限如果說上面的分析是從“產(chǎn)品定位”的角度看那么真正動(dòng)手做設(shè)計(jì)時(shí)最需要關(guān)心的問題是8個(gè)引腳夠不夠用外設(shè)那么多引腳卻那么少實(shí)際做起來是不是很憋屈2.1 引腳分配的真實(shí)體驗(yàn)先來算一筆賬。標(biāo)準(zhǔn)的8-pin封裝電源VDD和地VSS固定占掉2個(gè)引腳剩下6個(gè)引腳理論上都可以做IO。但很多芯片還有一個(gè)復(fù)位引腳NRST如果把復(fù)位功能也占用只剩5個(gè)IO。好在有些型號(hào)允許把NRST引腳配置成普通IO需要關(guān)閉復(fù)位功能編程時(shí)用軟件復(fù)位這樣能多拿回一個(gè)引腳。接下來是調(diào)試接口?;贏RM內(nèi)核的MCUSWD調(diào)試需要SWDIO和SWCLK兩個(gè)引腳。如果這6個(gè)IO里分出兩個(gè)給調(diào)試口那就只剩4個(gè)IO可用。這是個(gè)非?,F(xiàn)實(shí)的問題——開發(fā)階段離不開調(diào)試接口但量產(chǎn)階段又希望盡量多的IO。我在實(shí)際項(xiàng)目里常用的做法是開發(fā)階段保留SWD調(diào)試接口用剩下4個(gè)IO調(diào)試整個(gè)功能邏輯等代碼穩(wěn)定后通過軟件配置把SWD引腳釋放成普通IO再重新評(píng)估是否需要改動(dòng)硬件。這樣做的好處是整個(gè)開發(fā)和量產(chǎn)流程可以用同一塊板子驗(yàn)證不用為了燒錄專門改設(shè)計(jì)。2.2 存儲(chǔ)與外設(shè)的取舍Flash和RAM方面8-pin 32位MCU的典型配置是16KB到64KB Flash、4KB到8KB RAM。這是什么概念一個(gè)典型的傳感器節(jié)點(diǎn)固件包含初始化代碼、采集邏輯、濾波算法、通信協(xié)議棧大概需要6KB到12KB Flash。一個(gè)簡(jiǎn)單的電機(jī)控制程序包含PID運(yùn)算和PWM驅(qū)動(dòng)大約需要8KB到16KB Flash。從存儲(chǔ)空間看這些配置應(yīng)付簡(jiǎn)單應(yīng)用綽綽有余。但真正需要仔細(xì)斟酌的是引腳復(fù)用。比如一個(gè)UART接口需要TX和RX兩個(gè)引腳一個(gè)I2C接口需要SCL和SDA兩個(gè)引腳。如果同時(shí)要用UART調(diào)試和I2C接傳感器4個(gè)IO就沒有了。因此8-pin 32位MCU的開發(fā)本質(zhì)上是一個(gè)“資源規(guī)劃游戲”。你需要在一開始就明確系統(tǒng)里哪些外設(shè)必須同時(shí)工作哪些可以采用分時(shí)復(fù)用哪些信號(hào)可以用軟件模擬而不是硬件外設(shè)。另外一個(gè)容易被忽略的資源是定時(shí)器的引腳映射。很多MCU的PWM輸出只有特定引腳才能映射到特定定時(shí)器通道。如果剛好那個(gè)引腳被UART占用你就得重新規(guī)劃引腳的分配。我的建議是拿到芯片的第一件事把引腳復(fù)用表打出來貼在工位前面然后你的方案可行性就一目了然。3. 值得上32位的典型應(yīng)用場(chǎng)景說了這么多技術(shù)細(xì)節(jié)回到一個(gè)最根本的問題到底什么樣的應(yīng)用值得從8位MCU升級(jí)到8-pin 32位MCU我分三類場(chǎng)景來聊你可以直接對(duì)照自己的項(xiàng)目判斷。3.1 消費(fèi)電子小體積里塞進(jìn)“智慧”消費(fèi)電子是8-pin 32位MCU最直接的目標(biāo)市場(chǎng)。舉幾個(gè)典型例子第一類是智能小家電的控制板。以前一個(gè)電動(dòng)牙刷、一個(gè)電動(dòng)剃須刀的主控用的多是8位MCU因?yàn)檫壿嫼?jiǎn)單無(wú)非是按鍵檢測(cè)、電機(jī)驅(qū)動(dòng)、電量顯示三件事。但現(xiàn)在的產(chǎn)品往往要加藍(lán)牙通信、要記錄用戶使用數(shù)據(jù)、要做多檔位振動(dòng)算法。這些需求對(duì)存儲(chǔ)空間和算力的要求立刻翻了幾倍而8-pin封裝又剛好適合這類產(chǎn)品緊湊的PCB布局。第二類是LED驅(qū)動(dòng)和調(diào)光控制。以前做RGB調(diào)光很多人用一顆8位MCU配合專用LED驅(qū)動(dòng)芯片。但8-pin 32位MCU可以直接用PWM輸出控制三路LED同時(shí)通過ADC采集電流做恒流反饋還能跑一些平滑調(diào)光的漸變算法用戶體驗(yàn)比單純開關(guān)好很多。第三類是電子煙、美容儀這類小型電子設(shè)備。它們對(duì)體積極其敏感PCB往往只有指甲蓋大小但功能卻在不停增加——功率調(diào)節(jié)、溫度保護(hù)、甚至帶一個(gè)小顯示屏。一顆8-pin 32位MCU配合幾個(gè)外圍器件就能把過去需要兩顆芯片的功能合并起來。3.2 工業(yè)與傳感器邊緣端的第一道處理工業(yè)傳感器節(jié)點(diǎn)是另一個(gè)很有價(jià)值的應(yīng)用方向。過去我做過一個(gè)溫濕度采集節(jié)點(diǎn)傳感器輸出的是I2C信號(hào)需要MCU定時(shí)讀取、做數(shù)值校準(zhǔn)然后通過RS-485總線傳給上位機(jī)。用8位MCU做這套東西非常吃力因?yàn)橐瑫r(shí)處理浮點(diǎn)換算、線性校準(zhǔn)、Modbus協(xié)議解析8位機(jī)跑這些代碼相當(dāng)吃力而且Flash經(jīng)常告急。換成8-pin 32位MCU之后情況完全不一樣。Cortex-M0雖然不支持硬件浮點(diǎn)但用軟件實(shí)現(xiàn)float運(yùn)算也比8位機(jī)快很多而且32位數(shù)據(jù)寬度讓Modbus這種多字節(jié)協(xié)議的處理變得極其自然。一個(gè)完整的溫濕度采集節(jié)點(diǎn)一顆8-pin芯片就能搞定MCU成本甚至比之前的8位方案沒高多少。另一個(gè)典型場(chǎng)景是簡(jiǎn)單的工業(yè)控制模塊。比如氣動(dòng)閥門的比例控制、水泵的軟啟動(dòng)控制、繼電器組的狀態(tài)檢測(cè)。這些現(xiàn)場(chǎng)設(shè)備的共同特點(diǎn)是功能不復(fù)雜但環(huán)境惡劣、可靠性要求高、安裝空間受限。8-pin封裝的焊接可靠性好引腳間距大走線簡(jiǎn)單很適合這類工業(yè)產(chǎn)品。3.3 場(chǎng)景選擇的判斷標(biāo)準(zhǔn)那么怎么判斷一個(gè)項(xiàng)目是否適合用8-pin 32位MCU我總結(jié)了一個(gè)簡(jiǎn)單的判斷清單系統(tǒng)需要處理的數(shù)據(jù)寬度是否超過8位比如要PID運(yùn)算、要處理大于255的計(jì)數(shù)、要做ADC濾波并換算成工程值——這些任務(wù)32位優(yōu)勢(shì)明顯。是否需要同時(shí)使用兩種以上通信協(xié)議UART加I2C、UART加SPI的組合在8-pin 32位芯片上可以勉強(qiáng)實(shí)現(xiàn)但在8位機(jī)上引腳和內(nèi)存都容易不夠。功耗要求是否極端苛刻如果系統(tǒng)需要電池供電且休眠電流要求在1uA以下傳統(tǒng)8位MCU仍然有明顯優(yōu)勢(shì)32位雖然在功耗模式上也在改進(jìn)但純數(shù)字邏輯帶來的本底功耗還是比8位工藝略高。成本和供貨穩(wěn)定性是否敏感如果項(xiàng)目年出貨量很大、對(duì)BOM成本非常敏感需要認(rèn)真核算32位方案和8位方案的價(jià)格差異以及供應(yīng)商的長(zhǎng)期供貨承諾。4. 選型實(shí)踐與開發(fā)工具鏈如果說前面是“要不要用”的問題那這一節(jié)聊的就是“怎么選、怎么用”的問題。8-pin 32位MCU雖然產(chǎn)品越來越多但不同型號(hào)之間的差異其實(shí)很大選型時(shí)不能光看“內(nèi)核是M0”這一條。4.1 關(guān)鍵參數(shù)怎么對(duì)比我列了個(gè)表格把8位MCU和32位MCU在8-pin封裝下的典型配置做了一個(gè)對(duì)比對(duì)比項(xiàng)傳統(tǒng)8位MCU8-pin32位MCU8-pin內(nèi)核8-bit CISC/Harvard32-bit Cortex-M0主頻4~16MHz32~64MHzFlash1~8KB16~64KBRAM128~512B4~8KB硬件除法無(wú)/軟件實(shí)現(xiàn)32位乘法器除法靠軟件但較快ADC8~10位12位多通道定時(shí)器1~2個(gè)8/16位2~4個(gè)16位支持PWM互補(bǔ)輸出通信接口多數(shù)無(wú)硬件UARTUART/I2C/SPI通過引腳復(fù)用切換DMA無(wú)部分型號(hào)支持調(diào)試接口通常無(wú)SWD開發(fā)環(huán)境各廠商私有IDE統(tǒng)一工具鏈Keil/IAR/GCC從這個(gè)表能看出來32位方案在存儲(chǔ)、處理能力、外設(shè)豐富度上有壓倒性優(yōu)勢(shì)。但要注意表格里的“通信接口”一項(xiàng)在8-pin封裝下是有代價(jià)的——幾個(gè)通信接口共享同一組引腳你需要通過軟件配置選擇當(dāng)前使用哪一個(gè)。選型時(shí)另一個(gè)容易忽略的是ADC的參考電壓。很多8-pin 32位MCU的VREF引腳和VDD是內(nèi)部綁定的也就是說ADC的轉(zhuǎn)換結(jié)果會(huì)隨電源電壓波動(dòng)。如果你的系統(tǒng)里電源噪聲較大做精密測(cè)量的位數(shù)其實(shí)是虛的。這種場(chǎng)景下要么給MCU單獨(dú)加LDO濾波要么選擇帶獨(dú)立參考電壓輸入的型號(hào)。4.2 開發(fā)環(huán)境與調(diào)試體驗(yàn)的變遷從8位MCU轉(zhuǎn)到32位MCU開發(fā)體驗(yàn)的提升比很多人預(yù)期的要大。首先是IDE和工具鏈統(tǒng)一了。以前用8位MCU每家一個(gè)IDE、一個(gè)編譯器操作習(xí)慣都要重新學(xué)。而基于ARM Cortex-M的32位MCU可以用Keil MDK、IAR EWARM或者GCC工具鏈圖形化的配置工具比如各家的CubeMX類似物更是把引腳復(fù)用、時(shí)鐘樹配置這些繁瑣環(huán)節(jié)自動(dòng)化了。調(diào)試方面SWD接口相比8位MCU常見的ISP下載提供了實(shí)時(shí)在線調(diào)試能力。你能看到寄存器數(shù)值、變量變化、甚至直接在運(yùn)行時(shí)修改內(nèi)存。這個(gè)能力在排查bug時(shí)極其關(guān)鍵。舉個(gè)例子調(diào)試一個(gè)I2C通信問題8位MCU時(shí)代可能要用LED閃爍來指示運(yùn)行狀態(tài)或者把關(guān)鍵變量通過UART打印——前提是引腳夠用。而32位MCU直接可以在線斷點(diǎn)查看緩沖區(qū)內(nèi)容。時(shí)鐘配置也需要單獨(dú)強(qiáng)調(diào)。32位MCU的系統(tǒng)時(shí)鐘通常需要通過PLL倍頻配置時(shí)鐘樹時(shí)涉及多個(gè)寄存器和標(biāo)志位。初學(xué)者最常見的錯(cuò)誤是改了系統(tǒng)時(shí)鐘源卻沒等待標(biāo)志位置位導(dǎo)致芯片跑飛或者系統(tǒng)進(jìn)入未知狀態(tài)。推薦的做法是初始化時(shí)鐘后先讀回實(shí)際的時(shí)鐘頻率確認(rèn)配置成功再運(yùn)行后續(xù)代碼不要在中斷里修改時(shí)鐘配置。5. 常見問題與排查技巧實(shí)錄最后這部分分享一下我在實(shí)際項(xiàng)目里踩過的坑和積累的排查經(jīng)驗(yàn)。這些問題在官方應(yīng)用筆記里不太常見但幾乎每個(gè)用過8-pin 32位MCU的工程師都會(huì)遇到。5.1 引腳數(shù)量不夠用的應(yīng)急方案遇到引腳不夠的時(shí)候第一反應(yīng)通常是“換更大封裝的芯片”。但在這個(gè)芯片普遍缺貨的時(shí)代換型號(hào)的代價(jià)是很大的——新的封裝布局、新的供貨渠道、甚至重新評(píng)估功耗。所以不到萬(wàn)不得已我一般不推薦直接換芯片。應(yīng)急的做法有幾個(gè)一是用分時(shí)復(fù)用比如同一個(gè)引腳先做按鍵掃描再做LED驅(qū)動(dòng)用時(shí)間片切換功能。只要兩個(gè)功能不會(huì)同時(shí)觸發(fā)這種方式完全可行只需要確保切換時(shí)正確設(shè)置引腳的復(fù)用功能。二是使用模擬開關(guān)或IO擴(kuò)展芯片比如用一顆I2C接口的IO擴(kuò)展器用一個(gè)引腳擴(kuò)展出8個(gè)IO。這時(shí)候8-pin 32位MCU充當(dāng)“大腦”IO擴(kuò)展器充當(dāng)“手腳”反而更靈活。5.2 調(diào)試引腳釋放后芯片“鎖死”問題把SWD引腳配置成普通IO是量產(chǎn)階段為了節(jié)省引腳常用的操作。但如果這個(gè)操作沒有規(guī)劃好芯片可能就此鎖死再也無(wú)法通過調(diào)試器連接。原因很簡(jiǎn)單調(diào)試器連接芯片時(shí)需要占用SWD接口如果這兩個(gè)引腳被配置成了普通IO并輸出高電平調(diào)試器就無(wú)法建立通信。如果遇到這種局面有幾個(gè)辦法能救回來使用復(fù)位后短暫延時(shí)的技巧。在程序啟動(dòng)時(shí)加一個(gè)幾百毫秒的延時(shí)同時(shí)手動(dòng)觸發(fā)芯片復(fù)位在復(fù)位的瞬間調(diào)試器搶在程序運(yùn)行之前連接。使用硬件上的隔離電路。在SWD引腳上串一個(gè)可以用跳線斷開的電阻出廠前默認(rèn)斷開量產(chǎn)后再通過跳線或焊錫連接到目標(biāo)設(shè)備。有些MCU支持通過Boot引腳進(jìn)入出廠引導(dǎo)程序。如果芯片有Boot配置引腳可以通過它強(qiáng)制進(jìn)入Boot模式然后擦除整個(gè)Flash。5.3 功耗比預(yù)期高的排查思路很多工程師從8位MCU轉(zhuǎn)到32位MCU后發(fā)現(xiàn)同樣的電池供電場(chǎng)景待機(jī)功耗明顯比預(yù)期高。排查時(shí)請(qǐng)先別急著懷疑芯片本身而是按這個(gè)順序檢查第一檢查所有引腳的電平狀態(tài)。32位MCU的輸入引腳如果懸空CMOS輸入級(jí)的靜態(tài)電流會(huì)明顯增大。未使用的引腳一定要配置成模擬輸入、下拉輸入或輸出低電平避免懸空。第二檢查時(shí)鐘源的配置。很多32位MCU出廠默認(rèn)使用內(nèi)部高速時(shí)鐘進(jìn)入低功耗模式前需要顯式關(guān)閉不需要的時(shí)鐘樹節(jié)點(diǎn)。第三檢查外圍電路的漏電。很多情況下功耗高不是MCU造成的而是外部上拉電阻、傳感器待機(jī)電流或LDO靜態(tài)電流造成的。我在實(shí)際項(xiàng)目中就遇到過一件事一顆8-pin 32位MCU數(shù)據(jù)手冊(cè)標(biāo)稱休眠電流2uA實(shí)際測(cè)出來卻高達(dá)50uA。排查了很久最后發(fā)現(xiàn)是板子上一個(gè)給傳感器供電的LDO沒有關(guān)斷靜態(tài)電流吃掉了大部分功耗。MCU本身沒問題但這個(gè)排查過程讓我養(yǎng)成一個(gè)習(xí)慣——畫功耗樹把每個(gè)模塊的電流需求列出來逐個(gè)測(cè)量確認(rèn)。5.4 下載失敗與連接不穩(wěn)定的處理J-Link或ST-Link連接不上8-pin封裝的芯片是另一個(gè)高發(fā)問題。排除調(diào)試器本身故障后最常見的兩個(gè)原因一是目標(biāo)板供電不足。8-pin封裝芯片通常直接由3.3V或5V供電如果供電紋波太大或者電流受限調(diào)試器無(wú)法正常復(fù)位芯片。二是在系統(tǒng)里有其他設(shè)備占用了SWD引腳。比如某些板載傳感器恰好掛在SWDIO引腳上上電后被傳感器拉低了電平導(dǎo)致調(diào)試器識(shí)別不了。排查方法也很直接把目標(biāo)板上除MCU之外的所有電路都斷開只保留最小系統(tǒng)再讓調(diào)試器連接。如果這時(shí)候能連上說明問題出在外設(shè)電路如果還是連不上再檢查調(diào)試器的接線和供電。6. 這一波32位降級(jí)風(fēng)暴意味著什么我個(gè)人的判斷是8-pin 32位MCU的普及正在悄悄改變低端嵌入式開發(fā)的生態(tài)格局。過去“簡(jiǎn)單功能用8位機(jī)”是一種慣性思維因?yàn)?位MCU便宜、資源多、資料全。但現(xiàn)在32位MCU在封裝不變的情況下用更低的成本把內(nèi)核、主頻、存儲(chǔ)、外設(shè)都推高了一個(gè)量級(jí)這種“降維打擊”讓很多固守8位方案的理由不再成立。當(dāng)然8位MCU不會(huì)立刻消失。在電源控制、超低功耗待機(jī)、極高性價(jià)比的量產(chǎn)產(chǎn)品里8位MCU仍有不可替代的位置。但對(duì)于大多數(shù)中小規(guī)模的嵌入式項(xiàng)目來說8-pin 32位MCU提供了一個(gè)非常舒服的平衡點(diǎn)——足夠小的體積、足夠強(qiáng)的性能、足夠友好的開發(fā)體驗(yàn)。我建議所有做硬件開發(fā)的同行認(rèn)真評(píng)估一下手頭的項(xiàng)目看有沒有哪些“看似簡(jiǎn)單”的功能其實(shí)已經(jīng)在8位機(jī)上掙扎了很久。換一顆8-pin的32位芯片也許問題就迎刃而解了。最后再分享一個(gè)實(shí)操小技巧選型階段拿到樣片之后先別急著畫板子。借用現(xiàn)成的開發(fā)板把你要用的全部外設(shè)點(diǎn)亮一遍測(cè)一遍引腳復(fù)用是否有沖突把固件框架搭出來性能摸底跑一下。這一輪驗(yàn)證做完再回頭畫原理圖和PCB你會(huì)發(fā)現(xiàn)自己省了至少一輪改板子的時(shí)間。這個(gè)習(xí)慣幫我避過了很多次“畫完板子發(fā)現(xiàn)某個(gè)外設(shè)根本映射不到可用引腳”的悲劇。