板設(shè)計(jì)實(shí)戰(zhàn):從電源管理到PCB布局的完整指南)
做嵌入式這么多年手里過(guò)過(guò)的開(kāi)發(fā)板和自制小板不在少數(shù)但真正讓我覺(jué)得值得寫(xiě)一篇文章記錄下來(lái)的是這塊STM32H743VGT6最小系統(tǒng)板。從電源管理到外設(shè)接口每一步都有坑也都有經(jīng)驗(yàn)可循。這篇博文我就以這塊板子為主線把從選型、設(shè)計(jì)、畫(huà)板到焊接調(diào)試的完整過(guò)程捋一遍給想自己畫(huà)H7最小系統(tǒng)板的朋友一個(gè)可直接參考的實(shí)操方案。STM32H743VGT6是ST H7系列里非常典型的一顆料Cortex-M7內(nèi)核跑到480MHz2MB Flash1MB RAM外設(shè)接口極其豐富光看參數(shù)就知道它不是F1/F4那種“點(diǎn)個(gè)燈”的級(jí)別。自己畫(huà)最小系統(tǒng)板本質(zhì)上是在“芯片能跑”和“外設(shè)夠用”之間找一個(gè)平衡點(diǎn)既要保證電源穩(wěn)定、時(shí)鐘可靠、調(diào)試下載順暢又要把常用接口合理引出。這篇文章不會(huì)給你堆一堆沒(méi)用的理論而是直接告訴你我的設(shè)計(jì)選擇和踩坑記錄。1. 先聊聊為什么選H7這塊板卡要解決什么問(wèn)題1.1 H743VGT6到底強(qiáng)在哪很多朋友第一次接觸H7是從STM32F103C8T6或者F407直接跳過(guò)來(lái)的。F103和F407固然經(jīng)典但到了需要跑復(fù)雜算法、做高速數(shù)據(jù)處理、或者同時(shí)掛多個(gè)高帶寬外設(shè)的場(chǎng)景它們的性能就開(kāi)始捉襟見(jiàn)肘了。H743VGT6最吸引我的幾個(gè)點(diǎn)其實(shí)非常具體主頻480MHzCortex-M7內(nèi)核帶雙精度FPU和L1 Cache算力比F407的168MHz高出一個(gè)量級(jí)。做音頻處理、傳感器融合、簡(jiǎn)單AI推理都有底氣。2MB Flash和1MB RAM這在MCU里是相當(dāng)奢侈的配置。F103的64KB Flash跑個(gè)稍微大點(diǎn)的協(xié)議棧就滿了H7這邊就從容很多。外設(shè)規(guī)格高USB OTG FS/HS、SDMMC、FMC、以太網(wǎng)MAC、多個(gè)UART/SPI/I2C基本覆蓋了大多數(shù)項(xiàng)目原型需求。LQFP100封裝引腳足夠多但還在手工焊接能搞定的范圍內(nèi)。如果選BGA封裝的H743難度直接上升好幾個(gè)等級(jí)。我選的H743VGT6是100腳封裝VGT6后綴表示2MB Flash、1MB RAM。這個(gè)料在立創(chuàng)商城、得捷、貿(mào)澤上都很常見(jiàn)價(jià)格雖然比F103貴不少但比起同性能的MPU方案做原型驗(yàn)證還是劃算的。1.2 為什么不自用官方板非要自己畫(huà)可能會(huì)有人問(wèn)官方Nucleo-H743ZI板子也不貴功能齊全為什么非要自己畫(huà)一塊我的理由有三點(diǎn)官方板為了兼容Arduino和 Morpho 接口把大量引腳用在排針上高速信號(hào)走線也比較長(zhǎng)某些實(shí)驗(yàn)環(huán)境下并不理想。官方板電源設(shè)計(jì)和我的實(shí)際項(xiàng)目供電需求不一致。我這邊需要確認(rèn)5V輸入、3.3V系統(tǒng)電源、低噪聲電源域這幾項(xiàng)指標(biāo)自己做板才能精準(zhǔn)控制。自己畫(huà)一遍最小系統(tǒng)板能逼著你把H743的數(shù)據(jù)手冊(cè)、參考手冊(cè)、硬件設(shè)計(jì)指南都過(guò)一遍。這個(gè)過(guò)程中積累的理解比用官方板跑十個(gè)例程都值。尤其是電源、時(shí)鐘、復(fù)位這幾個(gè)“最小系統(tǒng)”的命門(mén)只有自己設(shè)計(jì)過(guò)才真正知道芯片為什么會(huì)跑飛、為什么下載不穩(wěn)定。1.3 最小系統(tǒng)板的功能邊界最小系統(tǒng)板不等于“把芯片所有外設(shè)都鋪上去”。我的理解是一塊能穩(wěn)定運(yùn)行、方便調(diào)試、可靈活擴(kuò)展的底板。具體到這塊板我規(guī)劃了這些功能模塊電源輸入接口支持USB 5V供電也支持外部5V直流電源輸入。3.3V電源系統(tǒng)為MCU、傳感器接口、邏輯電路供電。25MHz HSE高速晶振電路和32.768kHz LSE低速晶振電路。復(fù)位電路、BOOT配置電路、SWD調(diào)試接口。基礎(chǔ)外設(shè)LED、用戶按鍵、一個(gè)USB轉(zhuǎn)串口電路。擴(kuò)展接口把UART、SPI、I2C、USB、SDMMC、FMC等關(guān)鍵引腳以排針?lè)绞揭?。這樣設(shè)計(jì)既不把板子搞成“外設(shè)全家桶”又能滿足大多數(shù)開(kāi)發(fā)場(chǎng)景。后面我還會(huì)詳細(xì)說(shuō)每個(gè)模塊的設(shè)計(jì)考量和實(shí)際測(cè)試結(jié)果。2. 電源管理設(shè)計(jì)最小系統(tǒng)最容易翻車的地方2.1 先算功耗再定電源拓?fù)潆娫丛O(shè)計(jì)不能拍腦袋得先估算整板功耗。H743在480MHz主頻、全速運(yùn)行內(nèi)部Flash和外設(shè)的情況下電流一般在200到300mA左右。如果后續(xù)通過(guò)排針驅(qū)動(dòng)LED、連接傳感器模塊、或者掛USB設(shè)備整板3.3V電流很容易沖到400mA以上。我給電源的余量是按持續(xù)500mA設(shè)計(jì)的短時(shí)峰值能到800mA更好。這樣一算電源拓?fù)渚捅容^清晰了輸入5V主要輸出3.3V另外MCU內(nèi)部還有內(nèi)核電壓由芯片內(nèi)部的LDO或SMPS從3.3V降壓產(chǎn)生外部只需要在VCAP腳上接電容就行不需要我們額外做一路核電壓。這一點(diǎn)比早期某些需要外部多路電源的處理器省心很多。2.2 LDO還是DC-DC這里怎么選很多朋友糾結(jié)5V轉(zhuǎn)3.3V用LDO還是DC-DC。我的建議是分場(chǎng)景如果你的系統(tǒng)對(duì)模擬噪聲敏感比如要用ADC做高精度采集或者要給音頻Codec供電優(yōu)先選擇低噪聲LDO。原理很簡(jiǎn)單DC-DC是開(kāi)關(guān)電源開(kāi)關(guān)頻率及其諧波會(huì)耦合到敏感模擬電路里很難徹底濾干凈。如果系統(tǒng)整體功耗大比如超過(guò)300mA或者你用電池供電LDO的發(fā)熱和效率問(wèn)題就非常突出了。5V輸入轉(zhuǎn)3.3V壓差1.7VLDO的效率只有3.3/566%左右剩下的34%都變成熱量。500mA電流下LDO功耗接近0.85W封裝小了根本扛不住。我這塊最小系統(tǒng)板最終選擇了雙級(jí)方案先用一顆DC-DC把5V降到3.6V左右再用一顆高PSRR的LDO從3.6V降到3.3V。這樣既保證了效率又用LDO把開(kāi)關(guān)紋波壓了下去。DC-DC我用的MP2315效率高、外圍簡(jiǎn)單LDO用的RT9013500mA輸出噪聲表現(xiàn)不錯(cuò)價(jià)格也便宜。如果你覺(jué)得這個(gè)方案復(fù)雜純LDO也不是不行選一顆能承受1W功耗、帶散熱焊盤(pán)的型號(hào)比如AMS1117不行的話換ME6211或者更合適的。但AMS1117我不推薦它壓差大、靜態(tài)電流大在很多場(chǎng)景下已經(jīng)過(guò)時(shí)了。電源管理這塊我還做了軟啟動(dòng)和輸入反接保護(hù)。反接保護(hù)用一個(gè)PMOS或者肖特基二極管都行原型板我用的是肖特基簡(jiǎn)單可靠。DC-DC的輸出電感選了4.7uH開(kāi)關(guān)頻率1.5MHz電感和輸出電容選型參考了數(shù)據(jù)手冊(cè)推薦值實(shí)測(cè)紋波在20mV以內(nèi)。2.3 供電引腳與去耦電容的部署細(xì)節(jié)H743VGT6的電源引腳很多100腳的封裝上VDD/VSS就有好幾組還有VCAP1、VCAP2、VBAT、VDDSDMMC等特殊引腳設(shè)計(jì)時(shí)一定要仔細(xì)核對(duì)數(shù)據(jù)手冊(cè)。我這邊實(shí)際部署是這樣做的所有數(shù)字VDD引腳附近靠近引腳放置一個(gè)100nF MLCC到地用于濾除高頻噪聲。這個(gè)電容不能省也盡量別放到PCB背面距離引腳越近越好。電源網(wǎng)絡(luò)入口處放一個(gè)10uF陶瓷電容吸收低頻紋波。陶瓷電容ESR低比鉭電容更適合做輸出濾波。VCAP1和VCAP2這是H743內(nèi)部主LDO的旁路引腳必須接電容到地。具體的容值手冊(cè)里寫(xiě)得很明確通常是一個(gè)2.2uF加一個(gè)100nF并聯(lián)注意一下H750/H743的VCAP要求可能不完全一樣要以你所用型號(hào)的datasheet為準(zhǔn)。這兩個(gè)電容如果不裝芯片上電后核心電壓建立不起來(lái)表現(xiàn)就是完全無(wú)法下載程序好像芯片“沒(méi)反應(yīng)”。VBAT腳如果不打算用外部電池給RTC供電直接接到3.3V就行。這樣內(nèi)部備份寄存器和RTC在系統(tǒng)掉電時(shí)也會(huì)丟失數(shù)據(jù)但畢竟最小系統(tǒng)板不追求這個(gè)可以接受。VDDSDMMC如果你用SDMMC接口這個(gè)引腳可以接3.3V為SD卡接口供電如果不用相關(guān)功能直接和VDD連一起即可。電源指示燈我用了綠色LED串一個(gè)1k電阻從3.3V接到地電流約1.3mA亮度足夠又不至于刺眼。2.4 軟件層面的電源管理配置不要以為電源管理只是硬件的事。H743上電默認(rèn)從內(nèi)部HSI運(yùn)行主頻是較低的。要跑到480MHz必須在軟件里配置好電源、時(shí)鐘和Flash等待周期。其中最容易出問(wèn)題的是VOSVoltage Scaling設(shè)置。H743有多個(gè)電壓等級(jí)不同主頻對(duì)VOS等級(jí)的要求不一樣。默認(rèn)復(fù)位后VOS等級(jí)可能不是最高的如果你直接配PLL倍頻到480MHz而不先提升VOS芯片可能隨機(jī)死機(jī)、跑飛或者Flash讀取錯(cuò)誤。我的做法是用STM32CubeMX生成工程時(shí)在Clock Configuration里選擇480MHz讓工具自動(dòng)匹配VOS等級(jí)和Flash延時(shí)然后再檢查生成的HAL_PWREx_ControlVoltageScaling函數(shù)是否被正確調(diào)用。關(guān)于“處理器電源管理設(shè)置多少好”這個(gè)問(wèn)題從我實(shí)際調(diào)試的經(jīng)驗(yàn)看沒(méi)有統(tǒng)一答案。核心原則是主頻想要跑多高電源等級(jí)就要配到位但低功耗模式下又可以調(diào)低電壓等級(jí)或者關(guān)閉部分外設(shè)時(shí)鐘。比如Stop模式下H7的電流可以降到很低適合電池供電場(chǎng)景。如果你只是跑跑點(diǎn)燈、串口打印主頻完全可以降到240MHz甚至更低VOS也降到低檔發(fā)熱和功耗都會(huì)明顯下降。所以不是一味追求480MHz才算“設(shè)置得好”而是按需求配。3. 時(shí)鐘、復(fù)位、啟動(dòng)和下載調(diào)試讓芯片先“活”起來(lái)3.1 晶體選型與負(fù)載電容計(jì)算H743的HSE高速外部時(shí)鐘我選了25MHz無(wú)源晶振這是因?yàn)镠7系列很常見(jiàn)的時(shí)鐘樹(shù)配置是25MHz經(jīng)過(guò)PLL倍頻到480MHz。也有用8MHz晶振的但需要調(diào)整PLL分頻系數(shù)原理一樣我習(xí)慣用25MHzCubeMX里配置比較順手。晶振旁邊的兩個(gè)負(fù)載電容不是隨便選值。以25MHz晶振為例如果晶振的CL負(fù)載電容標(biāo)的是20pF那么公式是CL (C1*C2)/(C1C2) Cstray。PCB上引腳間和走線還有約3到5pF的雜散電容所以C1C2取30pF左右比較合適。選電容時(shí)要注意用C0G/NPO材質(zhì)誤差5%以內(nèi)不要用高介電常數(shù)的X5R/X7R它們?cè)诓煌妷合碌娜葜灯茣?huì)影響到起振頻率。LSE低速晶振我用了32.768kHz負(fù)載電容12.5pF那么兩個(gè)匹配電容大概在16pF到22pF之間具體按PCB雜散電容調(diào)整。LSE主要是給RTC用的如果你的最小系統(tǒng)板不需要RTC功能可以省略LSE電路系統(tǒng)也能正常跑。還有一個(gè)高頻PCB設(shè)計(jì)上的盲區(qū)晶振走線盡量短兩邊要包地下面也不要走其它信號(hào)線尤其不能走電源線或高頻數(shù)字線否則容易造成干擾導(dǎo)致起振失敗或者頻率偏移。3.2 復(fù)位電路選型RC還是專用芯片最省成本的做法是10k上拉電阻加100nF對(duì)地電容NRST引腳內(nèi)部本來(lái)就有上拉外部再并聯(lián)一個(gè)按鍵到地手動(dòng)復(fù)位也方便。這個(gè)方案在大多數(shù)實(shí)驗(yàn)環(huán)境下都沒(méi)問(wèn)題。但如果你的板子要放在電磁環(huán)境復(fù)雜的場(chǎng)合或者需要監(jiān)控電源跌落我建議用專用復(fù)位芯片比如MAX809或者STM809它們能在電源電壓掉到閾值以下時(shí)產(chǎn)生可靠的復(fù)位信號(hào)避免MCU在電壓不穩(wěn)定時(shí)進(jìn)入未知狀態(tài)。價(jià)格也就幾毛錢(qián)可靠性提升明顯。我這塊板做了兼容設(shè)計(jì)默認(rèn)貼RC復(fù)位預(yù)留了復(fù)位芯片的焊盤(pán)方便后續(xù)按場(chǎng)景調(diào)整。復(fù)位腳上還有一個(gè)常見(jiàn)坑NRST上如果接了較大的電容雖然能延長(zhǎng)復(fù)位脈寬但可能影響SWD下載時(shí)的復(fù)位操作。很多調(diào)試器下載程序時(shí)是靠復(fù)位信號(hào)進(jìn)入燒錄模式的如果復(fù)位電容太大會(huì)造成下載超時(shí)。100nF一般沒(méi)問(wèn)題但不要貪大。3.3 BOOT配置與SWD接口H743的BOOT0引腳需要外部下拉電阻到地這樣上電后從用戶Flash啟動(dòng)。BOOT1我同樣做了下拉。有些設(shè)計(jì)為了省事把BOOT0直接接地也能跑但如果想以后通過(guò)系統(tǒng)Bootloader升級(jí)固件就沒(méi)辦法切換啟動(dòng)模式了。我建議把BOOT0接一個(gè)跳線或者按鍵平時(shí)拉低需要進(jìn)入Bootloader時(shí)拉高再?gòu)?fù)位一次。這個(gè)設(shè)計(jì)在量產(chǎn)維護(hù)階段特別有用。SWD調(diào)試接口我只引了4根線SWDIO、SWCLK、GND、NRST。SWDIO對(duì)應(yīng)PA13SWCLK對(duì)應(yīng)PA14。別小看這4根線下載不穩(wěn)定的問(wèn)題十有八九出在它們身上。連接ST-Link時(shí)一定要確認(rèn)GND是連通的最好用獨(dú)立的GND線而不是靠USB共地。SWDIO和SWCLK上可以各加一個(gè)10k上拉增強(qiáng)可靠性。我個(gè)人推薦使用帶絕緣外殼的1.27mm 2x5排針座和J-Link / ST-Link的轉(zhuǎn)接板匹配度高插拔也穩(wěn)。4. 外設(shè)接口設(shè)計(jì)不只是把IO引出來(lái)4.1 最小必要外設(shè)LED、按鍵、串口LED電路的主旨是限流電阻別亂選。通過(guò)LED的電流公式是I(3.3V-Vf)/R紅色LED的Vf大約1.8到2.0VR取1k時(shí)電流約1.3到1.5mA亮度適合做指示燈如果你想讓LED更亮可以取330歐電流約4mA但不要直接拿IO口驅(qū)動(dòng)大電流設(shè)備。H743的IO額定輸出能力有限單個(gè)引腳不超過(guò)20mA整芯片也有總電流限制所以繼電器、電機(jī)、電磁閥這類設(shè)備一定不能直接接MCU引腳。按鍵電路我用了最簡(jiǎn)單的方式一端接地另一端接IO并打開(kāi)內(nèi)部上拉。硬件上不需要外置上拉電阻但要注意按鍵兩端并聯(lián)一個(gè)100nF電容做硬件消抖或者至少在軟件里做10到20ms的消抖。另外如果按鍵引腳被復(fù)用為其它功能上拉配置可能會(huì)干擾外設(shè)設(shè)計(jì)時(shí)要留意。串口是調(diào)試必備。我選了USART1引腳用PA9/PA10通過(guò)一顆CH340C橋接芯片轉(zhuǎn)成USB口。CH340C內(nèi)置晶振不需要外接12MHz晶體外圍電路極簡(jiǎn)實(shí)測(cè)在Win/Linux/macOS下兼容性都不錯(cuò)。USB座子我用的是Micro USB也可以換Type-C但要把CC引腳的識(shí)別處理好。串口這部分還有一個(gè)很實(shí)用的點(diǎn)可以給CH340C的DTR/RTS加上自動(dòng)下載電路實(shí)現(xiàn)IDE里點(diǎn)一下“下載”就能自動(dòng)復(fù)位并進(jìn)入Bootloader擺脫手動(dòng)撥跳線。我這次留了對(duì)應(yīng)的三極管電路后面驗(yàn)證了再展開(kāi)講。4.2 USB接口設(shè)計(jì)留出USB同時(shí)搞定供電和下載H743的USB OTG FS可以直接做USB設(shè)備不需要外部PHY。DM/DP引腳分別是PA11和PA12。實(shí)際布線時(shí)這兩根線要做差分走線盡量等長(zhǎng)、短距離串接22歐姆電阻進(jìn)行阻抗匹配并在靠近座子位置加ESD防護(hù)芯片。這個(gè)ESD芯片我有一次偷懶沒(méi)貼結(jié)果調(diào)試時(shí)上電瞬間燒了一顆芯片的USB模塊從那以后就長(zhǎng)記性了USB接口的ESD保護(hù)不能省。VBUS腳可以直接接USB座的5V電源用來(lái)檢測(cè)USB是否插入。但注意VBUS的電壓范圍不能超過(guò)芯片允許值需要串聯(lián)分壓電阻或者用專用的電平檢測(cè)方式不能直接把5V灌到VBUS引腳上。板載其它電路如果需要USB的5V功率建議走獨(dú)立的5V網(wǎng)絡(luò)并通過(guò)磁珠或自恢復(fù)保險(xiǎn)絲隔離。4.3 SDIO、以太網(wǎng)與擴(kuò)展排針的取舍H743VGT6的SDMMC接口支持SD卡我預(yù)留了SD卡座的位置。SD卡使用的是3.3V電平和主控IO兼容但SDIO總線速度較高數(shù)據(jù)線和時(shí)鐘線要盡量短時(shí)鐘線最好包地??ㄗ腃D卡檢測(cè)和WP寫(xiě)保護(hù)引腳可以引出到GPIO也可以懸空不過(guò)接上之后軟件處理會(huì)更優(yōu)雅。以太網(wǎng)這塊我原本想直接加LAN8720A PHY因?yàn)镠743內(nèi)置了MAC配上RMII接口就能實(shí)現(xiàn)以太網(wǎng)。但考慮到最小系統(tǒng)板的定位和布線面積最終我只在排針上引出了RMII相關(guān)的信號(hào)。后續(xù)有網(wǎng)絡(luò)需求時(shí)再畫(huà)一塊子板疊上去這種方式比把所有東西都堆在主板上靈活不少。FMC同理H743的FMC可以掛SDRAM、NOR Flash但作為最小系統(tǒng)板我選擇把FMC地址/數(shù)據(jù)線引出而不直接貼芯片這樣主板的復(fù)雜度和成本都可控。所有空閑IO都用2.54mm排針引出并按功能分組電源區(qū)、UART區(qū)、SPI區(qū)、I2C區(qū)、ADC區(qū)、PWM區(qū)等。這樣做的好處是調(diào)試時(shí)找引腳方便飛線也不容易短路。4.4 管腳分配避坑復(fù)用沖突排查思路管腳分配是外設(shè)設(shè)計(jì)里最容易被忽視但坑最多的環(huán)節(jié)。H7的引腳復(fù)用非常復(fù)雜一個(gè)引腳往往對(duì)應(yīng)好幾個(gè)外設(shè)功能如果不仔細(xì)核對(duì)很容易出現(xiàn)“兩個(gè)外設(shè)搶一個(gè)引腳”的沖突。我在定管腳前先用STM32CubeMX把所有要用到的外設(shè)配置了一遍讓工具自動(dòng)生成管腳分配方案再手動(dòng)檢查幾個(gè)關(guān)鍵點(diǎn)晶振引腳PH0/PH1OSC_IN/OSC_OUT和PC14/PC15OSC32_IN/OSC32_OUT是否被誤用為GPIO一旦啟用外部晶振這些引腳就不能再做普通IO了。USB OTG_FS的PA11/PA12和某些串口復(fù)用是否有沖突。調(diào)試引腳PA13/PA14是否被復(fù)用成普通GPIO。如果你用CubeMX配置時(shí)把SWD關(guān)掉了下載器就連不上了只能通過(guò)恢復(fù)出廠設(shè)置或者用ST-Link的connect under reset模式救回來(lái)。用于ADC的引腳要注意有無(wú)其它數(shù)字外設(shè)的開(kāi)關(guān)噪聲耦合到模擬通道上布局上盡量讓模擬部分和數(shù)字部分分開(kāi)。5. PCB Layout與焊接調(diào)試從圖紙到能跑中間全是坑5.1 最小系統(tǒng)板的布局與走線要點(diǎn)PCB設(shè)計(jì)我直接用了4層板疊層方案是信號(hào)-地-電源-信號(hào)。4層板比2層板多花幾十塊錢(qián)但對(duì)電源完整性和信號(hào)質(zhì)量提升很大。特別是H743跑到480MHz核心電流變化快完整的地平面和電源平面能顯著降低噪聲。如果你的成本實(shí)在敏感2層板也能做但電源走線要加寬地線要盡量鋪銅晶振和高速信號(hào)走線下方不要被其它走線切斷。布局上我的習(xí)慣順序是MCU居中電源電路放在一角晶振靠近MCU的PH0/PH1復(fù)位按鍵和BOOT跳線放在邊緣USB座子放在板邊排針均勻分布在四邊。去耦電容是重中之重每個(gè)VDD腳旁邊的100nF電容我都是先放電容再走線確保電容和引腳之間沒(méi)有長(zhǎng)距離繞線。電源入口的10uF電容放在DC-DC輸出端LDO輸出端再放一組10uF和100nF。走線寬度上5V入口至少1mm以上3.3V主電源1mm其它信號(hào)線0.2mm到0.3mm。USB差分線可以做5mil線寬和5mil間距盡量短避免打過(guò)孔換層如果必須換層要在過(guò)孔附近補(bǔ)一個(gè)地過(guò)孔保證回流路徑連續(xù)。5.2 LQFP100手工焊接方法LQFP100的引腳間距是0.5mm手工焊接確實(shí)需要一點(diǎn)技巧但遠(yuǎn)沒(méi)有想象的那么難。我的方法有兩個(gè)如果條件允許首選鋼網(wǎng)加回流焊。開(kāi)一片鋼網(wǎng)也就幾十塊錢(qián)涂好錫膏后用熱風(fēng)槍或者小回流焊機(jī)加熱效果非常穩(wěn)定連錫概率很低。如果只是想快速驗(yàn)證手工拖焊也能做先在引腳上涂足量助焊劑用烙鐵掛上適量焊錫從一側(cè)順著引腳拖過(guò)去讓焊錫自然流動(dòng)。多拖幾遍后用助焊劑清洗劑清潔板面然后用放大鏡或者顯微鏡檢查連錫情況。萬(wàn)一連錫了用烙鐵加助焊劑反復(fù)拖幾遍就能分開(kāi)。焊接順序上先焊電源部分再焊MCU最后焊晶振、電容、排針這些外圍元件。焊完不要急著上電先用萬(wàn)用表量一下3.3V和GND之間的電阻如果接近0就說(shuō)明有短路先排查再上電否則可能直接把芯片燒了。5.3 上電與調(diào)試的完整檢查流程板子焊好后我有一套固定的檢查流程照著走能省掉很多無(wú)謂的折騰目檢和萬(wàn)用表檢查3.3V對(duì)GND電阻正常在幾百歐以上5V和3.3V之間不能短路。上電測(cè)電壓輸入5V正常DC-DC輸出3.6V左右LDO輸出3.3V在±3%內(nèi)。再用萬(wàn)用表量VCAP1/VCAP2這兩個(gè)引腳上應(yīng)該有內(nèi)部LDO產(chǎn)生的約1.2V左右電壓。如果沒(méi)有先檢查VCAP電容裝沒(méi)裝、焊沒(méi)焊好。用示波器看NRST引腳上電時(shí)應(yīng)該有一個(gè)由低到高的上升沿然后穩(wěn)定在高電平。如果一直為低復(fù)位電路有問(wèn)題芯片所有功能都會(huì)失效。接ST-Link打開(kāi)STM32CubeProgrammer選擇SWD模式點(diǎn)擊Connect。如果能讀到芯片ID說(shuō)明內(nèi)核已經(jīng)能通信了。讀不到也別慌先檢查SWDIO/SWCLK是否接反再試試“Connect under reset”模式或者手動(dòng)把BOOT0拉高復(fù)位后再連。下載一個(gè)最基本的GPIO點(diǎn)燈程序確認(rèn)時(shí)鐘配置、主頻、GPIO輸出都正常。這個(gè)時(shí)候我會(huì)用示波器測(cè)MCO引腳輸出系統(tǒng)時(shí)鐘驗(yàn)證PLL有沒(méi)有按要求倍頻。再測(cè)串口用USB轉(zhuǎn)串口連接PA9/PA10回環(huán)測(cè)試收發(fā)。通過(guò)后再測(cè)USB枚舉、SD卡讀寫(xiě)等外設(shè)。5.4 常見(jiàn)問(wèn)題速查表現(xiàn)象可能原因排查方法上電后3.3V電壓被拉低或短路電容短路、芯片焊接連錫、元件裝反萬(wàn)用表電阻擋排查3.3V對(duì)地短路目檢芯片引腳拆掉可疑元件下載器無(wú)法連接SWD接線錯(cuò)誤、BOOT0狀態(tài)不對(duì)、VCAP電容缺失、NRST被拉低檢查SWDIO/SWCLK/GND連接拉高BOOT0后復(fù)位再連測(cè)NRST電平檢查VCAP電壓程序能跑但偶爾死機(jī)VOS等級(jí)不夠、Flash延遲配置錯(cuò)誤、電源紋波大確認(rèn)CubeMX時(shí)鐘配置正確檢查DC-DC/LDO紋波必要時(shí)降低主頻測(cè)試HSE不起振負(fù)載電容不匹配、晶振虛焊、晶振附近有干擾示波器測(cè)PH0引腳確認(rèn)起振檢查負(fù)載電容計(jì)算查看PCB走線是否包地USB枚舉不識(shí)別DM/DP接反、缺少ESD防護(hù)導(dǎo)致芯片損壞、1.5k上拉問(wèn)題核對(duì)PA11/PA12方向檢查USB座焊接測(cè)量VBUS電壓必要時(shí)換芯片SD卡初始化失敗上拉電阻缺失、SDIO走線過(guò)長(zhǎng)、時(shí)鐘頻率過(guò)高確認(rèn)SDIO各線接法和上拉降低SDMMC時(shí)鐘頻率再試系統(tǒng)發(fā)熱嚴(yán)重IO短路、VOS配置過(guò)高、負(fù)載過(guò)重檢查GPIO配置測(cè)量各電源域電流逐外設(shè)斷開(kāi)測(cè)試這個(gè)表里的很多問(wèn)題我在調(diào)試H743的過(guò)程中都踩過(guò)。印象最深的是一次下載失敗折騰了大半天最后發(fā)現(xiàn)是VCAP2的電容虛焊核心電壓沒(méi)建立起來(lái)。所以如果你遇到“芯片完全沒(méi)反應(yīng)”的情況第一件事不是懷疑芯片壞了而是先查VCAP電容和3.3V電源。最后再分享一個(gè)我個(gè)人的習(xí)慣畫(huà)原理圖的時(shí)候把每一路電源的測(cè)試點(diǎn)都留出來(lái)方便示波器探頭夾。最小系統(tǒng)板調(diào)試時(shí)電源波形和復(fù)位時(shí)序是最重要的兩個(gè)信號(hào)有了測(cè)試點(diǎn)排查問(wèn)題會(huì)快得多。H7這塊板子做完以后我最大的體會(huì)是——最小系統(tǒng)板設(shè)計(jì)看似簡(jiǎn)單但真正要做到“上電就跑、長(zhǎng)期不崩”電源管理和PCB布局才是花心思最多的地方。希望這篇文章能幫你少走一些彎路有任何問(wèn)題歡迎在評(píng)論區(qū)交流。