)
STM32H743VIT6這顆料這兩年做高性能嵌入式項目的朋友應該都不陌生。480MHz的Cortex-M7內核、1MB SRAM、2MB Flash、雙精度浮點單元拿來做運動控制、音頻處理、邊緣計算網(wǎng)關都綽綽有余。但很多人拿到芯片之后卡在了第一步——怎么把它跑起來。市面上現(xiàn)成的開發(fā)板要么太貴要么外設布局不符合自己的項目需求于是自己畫一塊最小系統(tǒng)核心板就成了最務實的方案。這篇文章面向的是有基本電路基礎、想自己動手做一塊STM32H743VIT6核心板的嵌入式工程師或電子愛好者。我會從芯片選型理由開始一步步拆解電源架構、時鐘樹設計、復位與啟動電路、調試接口再到AD09里的原理圖繪制和PCB布局布線把整個流程中容易踩的坑和關鍵決策點都講清楚。AD09雖然版本不算新但在國內中小企業(yè)和個人開發(fā)者中保有量依然很大用它來完成這套設計完全夠用。1. 為什么選H743VIT6以及最小系統(tǒng)到底包含什么1.1 這顆芯片的定位與選型邏輯STM32H743VIT6屬于ST的H7系列LQFP100封裝100個引腳在手工焊接和PCB布局之間取到了一個不錯的平衡點。相比BGA封裝的型號LQFP100的引腳間距0.5mm用常規(guī)的烙鐵加助焊劑就能完成焊接返修也方便。這一點對于個人開發(fā)者和小批量試產(chǎn)來說非常關鍵——你不需要為了一塊板子去開鋼網(wǎng)、找貼片廠。從資源角度看H743VIT6的核心競爭力在于480MHz主頻下CoreMark跑分超過2000分內置的AXI總線矩陣讓CPU、DMA、外設之間可以并行訪問不同的SRAM區(qū)域做實時信號處理時不會因為總線爭搶導致抖動。另外它帶了FMC靈活存儲控制器、DCMI攝像頭接口、SAI音頻接口、以太網(wǎng)MAC等外設最小系統(tǒng)板只要把這些關鍵引腳引出來后續(xù)做擴展就非常靈活。選它而不是選F103或F407的原因很簡單如果你的項目涉及浮點運算密集的算法比如FOC電機控制里的Park/Clarke變換、音頻FFT、圖像預處理H7的雙精度FPU和更高的主頻能讓你省掉很多優(yōu)化時間。當然代價是電源設計更復雜、PCB布局要求更高這也是后面要重點展開的內容。1.2 最小系統(tǒng)的邊界定義很多人對最小系統(tǒng)的理解有偏差。嚴格來說一個MCU的最小系統(tǒng)只需要保證芯片能正常上電、復位、運行程序這三件事。但實際做核心板的時候我會把以下內容都納入最小系統(tǒng)的范疇電源系統(tǒng)3.3V主供電、1.2V內核供電H743需要獨立的VCORE、模擬部分供電VDDA/VREF時鐘系統(tǒng)外部高速晶振HSE、外部低速晶振LSERTC用、內部時鐘備選復位系統(tǒng)上電復位、手動復位按鍵、復位濾波電容啟動配置BOOT0引腳的下拉電阻和跳線調試接口SWD接口SWDIO/SWCLK最好預留SWO去耦網(wǎng)絡每個電源引腳附近的去耦電容用戶指示至少一個電源指示燈和一個用戶LED擴展排針把未使用的GPIO按端口引出這樣定義的好處是核心板做出來之后可以直接當模塊用插到你的底板或者洞洞板上就能開始開發(fā)不用每次都在面包板上折騰電源和晶振。1.3 整體設計流程概覽在AD09里完成這塊板子的設計大致流程是這樣的先建工程和原理圖庫把H743VIT6的符號畫出來100個引腳手動畫確實費時間但網(wǎng)上能找到現(xiàn)成的庫文件后面會講怎么處理然后分模塊繪制原理圖包括電源、時鐘、復位、調試、LED、排針原理圖完成后進行ERC檢查確認沒有遺漏的連接接著生成網(wǎng)絡表導入PCB做板框、布局、布線、鋪銅最后輸出Gerber文件和BOM。整個流程中最耗時的不是畫圖本身而是布局階段的反復調整和布線時的電源處理。下面我會按這個順序把每個環(huán)節(jié)的關鍵點和經(jīng)驗教訓都展開講。2. 電源架構設計H743的供電不是3.3V那么簡單2.1 H743的電源域拆解STM32H743的電源引腳比F103復雜得多如果只按VDD接3.3V、VSS接地的思路來畫板子大概率跑不起來。先看它有哪些電源相關引腳引腳類別引腳名電壓作用數(shù)字主供電VDD (多引腳)1.62V~3.6VIO和數(shù)字外設供電內核供電VCORE1.2V左右由內部LDO或外部SMPS提供模擬供電VDDA1.62V~3.6VADC/DAC/模擬部分參考電壓VREF1.62V~VDDAADC參考電壓備份域VBAT1.2V~3.6VRTC和備份寄存器內部穩(wěn)壓VLXSMPS/VSSSMPS—SMPS電感連接點USB供電VDD33USB3.0V~3.6VUSB收發(fā)器關鍵點在于VCORE。H743內部集成了一個LDO穩(wěn)壓器可以從VDD降壓產(chǎn)生1.2V給內核用。你只需要在VCORE引腳接一個2.2uF的電容到地就行不需要外部提供1.2V。但如果你想用SMPS模式效率更高、發(fā)熱更小就需要外接電感和電容配置寄存器切換。對于最小系統(tǒng)板我建議直接用內部LDO模式簡單可靠480MHz全速運行時LDO的發(fā)熱在可接受范圍內。2.2 去耦電容的布置原則去耦電容不是隨便放幾個0.1uF就完事。H743的VDD引腳有十幾組每組都需要就近放置去耦電容。我的做法是每個VDD/VSS引腳對放置一個100nF的0402或0603電容盡量靠近引腳每4~5個VDD引腳額外放置一個4.7uF的電容VDDA單獨用磁珠或0歐電阻從3.3V隔離配1uF10nF組合VREF如果不用外部基準通過0歐電阻接VDDA配1uF100nFVCORE引腳配2.2uF電容位置緊貼引腳在AD09里畫原理圖的時候我習慣把去耦電容單獨畫在一頁上用端口連接的方式和主電路關聯(lián)。這樣PCB布局時可以集中處理不會遺漏。有個小技巧在原理圖里給每個去耦電容標注對應的引腳號比如C1_VDD1、C2_VDD2布局時對照著放效率高很多。2.3 電源指示與保護最小系統(tǒng)板上至少需要一個電源指示燈。我用的是3.3V經(jīng)1K電阻驅動一個0805的綠色LED電流大約2mA亮度足夠又不刺眼。如果想更省電可以用2K電阻電流降到1mA左右。保護方面建議在電源輸入端加一個自恢復保險絲比如0805封裝的0.5A PPTC和一個TVS二極管SMAJ5.0A防止電源接反或浪涌。雖然多花幾毛錢但能避免調試過程中因為電源問題燒芯片。我見過太多人因為電源接錯把幾百塊的芯片燒掉的案例。另外如果你打算用USB供電需要在VBUS和3.3V之間加一個LDO比如AMS1117-3.3或者更好的SPX3819。注意AMS1117的壓差比較大輸入5V輸出3.3V時發(fā)熱明顯如果電流超過200mA建議換用DC-DC方案。對于最小系統(tǒng)板如果只給MCU和幾個LED供電AMS1117夠用但要在PCB上留足夠的銅皮散熱。3. 時鐘樹與復位電路讓芯片穩(wěn)定跑起來的關鍵3.1 外部晶振的選擇與匹配電容計算H743的HSE支持4~48MHz的晶體我一般選25MHz。為什么選25MHz而不是8MHz因為H743的PLL配置靈活25MHz經(jīng)過PLL倍頻后更容易得到480MHz25MHz / 5 * 96 480MHz而且25MHz的晶振在市場上供貨充足、價格便宜。匹配電容的計算不是拍腦袋定的。晶體的負載電容CL通常在規(guī)格書里給出比如8pF或10pF。匹配電容C1和C2的公式是C1 C2 2 * (CL - Cstray)其中Cstray是PCB走線的寄生電容一般估算為3~5pF。如果CL10pFCstray取4pF那么C1C212pF。實際選用12pF或15pF的電容然后通過示波器觀察起振情況微調。在AD09原理圖里晶振電路要畫得清楚晶體兩端各接一個匹配電容到地同時并聯(lián)一個1M歐的反饋電阻有些晶體不需要但加上更保險。晶振的走線在PCB上要盡量短包地處理遠離高頻信號線。LSE晶振用32.768kHz匹配電容一般選12.5pF因為CL通常是6pF加上寄生電容后算出來約12.5pF。LSE的走線要更加小心因為頻率低、驅動能力弱容易被干擾。我通常把LSE的走線走在板子邊緣周圍用GND包圍不走任何其他信號。3.2 PLL配置與時鐘樹規(guī)劃H743的時鐘樹比F1系列復雜得多。簡單梳理一下HSE或HSI作為PLL的輸入經(jīng)過PLL1倍頻后產(chǎn)生SYSCLKSYSCLK再分頻給AHB、APB1、APB2、APB3、APB4。PLL1的配置涉及M、N、P、Q四個參數(shù)M是預分頻器把HSE分頻到1~2MHz的參考頻率N是倍頻器把參考頻率倍頻到VCO頻率192~960MHzP是系統(tǒng)時鐘分頻輸出SYSCLKQ是USB/SPI等外設的分頻輸出以25MHz HSE為例M5得到5MHz參考N96VCO480MHzP1SYSCLK480MHz。這個配置在CubeMX里可以直接生成但你要理解每個參數(shù)的含義才能在出問題時快速定位。在原理圖階段時鐘部分不需要畫PLL的內部結構但要在晶振旁邊標注清楚頻率和匹配電容值方便PCB布局時對照。3.3 復位電路的細節(jié)處理H743的NRST引腳是低電平復位內部有上拉電阻但阻值較大約40K歐容易受干擾。我的做法是外部加一個10K歐的上拉電阻到3.3V再并一個100nF的電容到地構成RC復位電路。復位按鍵用輕觸開關一端接NRST另一端接地。這里有個容易忽略的點復位按鍵到NRST的走線要盡量短電容要靠近NRST引腳。如果走線太長按鍵按下時產(chǎn)生的振鈴可能導致多次復位。我在早期項目中遇到過這個問題后來把電容從100nF改成1uF同時縮短走線問題就解決了。另外如果你要用調試器復位芯片SWD接口的NRST信號也要連上。有些調試器比如ST-Link通過NRST引腳控制復位如果不接調試時可能無法正常連接。4. 啟動配置與調試接口別讓BOOT0坑了你4.1 BOOT0和BOOT1的配置邏輯H743的啟動模式由BOOT0引腳和選項字節(jié)共同決定。默認情況下BOOT00時從Flash啟動BOOT01時從系統(tǒng)存儲器啟動用于串口下載。BOOT1在H743上對應的是PB2引腳需要配置選項字節(jié)使能一般不用。我的做法是BOOT0通過一個10K歐電阻下拉到地同時預留一個跳線帽或者2.54mm排針需要時短接到3.3V。這樣正常運行時從Flash啟動需要串口下載時手動短接一下。注意BOOT0的走線不要和其他信號并行太長避免耦合干擾導致誤觸發(fā)。有個細節(jié)BOOT0引腳在復位釋放的那一刻被采樣所以跳線帽要在上電前就設置好。我見過有人在運行時插拔跳線帽結果芯片進入了系統(tǒng)存儲器模式程序不跑了排查了半天。4.2 SWD接口的引腳分配與保護SWD接口只需要兩根信號線SWDIO和SWCLK加上GND和3.3V參考電壓。我通常用標準的2x5 1.27mm排針或者2x5 2.54mm排針引腳定義按照ARM標準引腳信號說明1VCC3.3V參考2SWDIO數(shù)據(jù)線3GND地4SWCLK時鐘線5GND地6SWO可選用于trace輸出7KEY防反插8NC不接9GND地10NRST復位SWDIO和SWCLK的走線要盡量短如果超過10cm建議加串聯(lián)電阻22~33歐做阻抗匹配。另外SWDIO內部有上拉但外部再加一個10K歐上拉更保險。4.3 調試接口的PCB布局要點調試接口在PCB上的位置要考慮實際使用時的便利性。我一般把它放在板子邊緣排針朝向板外這樣調試器插上去不會擋住其他元件。如果板子空間緊張可以用1.27mm的貼片排針但要注意調試器的接口是否匹配。SWD信號線不要和晶振、電源開關等噪聲源走在一起。如果實在避不開中間用地線隔離。我在一塊板子上把SWD走線和DC-DC的電感走線平行了2cm結果調試器經(jīng)常掉線后來把SWD線改到另一層問題消失。5. AD09原理圖繪制從建庫到ERC檢查5.1 元件庫的獲取與整理AD09自帶的庫里面沒有STM32H743VIT6需要自己建或者從網(wǎng)上下載。我的建議是優(yōu)先從ST官網(wǎng)下載或者用CubeMX生成引腳定義然后導入到AD09里。具體做法是在CubeMX里選好芯片型號導出引腳列表CSV格式然后在AD09的SchLib里用腳本或者手動創(chuàng)建元件符號。手動創(chuàng)建100個引腳的符號確實費時間但有個技巧把引腳按功能分組比如電源引腳放一起、GPIO按端口分組、外設引腳單獨一組。這樣畫出來的符號邏輯清晰原理圖也更易讀。我一般把符號畫成矩形左邊放電源和時鐘右邊放GPIO和外設上邊放調試接口下邊放啟動配置。5.2 分模塊繪制原理圖的實踐原理圖不要畫在一張圖上按功能分頁。我的分頁方案是Page 1MCU主體包含所有電源引腳、VCORE、去耦電容Page 2時鐘電路HSE和LSEPage 3復位與啟動配置Page 4調試接口Page 5LED指示與用戶按鍵Page 6擴展排針每頁之間用端口Port連接比如VDD_3V3、GND、NRST等。這樣PCB布局時可以按頁對照不容易遺漏。在AD09里畫原理圖有個設置要注意柵格Grid設成100mil或者50mil這樣引腳對齊方便。走線用Wire而不是Line否則ERC會報錯。網(wǎng)絡標簽Net Label要放在走線上不要懸空。5.3 ERC檢查與常見錯誤處理原理圖畫完之后必須做ERC電氣規(guī)則檢查。AD09的ERC會檢查未連接的引腳、重復的網(wǎng)絡標簽、電源和地是否短路等問題。常見的ERC錯誤有未連接的輸入引腳比如某些配置引腳沒接需要根據(jù)數(shù)據(jù)手冊確認是否可以懸空不行的要加上拉或下拉重復的網(wǎng)絡標簽同一個網(wǎng)絡標簽放在不同的網(wǎng)絡上會導致短路電源引腳未連接檢查每個VDD和VSS是否都連上了輸出引腳短接兩個輸出引腳連在一起會報錯處理完ERC錯誤后生成網(wǎng)絡表Netlist導入到PCB。導入之前確認封裝都正確特別是LQFP100的封裝引腳編號要和原理圖符號一致。6. PCB布局布線H743核心板的實戰(zhàn)要點6.1 板框設計與層疊規(guī)劃最小系統(tǒng)核心板的尺寸我一般控制在50mm x 50mm以內四層板結構頂層信號、內層1地平面、內層2電源平面、底層信號。四層板的好處是電源和地都有完整的平面信號回流路徑短EMI性能好。如果成本敏感兩層板也能做但布線和電源處理會麻煩很多。板框在AD09里用Keep-Out Layer畫四個角做R2mm的圓角。安裝孔用M3的孔徑3.2mm周圍留出5mm的禁布區(qū)。如果板子要固定在金屬外殼上安裝孔周圍要加絕緣墊或者用尼龍螺絲。6.2 關鍵元件的布局順序布局的順序很重要我的習慣是先放MCU位置在板子中心偏上方便四周走線放晶振緊貼MCU的HSE引腳走線長度不超過10mm放去耦電容每個VDD引腳旁邊放一個優(yōu)先放在底層放電源電路包括LDO、濾波電容、指示燈放調試接口放在板子邊緣放排針按端口順序排列最后放LED和按鍵布局的時候要注意晶振下面不要走任何信號線去耦電容的接地端要就近打過孔到地平面。MCU底部的散熱焊盤如果有要打多個過孔到地平面幫助散熱。6.3 電源和地的處理技巧H743的電源引腳多布線時要保證每個引腳都有足夠的銅皮。我的做法是在內層2電源層做一個3.3V的平面通過過孔連接到每個VDD引腳。VCORE的2.2uF電容要單獨走線到VCORE引腳不要和其他電源混在一起。地平面的處理更關鍵。內層1做完整的地平面不要分割。所有去耦電容的接地端、晶振的接地端、復位電路的接地端都就近打過孔到地平面。過孔的數(shù)量要足夠每個電容至少一個過孔大電流路徑多打幾個。模擬部分VDDA、VREF的接地要和數(shù)字地分開最后在一點連接。在AD09里可以用Net Tie或者0歐電阻實現(xiàn)單點接地。6.4 布線的優(yōu)先級與規(guī)則設置布線的優(yōu)先級是電源線 晶振線 調試線 普通信號線。電源線寬至少20mil如果電流大比如給多個外設供電要加到30mil以上。晶振線盡量短包地處理線寬10mil左右。調試線10mil普通信號線8mil。AD09的布線規(guī)則設置在Design - Rules里可以設置不同網(wǎng)絡的線寬、間距、過孔尺寸。我一般設置默認線寬8mil電源網(wǎng)絡20mil間距6mil。過孔用0.3mm孔徑、0.6mm外徑。布線完成后要做DRC檢查確認沒有間距違規(guī)、短路、開路等問題。特別注意MCU引腳之間的間距LQFP100的引腳間距0.5mm走線時不要超出焊盤范圍。7. 打樣與焊接從文件到實物的最后一公里7.1 Gerber文件輸出與檢查在AD09里輸出Gerber文件的步驟是File - Fabrication Outputs - Gerber Files。需要輸出的層包括頂層信號、底層信號、頂層阻焊、底層阻焊、頂層絲印、底層絲印、鉆孔文件、板框。輸出格式選RS-274X單位選英寸或毫米和板廠確認。輸出之后用CAM350或者免費的Gerber查看器檢查一遍確認沒有遺漏的層、沒有異常的走線。特別檢查阻焊層確保焊盤都開窗了否則焊接時上不了錫。7.2 BOM整理與物料采購BOM表要包含元件位號、型號、封裝、數(shù)量、備注。H743VIT6在立創(chuàng)商城或者DigiKey上都能買到注意區(qū)分批次和封裝。晶振選25MHz的無源晶振負載電容10pF封裝3225。去耦電容用0402或0603的X7R或X5R材質耐壓6.3V以上。采購的時候多買幾顆MCU備用LQFP100焊接時容易連錫特別是引腳密集的地方。另外買一些助焊劑和吸錫帶返修時用得上。7.3 手工焊接LQFP100的經(jīng)驗焊接LQFP100的步驟先在焊盤上涂一層薄薄的助焊劑把芯片對準位置放好注意1腳的位置。然后用烙鐵加少量焊錫固定對角兩個引腳確認位置正確后用刀頭烙鐵加焊錫拖焊四邊。拖焊時烙鐵溫度設在350度左右焊錫要適量多了用吸錫帶吸掉。焊接完成后用放大鏡檢查引腳之間是否有連錫用萬用表測電源和地是否短路。確認無誤后上電測3.3V和1.2V是否正常。如果VCORE電壓不對檢查2.2uF電容是否焊好。7.4 上電測試與程序下載上電后先測電源指示燈是否亮然后測NRST引腳電壓是否在3.3V左右。用ST-Link連接SWD接口在STM32CubeProgrammer里看能否識別到芯片。如果能識別說明最小系統(tǒng)基本正常。然后寫一個簡單的LED閃爍程序驗證GPIO和時鐘配置是否正確。如果識別不到芯片檢查以下幾點BOOT0是否為低電平、NRST是否正常、SWD線是否接對、電源電壓是否正常。我遇到過因為VCORE電容虛焊導致芯片不工作的情況補焊后就好了。8. 幾個容易翻車的細節(jié)與個人經(jīng)驗8.1 VCORE電容的位置比容量更重要很多人知道VCORE要接2.2uF電容但把它放在離引腳很遠的地方。這個電容的作用是給內核穩(wěn)壓器提供瞬態(tài)響應走線電感會嚴重影響效果。我的做法是把電容放在VCORE引腳的背面通過過孔直接連接走線長度不超過3mm。如果放在同一層也要緊貼引腳不要繞路。8.2 晶振的起振問題排查晶振不起振是最常見的故障之一。排查順序是先測晶振引腳是否有電壓正常應該在1V左右然后用示波器看是否有波形。如果沒有波形檢查匹配電容是否焊錯、晶振是否損壞、MCU的HSE配置是否正確。有時候晶振的負載電容選大了會導致起振困難可以試著減小到10pF。8.3 AD09里鋪銅的注意事項鋪銅的時候要注意銅皮和走線之間的間距要符合規(guī)則不要出現(xiàn)尖角。銅皮要連接到地網(wǎng)絡不要懸空。如果板子上有多個地網(wǎng)絡數(shù)字地和模擬地鋪銅時要分開鋪最后單點連接。AD09的鋪銅操作是Place - Polygon Pour畫完形狀后雙擊設置網(wǎng)絡和間距。8.4 排針的排列邏輯擴展排針不要隨便排按端口順序排列最實用。比如PA0~PA15排在一起PB0~PB15排在一起。這樣插到面包板上時找引腳方便接線也不容易亂。電源和地的排針要多留幾個方便給外部模塊供電。8.5 調試接口的防反插設計SWD排針如果沒有防反插設計插反了可能燒調試器。我的做法是在排針的KEY引腳位置不放針調試器的接口上對應位置是堵住的插反了插不進去。另外在絲印上標注清楚1腳的位置用方形焊盤或者白色圓點標記。這塊板子我從第一次畫到現(xiàn)在前后改了五版。最大的體會是H743的性能確實強但電源和時鐘的設計不能偷懶。把電源處理好、晶振走線短、地去耦到位芯片就能穩(wěn)定跑在480MHz。PCB布局時多花一個小時調整元件位置布線時能省三個小時。AD09雖然老但功能夠用關鍵是規(guī)則設置要提前做好不然布線到一半發(fā)現(xiàn)線寬不對返工很痛苦。