板設(shè)計(jì)實(shí)戰(zhàn):從電源管理到PCB布局與調(diào)試)
上個(gè)月我給自己畫(huà)了一塊STM32H743VGT6最小系統(tǒng)板前后打樣、焊接、調(diào)試花了大概兩個(gè)周末中間踩了不少坑也有幾個(gè)反復(fù)查手冊(cè)才弄明白的細(xì)節(jié)。今天把這整個(gè)項(xiàng)目從頭到尾復(fù)盤(pán)一遍從電源管理講到外設(shè)接口把我實(shí)際用的電路、引腳分配、PCB布局思路、翻車經(jīng)歷都整理出來(lái)。這篇內(nèi)容適合兩類人一是想從F103這類M3核升級(jí)到高性能M7核但對(duì)H743供電和時(shí)鐘系統(tǒng)還不太熟的人二是準(zhǔn)備自己畫(huà)核心板想找一份能直接照著抄的參考方案的工程師。H743VGT6是一顆100腳封裝、1MB Flash、1MB SRAM、最高跑到480MHz的Cortex-M7芯片很多人覺(jué)得它復(fù)雜其實(shí)把它拆成“電源、時(shí)鐘、復(fù)位、調(diào)試、IO引出”五件事設(shè)計(jì)難度和你畫(huà)一塊STM32F103C8T6最小系統(tǒng)板差不了太多只是幾個(gè)關(guān)鍵點(diǎn)必須認(rèn)真處理。如果你之前只做過(guò)F103核心板先提醒一句H743的電源、時(shí)鐘、啟動(dòng)邏輯跟F103并不是一回事不能把老經(jīng)驗(yàn)完全搬過(guò)來(lái)。下面我按項(xiàng)目實(shí)際的推進(jìn)順序?qū)懨恳徊蕉寄苤苯勇涞亍?. 項(xiàng)目概述H743最小系統(tǒng)板要解決什么問(wèn)題1.1 H743VGT6到底強(qiáng)在哪為什么值得自己畫(huà)板先說(shuō)說(shuō)我為什么選H743而不是繼續(xù)用F407或者買現(xiàn)成開(kāi)發(fā)板。H743VGT6這顆芯片的核心亮點(diǎn)很明確Cortex-M7內(nèi)核帶雙精度FPU和DSP指令主頻480MHz算力大概在1000 CoreMark左右比F407高了快一倍還多。配合1MB SRAM和1MB Flash跑音頻算法、軟件解調(diào)、電機(jī)控制這類重負(fù)載任務(wù)都有富余。外設(shè)方面H743帶兩個(gè)FDCAN、USB OTG FS/HSHS需要外部PHY、3個(gè)16位ADC、2個(gè)DAC、SAI、SDMMC、多路UART/SPI/I2C基本覆蓋了工業(yè)控制和儀器儀表類應(yīng)用的絕大多數(shù)需求。但問(wèn)題也在這里100腳封裝要引出這么多外設(shè)引腳復(fù)用非常緊張很多功能是打架的。比如FDCAN1和USB_OTG_FS的引腳會(huì)沖突SPI1和DAC的PA4/PA5會(huì)沖突。自己畫(huà)最小系統(tǒng)板的最大好處就是你只引自己項(xiàng)目要用的功能把引腳規(guī)劃?rùn)?quán)完全握在手里而不是被開(kāi)發(fā)板廠商的布局牽著走。另外還有個(gè)很實(shí)際的原因現(xiàn)成的H743核心板貴的幾百上千便宜的又往往在電源和去耦上偷工減料跑高速時(shí)不穩(wěn)定。自己畫(huà)一塊元件成本加起來(lái)不到一百塊還能順便把PCB設(shè)計(jì)的功底練扎實(shí)。1.2 最小系統(tǒng)的“最小”邊界怎么劃定我見(jiàn)過(guò)不少人把最小系統(tǒng)板做成了“什么都要有”的擴(kuò)展板結(jié)果引腳沖突、布局混亂、調(diào)試?yán)щy。我的原則是能跑系統(tǒng)、能下載調(diào)試、能引出絕大部分IO這三點(diǎn)滿足就夠了。具體來(lái)說(shuō)我這塊板包含以下模塊供電部分USB Type-C的5V輸入一顆3.3V LDO電源指示燈時(shí)鐘部分25MHz外部HSE晶振、32.768kHz LSE晶振復(fù)位部分NRST的RC復(fù)位電路和按鍵啟動(dòng)部分BOOT0PH3下拉電阻加跳線帽調(diào)試部分SWD五針接口SWDIO、SWCLK、NRST、3.3V、GND外設(shè)部分兩排2.54mm排針引出電源、地、串口、FDCAN、SPI、I2C、ADC、PWM等IO輔助部分一個(gè)用戶LED、一個(gè)用戶按鍵這里我不加USB座子之外的其他重型外設(shè)比如以太網(wǎng)PHY、外部SDRAM、SD卡座都沒(méi)放。原因很簡(jiǎn)單H743VGT6雖然內(nèi)部資源很強(qiáng)但100腳封裝的IO數(shù)量有限加上這些模塊會(huì)讓排針引出變得非常擁擠而且硬件上不必要的復(fù)雜度只會(huì)增加排查難度。你需要什么外設(shè)直接從排針上飛線或者做轉(zhuǎn)接板接到最小系統(tǒng)板上就行。1.3 整個(gè)項(xiàng)目下來(lái)的流程地圖整個(gè)項(xiàng)目的推進(jìn)節(jié)奏大概是這樣的先定需求、選封裝然后設(shè)計(jì)電源方案再畫(huà)時(shí)鐘、復(fù)位、啟動(dòng)電路接著規(guī)劃調(diào)試接口和外圍IO分配然后是PCB布局布線最后焊接調(diào)試。下面每個(gè)環(huán)節(jié)我都會(huì)結(jié)合自己的實(shí)操來(lái)講重點(diǎn)說(shuō)哪些地方容易翻車。2. 電源管理這次不能照抄F1032.1 VCAP與內(nèi)部LDOH743供電的核心區(qū)別如果你畫(huà)過(guò)F103的最小系統(tǒng)板肯定熟悉這套流程3.3V直接接到所有VDD引腳芯片就活了。到了H743這里不能這么干因?yàn)镠743內(nèi)部有一個(gè)可調(diào)節(jié)輸出的LDO負(fù)責(zé)給內(nèi)核邏輯供電這個(gè)LDO的輸出引腳就是VCAP。VCAP這個(gè)引腳的接法極其重要不能懸空必須外接低ESR的MLCC電容到地。具體的電容量組合以你手里的STM32H743數(shù)據(jù)手冊(cè)為準(zhǔn)官方參考設(shè)計(jì)常見(jiàn)的是單個(gè)4.7μF也有人用兩個(gè)2.2μF并聯(lián)我實(shí)際板子上用的是2.2μF加2.2μF并聯(lián)的方案跑480MHz穩(wěn)定運(yùn)行沒(méi)有問(wèn)題。選電容時(shí)要注意三點(diǎn)材質(zhì)選X7R或X5R耐壓16V以上封裝盡量小但要能焊接我用的0402。為什么這個(gè)電容這么關(guān)鍵因?yàn)閮?nèi)部LDO的動(dòng)態(tài)響應(yīng)全靠它來(lái)緩沖。內(nèi)核在跑重負(fù)載指令時(shí)電流需求瞬間變化如果VCAP電容離引腳太遠(yuǎn)或者ESR太高內(nèi)核電壓就會(huì)跌落輕則莫名死機(jī)重則直接燒芯片。我第一版PCB就是沒(méi)重視把VCAP電容放在了板子遠(yuǎn)端結(jié)果上電后芯片發(fā)熱異常重新打樣才解決。另外H743的VDDLDO引腳是內(nèi)部LDO的電源輸入常規(guī)接3.3V就行。VBAT引腳如果不用外部電池直接接3.3V。VDDUSB不接USB時(shí)也接3.3V。VDDMMC不用SDMMC時(shí)同樣接3.3V。這些都是H743比較特殊的地方容易漏接。2.2 電源樹(shù)設(shè)計(jì)與LDO選型我的電源樹(shù)很簡(jiǎn)單USB口的5V進(jìn)來(lái)經(jīng)過(guò)一顆LDO降到3.3V然后供給芯片的所有3.3V電源域。為什么不用DCDC因?yàn)樽钚∠到y(tǒng)板對(duì)功耗不敏感板子本身面積小DCDC的電感、續(xù)流二極管、反饋電阻會(huì)占不少地方而且選型不當(dāng)會(huì)產(chǎn)生開(kāi)關(guān)紋波干擾ADC采樣。LDO方案紋波低、電路簡(jiǎn)單、調(diào)試容易唯一的問(wèn)題就是效率低、會(huì)發(fā)熱但對(duì)一塊調(diào)試用的最小系統(tǒng)板來(lái)說(shuō)完全能接受。LDO選型上要注意峰值電流。H743在480MHz全速運(yùn)行、Flash讀指令和外設(shè)全開(kāi)的情況下電流可以達(dá)到300mA以上如果還外接一些傳感器模塊余量要留足。AMS1117-3.3雖然便宜但壓差大輸入5V輸出3.3V后在大電流下發(fā)熱比較明顯而且這個(gè)器件的來(lái)路太多容易買到劣質(zhì)貨。我這塊板子用的是ME6211最大輸出700mA壓差低封裝SOT-23-5焊接也方便。如果你手頭只有AMS1117也沒(méi)問(wèn)題注意散熱焊盤(pán)鋪銅面積給足就行。2.3 去耦電容布局與VDDA細(xì)節(jié)電源部分最容易忽略的是VDD引腳的去耦。H743在100腳封裝里有十幾個(gè)VDD/VSS引腳對(duì)理論上每個(gè)VDD引腳旁邊都應(yīng)該放一顆100nF的0402電容這是保證芯片高速運(yùn)行時(shí)電源完整性的大前提。這里有個(gè)現(xiàn)實(shí)操作問(wèn)題LQFP100引腳間距只有0.5mm你把電容放在芯片正面電容和引腳之間的走線會(huì)很短效果最好但焊接起來(lái)有點(diǎn)考驗(yàn)焊工。我自己的做法是全部放在PCB背面每個(gè)VDD引腳打過(guò)孔到背面背面電容焊盤(pán)緊挨著過(guò)孔這樣路徑很短手工焊接也容易檢查。VDDA的處理我單獨(dú)說(shuō)一下。H743的模擬電源VDDA影響ADC和DAC的性能不能直接用數(shù)字3.3V線路硬接。我的做法是3.3V經(jīng)過(guò)一顆磁珠后再單獨(dú)供VDDA磁珠后面放1μF和100nF兩級(jí)電容到地。H743的VREF在100腳封裝里沒(méi)有獨(dú)立引出內(nèi)部直接連VDDA所以在VDDA上的濾波就等同于給ADC做了參考電壓濾波。如果你對(duì)ADC精度有更高要求還可以額外加一顆外部基準(zhǔn)芯片不過(guò)最小系統(tǒng)板階段我覺(jué)得沒(méi)必要。2.4 通電調(diào)試順序電源部分焊完之后直接上電很容易出問(wèn)題我的習(xí)慣是先不上主芯片或者先把芯片的電源引腳用膠帶隔離只焊LDO和電容然后上電測(cè)3.3V是否正常。確認(rèn)LDO輸出電壓在3.3V正負(fù)5%以內(nèi)、紋波不大之后再焊接主芯片重新上電用手背快速碰一下芯片表面如果幾秒鐘內(nèi)就燙到不能摸基本可以判斷是電源問(wèn)題立刻斷電檢查VCAP和VDD是否短路或者LDO是不是選型小了。這塊板上我還加了一個(gè)電源指示燈和一個(gè)測(cè)試點(diǎn)指示燈接在3.3V和地之間串一個(gè)1k電阻LED限流電流大概2.5mA就夠了太亮反而扎眼。測(cè)試點(diǎn)可以用萬(wàn)用表隨時(shí)量電壓調(diào)試時(shí)省很多事。3. 時(shí)鐘與復(fù)位確保芯片“醒得來(lái)”3.1 HSE晶振與負(fù)載電容H743的外部高速晶振HSE我選的是25MHz無(wú)源貼片晶振這也是ST官方評(píng)估板常用的頻率CubeMX里默認(rèn)的HSE_VALUE就是25MHz省得改配置。選25MHz而不是8MHz原因是它和PLL的分頻組合更好能更容易配出480MHz同時(shí)USB需要的48MHz時(shí)鐘也能更干凈地分出來(lái)。無(wú)源晶振必須配負(fù)載電容這個(gè)很多人直接用經(jīng)驗(yàn)值10pF/20pF其實(shí)有個(gè)簡(jiǎn)單的計(jì)算公式CL (C1 × C2) / (C1 C2) Cstray其中CL是晶振廠家給出來(lái)的負(fù)載電容值C1、C2是兩個(gè)外部電容Cstray是PCB走線和引腳引入的雜散電容一般取2pF到5pF。我用的25MHz晶振CL是12pFCstray估4pF兩個(gè)外部電容相等時(shí)12 (C × C) / (2C) 4 C/2 4所以C 16pF。實(shí)際取標(biāo)稱值15pF完全沒(méi)問(wèn)題。如果你用CL10pF的晶振按同樣公式算出來(lái)大約12pF取10pF到12pF都行。晶振布局上的坑我在第一版也踩過(guò)把晶振放在了HSE引腳對(duì)面隔著芯片走線繞了大半個(gè)IC。后來(lái)學(xué)乖了晶振必須放在HSE_IN/HSE_OUT引腳旁邊兩個(gè)負(fù)載電容分別從晶振引腳就近接地晶振下方盡量鋪地走線短而對(duì)稱別讓高頻信號(hào)和其他信號(hào)線交叉。3.2 LSE與低功耗時(shí)鐘32.768kHz的LSE晶振我是放了雖然最小系統(tǒng)板不一定用RTC但H743內(nèi)部的RTC、低功耗定時(shí)器和一些喚醒功能都依賴它。如果你不準(zhǔn)備用這些LSE不焊也能跑系統(tǒng)但我還是建議焊上反正占不了多大地方。LSE晶振的負(fù)載電容一般取6pF到12.5pF不等我用的這顆要求7pF按同樣的公式估算Cstray取3pF7 C/2 3算出C 8pF所以我外部放了兩顆8.2pF電容。如果LSE起振失敗或者RTC走時(shí)不準(zhǔn)先確認(rèn)電容和晶振的匹配性。另外H743的LSE驅(qū)動(dòng)能力可以通過(guò)軟件調(diào)檔具體在RTC配置里有LSE drive capability選項(xiàng)如果起振困難可以換高檔位。LSE晶振的另一個(gè)坑是OSC32_IN和OSC32_OUT這兩個(gè)引腳如果你不用LSE想當(dāng)普通GPIO用在CubeMX里要顯式關(guān)閉RTC的LSE再把PC14/PC15配置成GPIO輸出否則會(huì)有莫名的漏電流。這個(gè)細(xì)節(jié)官方手冊(cè)里有說(shuō)明實(shí)操中很多人沒(méi)注意。3.3 復(fù)位電路的設(shè)計(jì)與按鍵H743的NRST引腳內(nèi)部已經(jīng)帶了一個(gè)上拉電阻所以外部復(fù)位電路其實(shí)只需要一個(gè)100nF的電容到地用于濾除高頻干擾。為了手動(dòng)復(fù)位方便我在這個(gè)電容上并聯(lián)了一個(gè)輕觸按鍵按下時(shí)把NRST拉低實(shí)現(xiàn)復(fù)位。這里有個(gè)容易踩的細(xì)節(jié)如果你用ST-LINK調(diào)試調(diào)試器會(huì)連一個(gè)NRST到目標(biāo)板如果你的NRST下拉電容過(guò)大有些人放1μF甚至10μF會(huì)導(dǎo)致復(fù)位上升沿變慢ST-LINK在自動(dòng)復(fù)位時(shí)可能因?yàn)闄z測(cè)不到正確的電平而連接失敗。所以復(fù)位電容就用100nF千萬(wàn)別圖“濾波更干凈”加大容值。我還在這個(gè)復(fù)位電路上加了一個(gè)10kΩ電阻從3.3V到NRST算是給內(nèi)部上拉再加一道保險(xiǎn)。其實(shí)不加也沒(méi)問(wèn)題加了以后復(fù)位信號(hào)的上升沿會(huì)更干凈對(duì)長(zhǎng)線調(diào)試有好處。3.4 BOOT啟動(dòng)邏輯PH3-BOOT0怎么接H743的啟動(dòng)引腳叫PH3-BOOT0和F103的BOOT0不一樣它和普通GPIO復(fù)用在復(fù)位期間采樣電平?jīng)Q定啟動(dòng)源。我的接法是PH3引腳接一顆10kΩ下拉電阻到地然后預(yù)留一個(gè)3針跳線帽1腳接PH32腳接GND3腳接3.3V。默認(rèn)不插跳線帽時(shí)PH3被下拉為低電平從主Flash啟動(dòng)正常工作。需要進(jìn)系統(tǒng)Bootloader時(shí)把跳線帽插到PH3和3.3V之間復(fù)位芯片就會(huì)進(jìn)入系統(tǒng)存儲(chǔ)器中的Bootloader此時(shí)可以通過(guò)串口、DFU、FDCAN等方式燒錄程序。很多人會(huì)把BOOT0直接懸空反正內(nèi)部有下拉不接也能從Flash啟動(dòng)。但我的建議是加一個(gè)明晃晃的跳線因?yàn)楫?dāng)你把SWD引腳誤配置成普通GPIO導(dǎo)致調(diào)試器連不上時(shí)BOOT0拉高進(jìn)Bootloader是恢復(fù)手段之一這時(shí)候有跳線會(huì)比臨時(shí)飛線方便得多。H743的啟動(dòng)模式比F103多一個(gè)維度除了BOOT0引腳還有option byte里的nBOOT1等配置位正常情況下我們不用管。但如果你發(fā)現(xiàn)芯片啟動(dòng)行為很奇怪比如明明是燒錄到Flash卻進(jìn)了Bootloader可以打開(kāi)STM32CubeProgrammer連接后看看option bytes里BOOT相關(guān)位的值確認(rèn)沒(méi)有被動(dòng)過(guò)。4. 調(diào)試接口與外設(shè)接口設(shè)計(jì)4.1 SWD調(diào)試接口的接法調(diào)試接口我選SWD而不是JTAG理由很直接SWD只需要兩根數(shù)據(jù)線加電源地就能完成下載和調(diào)試省下來(lái)的引腳可以用于外設(shè)。SWDIO是PA13SWCLK是PA14這是固定的改不了。排針定義我按最常見(jiàn)的5針排列做3.3V、SWDIO、SWCLK、GND、NRST。為什么NRST單獨(dú)引出來(lái)因?yàn)镾T-LINK支持“Connect Under Reset”模式在目標(biāo)芯片的SWD被異常占用或者低功耗模式下可以通過(guò)拉低NRST來(lái)連接芯片并擦除Flash。這幾個(gè)信號(hào)線在排針上我做了絲印標(biāo)注調(diào)試時(shí)不用翻原理圖找線。SWDIO和SWCLK要不要外部上拉其實(shí)芯片內(nèi)部已經(jīng)有上下拉SWDIO內(nèi)部上拉SWCLK內(nèi)部下拉短距離連接ST-LINK時(shí)外部不接也能正常用。但我還是各放了一顆10kΩ上拉原因是調(diào)試線較長(zhǎng)時(shí)外部上拉能改善信號(hào)邊沿的完整性減少偶發(fā)連接失敗的概率。這個(gè)習(xí)慣是從做批量產(chǎn)品時(shí)養(yǎng)成的成本極低可靠性提升明顯。4.2 外設(shè)引腳分配串口、FDCAN、USB、SPI、I2C外設(shè)引腳的分配是我畫(huà)這塊板前最糾結(jié)的部分因?yàn)?00腳封裝下H743的IO復(fù)用有很多沖突。我最終的選擇如下調(diào)試串口USART1PA9TX、PA10RX。這是最常用的調(diào)試串口連USB轉(zhuǎn)TTL模塊時(shí)注意交叉連接板子上我還加了一組跳線默認(rèn)連接拔掉跳線可以斷開(kāi)串口對(duì)IO的影響。FDCAN1PB8RX、PB9TX。這兩腳需要配置為AF9功能。FDCAN是H743的強(qiáng)項(xiàng)很多工業(yè)場(chǎng)景就是沖著它來(lái)的。注意FDCAN的時(shí)鐘不能直接用系統(tǒng)時(shí)鐘需要在CubeMX里單獨(dú)配置PLL2或PLL3輸出我后面在常見(jiàn)問(wèn)題里會(huì)細(xì)講。USB OTG FSPA11USB_DM、PA12USB_DP。H743的USB FS內(nèi)置PHY不需要外部晶振就可工作。我在板上把這兩個(gè)信號(hào)引到了一顆Micro-USB座子D和D-走線做了等長(zhǎng)處理差分阻抗沒(méi)太嚴(yán)格控畢竟FS模式速率不高。SPI1PA5SCK、PA6MISO、PA7MOSI留出PA4作為CS。這里和DAC的PA4/PA5沖突我放棄了DAC優(yōu)先保SPI因?yàn)轫?xiàng)目里要外接ADC和顯示屏。I2C1PB6SCL、PB7SDA。注意PB6/PB7也是FDCAN2的候選引腳如果你的項(xiàng)目要雙FDCAN這里就要重新規(guī)劃。除了上面這些我還把ADC通道引出來(lái)了PA0到PA3作為ADC12的輸入引腳這4根信號(hào)直接做成單排針?lè)奖憬与娢黄骰騻鞲衅鳌_@里想說(shuō)的是引腳分配沒(méi)有標(biāo)準(zhǔn)答案關(guān)鍵是要在畫(huà)原理圖前把自己項(xiàng)目的外設(shè)需求清單列出來(lái)逐項(xiàng)確認(rèn)復(fù)用關(guān)系別畫(huà)到一半發(fā)現(xiàn)兩個(gè)功能搶同一個(gè)引腳。我這塊板前后改了三版引腳分配就是因?yàn)橐婚_(kāi)始想把所有功能都塞進(jìn)去最后發(fā)現(xiàn)不現(xiàn)實(shí)做了取舍才定下來(lái)。4.3 擴(kuò)展排針的布局與絲印擴(kuò)展排針我采用左右兩排的形式每排20針間距2.54mm正好能插面包板或者接杜邦線。排針不是簡(jiǎn)單把IO按編號(hào)順序引出而是按功能分組這點(diǎn)非常重要。我的分組方式如下左側(cè)排針電源區(qū)3.3V、5V、GND循環(huán)、USART1、SPI1、I2C1右側(cè)排針ADC/PWM、FDCAN1、USB相關(guān)、剩余通用IO每組之間用絲印畫(huà)了分隔線和功能標(biāo)注調(diào)試時(shí)找引腳只需要看絲印不用對(duì)著原理圖數(shù)引腳號(hào)。另外我特意在排針的電源引腳之間間隔地放了一些GND這樣插面包板時(shí)每個(gè)功能區(qū)都能就近取地減少飛線。還有一個(gè)細(xì)節(jié)排針和芯片之間的走線我盡量做了“串阻預(yù)留”就是每根IO線上串聯(lián)了一個(gè)0Ω電阻位需要時(shí)可以直接換上幾十到幾百歐的電阻做信號(hào)整形不需要時(shí)0Ω直通。這個(gè)設(shè)計(jì)在調(diào)試EMC和信號(hào)質(zhì)量問(wèn)題時(shí)非常有用雖然沒(méi)有全部用上但留下了靈活性。5. PCB設(shè)計(jì)與打樣實(shí)戰(zhàn)5.1 層疊與關(guān)鍵布局這塊板我用的是四層板疊層結(jié)構(gòu)是Top信號(hào)層、L2地層、L3電源層、Bottom信號(hào)層。四層板在嘉立創(chuàng)打樣也就幾十塊比兩層板貴不了多少但信號(hào)完整性完全不是一個(gè)級(jí)別。H743跑480MHz雖然內(nèi)部走線不算特別高速但電源完整性和地平面連續(xù)性對(duì)穩(wěn)定性影響很大四層板幾乎是必須的。布局順序上我是先固定兩顆關(guān)鍵器件的位置USB座子和LDO。USB座子在板邊LDO靠近USB座子這樣5V到3.3V的路徑最短。然后是STM32主芯片放在板子中央偏上讓四周都有空間出線。晶振放在芯片上方離HSE引腳和LSE引腳都近。排針在左右兩邊。按鍵、跳線帽、LED這些交互器件放在板邊或者角落。去耦電容的布局我前面提過(guò)全部放在背面靠近對(duì)應(yīng)引腳的位置。電源層被分割成3.3V和5V兩個(gè)區(qū)域兩個(gè)區(qū)域之間通過(guò)LDO連接不能直接重疊避免形成不必要的平板電容耦合。5.2 焊接與上電檢查的實(shí)操流程LQFP100封裝的焊接手工操作其實(shí)不難但我建議第一次焊這種封裝的人先準(zhǔn)備好助焊劑、吸錫帶和放大鏡最好是有燈的體視顯微鏡。我的流程是先在焊盤(pán)上薄薄上一層助焊劑芯片對(duì)準(zhǔn)絲印框注意1腳方向。用烙鐵固定對(duì)角兩個(gè)引腳然后整排引腳堆錫拖焊。拖完之后用吸錫帶配合助焊劑把多余的錫清理干凈。檢查時(shí)重點(diǎn)看有沒(méi)有連錫尤其是電源引腳和地引腳之間的連錫這個(gè)不是眼睛能輕易看出來(lái)的最好用萬(wàn)用表蜂鳴檔排查相鄰引腳是否短路。上電檢查的順序我在電源管理那節(jié)已經(jīng)提過(guò)先不焊主芯片測(cè)LDO再焊主芯片測(cè)VCAP電壓。H743正常工作時(shí)VCAP應(yīng)該維持在1.0V到1.2V左右的范圍內(nèi)具體和VOS電壓等級(jí)相關(guān)。如果VCAP沒(méi)電壓檢查VDDLDO引腳是否供電正常再查VCAP電容是否虛焊或短路。如果VCAP電壓偏高或者偏低先斷電檢查電容不要長(zhǎng)時(shí)間通電。5.3 BOM清單與替代件的坑板材的BOM整體不復(fù)雜但這幾個(gè)物料我特別說(shuō)明一下25MHz晶振一定要買貼片無(wú)源晶振四腳或兩腳都行注意負(fù)載電容參數(shù)別買錯(cuò)成有源晶振。32.768kHz晶振注意腳位定義不同廠家封裝的腳序可能不一樣焊接前對(duì)一下封裝圖。VCAP電容X7R或者X5R千萬(wàn)別用Y5V這種高ESR的老式材質(zhì)否則內(nèi)部LDO會(huì)不穩(wěn)。磁珠選擇額定電流500mA以上、直流阻抗小于1Ω的用在VDDA濾波。LDO優(yōu)先選低壓差、輸出電流大于500mA的別用來(lái)路不明的AMS1117。6. 常見(jiàn)問(wèn)題排查與避坑實(shí)錄6.1 故障快速排查表調(diào)試過(guò)程中我遇到的幾個(gè)典型問(wèn)題整理成一個(gè)速查表給后面做板子的人當(dāng)參考故障現(xiàn)象可能原因排查方法上電后芯片發(fā)熱嚴(yán)重3.3V和GND短路、VCAP電容損壞或接錯(cuò)、VDD引腳虛焊斷電后用萬(wàn)用表量3.3V對(duì)地阻值檢查VCAP電容焊盤(pán)ST-LINK連不上芯片SWDIO/SWCLK接反、芯片進(jìn)入低功耗、調(diào)試引腳被復(fù)用進(jìn)BOOT01模式用“Under Reset”方式連接程序能燒錄但跑不起來(lái)VOS電壓等級(jí)配置不對(duì)、Flash等待周期不夠用CubeMX重新生成時(shí)鐘初始化檢查SystemClock_Config串口輸出亂碼系統(tǒng)時(shí)鐘頻率和庫(kù)里的HSE_VALUE不一致確認(rèn)晶振是25MHz并且CubeMX里HSE_VALUE25000000FDCAN收發(fā)不通FDCAN時(shí)鐘沒(méi)有正確來(lái)自PLL2/PLL3在CubeMX時(shí)鐘樹(shù)里單獨(dú)配置FDCAN的時(shí)鐘源回讀寄存器確認(rèn)RTC不走時(shí)或者走時(shí)不準(zhǔn)LSE晶振沒(méi)起振、負(fù)載電容不匹配示波器測(cè)OSC32_IN的波形調(diào)整LSE驅(qū)動(dòng)檔位USB枚舉失敗D/D-接反、VBUS檢測(cè)引腳未處理檢查PA11/PA12是否接反確認(rèn)PA9的VBUS感知功能是否啟用ADC讀數(shù)跳動(dòng)大VDDA濾波不足、參考電壓不穩(wěn)檢查磁珠和去耦電容是否貼裝必要時(shí)在VDDA加更大容值電容6.2 CubeMX配置的關(guān)鍵差異H743在CubeMX里的配置和F103相比有幾個(gè)明顯的差異點(diǎn)不處理好很容易出問(wèn)題。第一個(gè)是VOS電壓等級(jí)也就是電源調(diào)節(jié)器的輸出電壓等級(jí)。H743跑480MHz必須使用VOS0等級(jí)跑400MHz可能要VOS1跑不了滿頻時(shí)系統(tǒng)會(huì)自動(dòng)降頻或直接跑飛。CubeMX里在Project Manager的Clock Configuration頁(yè)面可以看到Power Regulator的選項(xiàng)建議選擇對(duì)應(yīng)電壓等級(jí)后讓CubeMX自動(dòng)處理別手動(dòng)改庫(kù)代碼。第二個(gè)是Flash等待周期也就是Flash latency。H743的主頻很高CPU讀Flash時(shí)需要匹配等待周期頻率越高等待周期越多。CubeMX會(huì)自動(dòng)配置這個(gè)值但如果你自己用寄存器寫(xiě)啟動(dòng)代碼很容易漏掉表現(xiàn)就是能下載但程序運(yùn)行不穩(wěn)定。第三個(gè)是外設(shè)時(shí)鐘樹(shù)。H743的FDCAN和USB的時(shí)鐘不是直接從系統(tǒng)時(shí)鐘來(lái)的它們需要PLL2或者PLL3單獨(dú)生成在CubeMX時(shí)鐘樹(shù)里要手動(dòng)配置和使能。我第一次配FDCAN就卡在這里總線初始化成功但報(bào)錯(cuò)看了半天寄存器才發(fā)現(xiàn)時(shí)鐘源根本沒(méi)選對(duì)。6.3 這次踩過(guò)的坑與最后的經(jīng)驗(yàn)最后分享幾個(gè)這次實(shí)際踩進(jìn)去又爬出來(lái)的坑。第一版板子我犯了三個(gè)錯(cuò)誤VCAP電容放太遠(yuǎn)、LSE晶振走線穿過(guò)排針區(qū)域、NRST電容放太大。這三個(gè)問(wèn)題讓板子一開(kāi)始完全沒(méi)法用芯片一上電就發(fā)熱后來(lái)重新打了第二版才解決。核心教訓(xùn)是H743這芯片對(duì)電源和時(shí)鐘的要求比F103嚴(yán)得多這些“輔助元件”的位置和參數(shù)不是隨便擺擺就行的。還有一個(gè)我直到現(xiàn)在都覺(jué)得有意思的坑USB的D/D-在原理圖里看起來(lái)只是兩根線但焊接時(shí)如果助焊劑清理不干凈HS模式下會(huì)有大量誤碼。FS模式下容錯(cuò)好一些但飛線或者杜邦線還是建議能短則短。如果你也準(zhǔn)備做自己的H743最小系統(tǒng)板我的建議是先別急著把所有外設(shè)都放上去。第一版精簡(jiǎn)到“電源、時(shí)鐘、復(fù)位、SWD、串口、幾個(gè)LED”就夠了先把系統(tǒng)跑起來(lái)。確認(rèn)穩(wěn)定了再考慮加FDCAN、USB、SDMMC這些擴(kuò)展接口。別問(wèn)我為什么這么建議我第一版就是什么都想加最后光是排查哪一個(gè)外設(shè)把系統(tǒng)拖死就花了兩天。