板設(shè)計:從原理圖到PCB的完整實戰(zhàn)指南)
做嵌入式這幾年我畫過不少板子但每次有人讓我推薦一款既適合深入學(xué)習(xí)又適合做產(chǎn)品原型的MCU我還是會先說STM32F407ZGT6。這顆Cortex-M4內(nèi)核、主頻168MHz、1MB Flash、192KB RAM的芯片在開發(fā)板和學(xué)習(xí)項目里的地位幾乎取代了當(dāng)年的STM32F103。雖然網(wǎng)上十幾塊錢就能買到現(xiàn)成核心板但很多項目一旦涉及特定尺寸、特定排針、低功耗控制、電源優(yōu)化你還是得親手畫一塊屬于自己的最小系統(tǒng)板。這篇文章我就把從原理圖到PCB的完整設(shè)計過程攤開講。內(nèi)容包括最小系統(tǒng)必做的電源、時鐘、復(fù)位、啟動配置、調(diào)試接口、去耦電容以及PCB布局布線里真正影響成敗的細(xì)節(jié)最后還有打樣焊接回來后調(diào)試踩過的一堆坑。既照顧第一次畫板的新手也不回避只有畫過幾次才會懂的坑。我在開始之前先說明一個觀點最小系統(tǒng)板不是“照抄參考設(shè)計就行”的活兒。芯片手冊上給的電路是最穩(wěn)的標(biāo)準(zhǔn)答案但你要理解每一個電容、每一個電阻為什么放在那才能在后面畫自己的產(chǎn)品板時不翻車。1. 為什么要自己畫一塊F407ZGT6最小系統(tǒng)板1.1 F407ZGT6這顆芯片到底強在哪STM32F407ZGT6是意法半導(dǎo)體F4系列里非常典型的型號LQFP144封裝四邊都有引腳屬于“大芯片”。它基于ARM Cortex-M4F內(nèi)核帶FPU浮點運算單元最大主頻168MHz。這個配置在今天的MCU領(lǐng)域依然不算過時因為很多實時控制、音頻處理、電機控制場景要的就是這顆芯片的外設(shè)豐富程度。具體參數(shù)我用一個表整理一下方便你對照資源參數(shù)內(nèi)核ARM Cortex-M4F帶FPU和DSP指令主頻最高168MHzFlash1MBSRAM192KB 4KB備份域封裝LQFP144GPIO最多114個IOADC3個12位ADC最多24通道DAC2個12位DAC定時器12個16位/32位定時器通信接口6個USART/UART、3個SPI、3個I2C、2個CAN、1個USB OTG FS/HS、1個以太網(wǎng)MAC為什么這顆芯片特別適合用來做“第一塊自己畫的板子”因為在F407上你能把很多關(guān)鍵技術(shù)都踩一遍高速外部晶振、多組電源供電、VCAP內(nèi)核電壓、ADC模擬地處理、USB差分走線甚至以太網(wǎng)PHY接口。畫完這塊板子你再去畫別的MCU板子很多套路是通用的。相比熱詞里常出現(xiàn)的STM32F103C8T6F407ZGT6最大的區(qū)別不只是性能翻倍而是電源和時鐘的要求更高。F103很多板子甚至用一個內(nèi)部RC時鐘都能跑但F407如果要跑168MHz就必須用外部晶振配合PLL且每個電源引腳的濾波電容都不能省。這也是為什么很多人從103升級到407時第一塊自繪板子容易出問題。1.2 最小系統(tǒng)板“最小”在哪自研的價值是什么所謂最小系統(tǒng)就是讓芯片“自己能跑起來”的最簡單的硬件環(huán)境。它不包含你項目里那些具體功能模塊只包含芯片正常工作所必需的電路。以F407ZGT6為例這些是必不可少的電源供電電路外部時鐘電路復(fù)位電路啟動模式配置調(diào)試下載接口每個電源引腳的濾波去耦電容特殊的VCAP內(nèi)核電壓引腳電容有人會問現(xiàn)成最小系統(tǒng)板這么便宜為什么還要自己畫我自己的理解是自研最小系統(tǒng)板有三個價值。第一是尺寸定制。很多產(chǎn)品外殼內(nèi)部空間很有限標(biāo)準(zhǔn)核心板不是長了一點就是寬了一點自己畫可以精確控制板框形狀和排針位置。第二是學(xué)習(xí)價值。原理圖不是抄完就結(jié)束的你需要在畫的過程中搞清楚每個引腳的流向、每種啟動模式的邏輯、每路電源的去耦關(guān)系。這些東西在現(xiàn)成板子上是看不見的。第三是性能掌控。很多廉價核心板的電源設(shè)計只是“能工作”紋波其實很大。如果你的項目要接高精度ADC或音頻codec電源質(zhì)量直接決定數(shù)據(jù)質(zhì)量。自己畫板子時你有機會把電源做扎實。1.3 從原理圖到PCB完整流程怎么走先給新手一個全局視角流程大概是這樣的確定需求和引腳分配用CubeMX或純數(shù)據(jù)手冊核對引腳復(fù)用關(guān)系畫原理圖符號和封裝原理圖連線、檢查ERC導(dǎo)入PCB設(shè)置板框布局?jǐn)[放元件布線鋪銅處理電源和地DRC檢查導(dǎo)出Gerber文件打樣焊接上電調(diào)試后面我會按這個流程展開重點講每個環(huán)節(jié)最容易出問題的地方。2. 原理圖設(shè)計7個模塊逐個拆解2.1 電源電路先從5V到3.3V講起F407ZGT6的主電源是3.3V但絕大多數(shù)開發(fā)場景的輸入是5V所以第一步要把5V轉(zhuǎn)成3.3V。最簡單可靠的做法是用低壓差線性穩(wěn)壓器LDO比如AMS1117-3.3。AMS1117最大輸出電流1A對F407這種典型功耗幾十毫安的芯片來說余量很足。輸入側(cè)接一個10uF鉭電容或陶瓷電容加一個100nF高頻電容輸出側(cè)也接10uF加100nF。這里要注意AMS1117的輸出電容不建議省否則在負(fù)載突變時容易振蕩。如果做低功耗產(chǎn)品我更推薦用ME6211這類靜態(tài)電流更小的LDO靜態(tài)功耗在幾十微安級別比AMS1117動不動幾毫安的靜態(tài)電流強很多。原理圖設(shè)計上輸入輸出電容一樣只是封裝和布局上略有講究。F407的電源引腳有講究它不只有一組3.3V。數(shù)據(jù)手冊里明確要求VDDA模擬電源單獨供電VREF和VREF-是ADC/DAC的參考電壓引腳VBAT是備份電池引腳。這些不能簡單全接到一起。我的做法是這樣數(shù)字3.3V主LDO輸出供給VDD引腳模擬3.3V從數(shù)字3.3V經(jīng)過一個磁珠或0Ω電阻隔離后接到VDDA再在VDDA引腳旁加4.7uF和100nF電容VREF接VDDAVREF-接GNDVBAT如果不用備份電池直接接3.3V并加100nF電容為什么要磁珠或0Ω電阻隔離數(shù)字電路開關(guān)瞬間會產(chǎn)生高頻噪聲如果不做隔離這些噪聲會直接竄進ADC和DAC的參考源導(dǎo)致采樣值跳動。磁珠在高頻下的阻抗高能衰減高頻噪聲但對直流沒有壓降。還有一個細(xì)節(jié)電源指示LED。很多人喜歡在板上放一個電源燈但要注意限流電阻不要選太小。5V進來經(jīng)過LED和電阻正常工作電流控制在2mA到5mA就夠了1kΩ電阻配3.3V剛好。LED選型時注意壓降紅綠藍白都不一樣。2.2 時鐘電路晶振負(fù)載電容不是隨便選的F407ZGT6有兩個外部時鐘源HSE高速外部晶振和LSE低速外部晶振。HSE是主系統(tǒng)時鐘的來源LSE是RTC和低功耗模式的時鐘來源。HSE最常見的接法是8MHz晶振加兩個負(fù)載電容再并聯(lián)一個1MΩ的反饋電阻。這個1MΩ電阻在晶振數(shù)據(jù)手冊里叫“并聯(lián)電阻”作用是幫助晶振快速起振、穩(wěn)定振蕩有些人會省略但ST的參考設(shè)計里是有的建議保留。負(fù)載電容的選擇是重點公式是CL (C1 × C2) / (C1 C2) Cstray其中C1、C2是兩個外接電容Cstray是PCB走線和引腳引入的雜散電容一般估算3pF到5pF。如果你的晶振數(shù)據(jù)手冊寫著“負(fù)載電容18pF”取C1C222pF或27pF比較合適。這里有個常見誤區(qū)不是隨便裝兩個10pF也不是越大越好。電容太大會導(dǎo)致晶振起振困難、功耗升高太小會導(dǎo)致頻率偏高、振蕩幅度不足。用8MHz晶振配合22pF電容是很多量產(chǎn)板子驗證過的穩(wěn)妥組合。LSE是32.768kHz常用于RTC。負(fù)載電容一般在6pF到10pF同樣參考晶振手冊。注意F407的PC14和PC15引腳復(fù)用為OSC32_IN和OSC32_OUT如果你不用外部32.768kHz晶振這兩個引腳可以當(dāng)普通IO使用但需要在RCC配置里把LSE關(guān)閉否則默認(rèn)設(shè)置下引腳功能會不對。還有一個坑要提醒示波器探頭直接去戳晶振引腳可能會把晶振戳停振。因為普通探頭本身有十幾皮法的電容并聯(lián)到晶振電路上會改變振蕩條件。調(diào)試時如果懷疑晶振沒工作最好用探頭夾在晶振引腳附近的地參考點上或者用帶高阻探頭的示波器。2.3 復(fù)位與啟動配置BOOT0的坑復(fù)位電路很簡單NRST引腳接一個10kΩ上拉電阻到3.3V再接一個100nF電容到地。上電瞬間電容充電NRST引腳會保持短暫低電平等電容充滿后變成高電平芯片復(fù)位結(jié)束開始運行。這個電路幾乎所有MCU通用。啟動模式配置是最容易翻車的地方。F407有BOOT0和BOOT1兩個引腳組合方式有三種BOOT00BOOT1任意從主Flash啟動正常模式BOOT01BOOT10從系統(tǒng)存儲器啟動用于串口ISP下載BOOT01BOOT11從內(nèi)置SRAM啟動調(diào)試用很多新手畫的板子上BOOT0引腳懸空或者以為不上拉就行結(jié)果芯片上電后進入不了Flash程序。F407的BOOT0引腳內(nèi)部雖然有下拉但外部環(huán)境如果有噪聲或者焊接殘留會讓它意外拉到高電平導(dǎo)致程序“消失”了——其實芯片在系統(tǒng)存儲器里等著ISP你的程序根本沒跑。我在自己的板上BOOT0和BOOT1都會加10kΩ下拉電阻到地讓默認(rèn)狀態(tài)穩(wěn)定。如果你經(jīng)常需要ISP串口下載可以引入跳帽或撥碼開關(guān)來切換BOOT0但默認(rèn)必須保證是接地的。2.4 調(diào)試接口SWD至少四根線調(diào)試接口我強烈建議引出SWD而不是JTAG。STM32的SWD只需要4根線SWDIO、SWCLK、GND、3.3V如果要支持自動復(fù)位下載再加一根NRST。F407的SWDIO和SWCLK默認(rèn)映射在PA13和PA14。這兩個引腳在芯片出廠時默認(rèn)是調(diào)試功能不需要額外配置。但如果你在代碼里把這些引腳復(fù)用成GPIO了下次下載前就得先按住復(fù)位再點擊下載器連接時機不好抓。所以設(shè)計板子時最好在SWDIO和SWCLK上串一個33Ω到100Ω的電阻這樣即使引腳被配置成普通輸出調(diào)試器也能通過電阻隔離勉強恢復(fù)連接。我還習(xí)慣在SWD接口旁邊加一個ESD保護器件或者簡單的TVS管雖然不必須但插拔調(diào)試器時確實能減少靜電打壞芯片的概率。調(diào)試排針建議做成4pin或5pin的標(biāo)準(zhǔn)間距方便直接插DAP-Link或ST-Link的杜邦線。2.5 去耦電容與VCAP引腳F4獨有的“命門”去耦電容是畫最小系統(tǒng)板時最不起眼但最重要的一環(huán)。F407LQFP144封裝有多個VDD和VSS電源引腳每個VDD引腳旁邊都要放一個100nF的陶瓷電容接到最近的VSS地。原理圖上不要怕多全部標(biāo)上布局時再貼近引腳放。另外F4系列相比F103有一個非常特殊的引腳——VCAP。F407ZGT6上有VCAP1和VCAP2兩個引腳它們是芯片內(nèi)部1.2V核心電壓調(diào)節(jié)器的輸出必須外接2.2uF陶瓷電容到地。這個電容如果沒接或者接錯芯片直接不工作而且電流異常。很多人第一次畫F407板子把所有VDD電容都加好了程序卻跑不起來最后發(fā)現(xiàn)是VCAP電容漏了。這個教訓(xùn)我踩過所以特別提醒。VCAP電容建議選X5R或X7R材質(zhì)耐壓6.3V以上布局時離芯片引腳越近越好。VDDA和VSSA這兩個模擬電源引腳旁邊也要加電容一般加一個1uF和一個100nF并聯(lián)。如果ADC精度要求高VDDA還可以再串一個磁珠隔離。2.6 引腳分配144腳的布局藝術(shù)F407ZGT6有144個引腳新手拿到原理圖庫容易眼花繚亂。我的建議是先用STM32CubeMX把需要的功能分配好再把生成的引腳分配表導(dǎo)出來對著數(shù)據(jù)手冊核對特殊引腳。有一個原則先分配固定功能引腳再分配自由GPIO。固定功能包括電源引腳VDD、VSS、VDDA、VSSA、VBATVCAP1、VCAP2BOOT0、BOOT1、NRSTSWDIOPA13、SWCLKPA14HSE晶振PH0、PH1LSE晶振PC14、PC15VREF、VREF-剩下的IO再按功能模塊去分。要注意的是某些外設(shè)引腳在多路復(fù)用時會有沖突比如USB OTG和以太網(wǎng)MAC會共用部分引腳UART和SPI也可能搶占同一個引腳。用CubeMX分配時它會自動檢查沖突這個比人眼靠譜得多。接口的排布也建議在原理圖階段就想好電源接口放左邊調(diào)試接口放右邊串口放上邊這樣PCB布局時邏輯清晰走線也更順。3. PCB設(shè)計與布線實戰(zhàn)3.1 疊層選擇兩層板還是四層板F407ZGT6的LQFP144最小系統(tǒng)板兩層板能不能做能但需要在布線和地處理上下更多功夫。四層板能不能做能而且對新手更友好因為可以擁有完整的電源平面和地平面EMC表現(xiàn)和信號完整性都會好很多。現(xiàn)在國內(nèi)打樣四層板和兩層板的差價已經(jīng)很小了四層板小面積打樣一次也就幾十到一百多塊完全在個人項目能承受的范圍內(nèi)。我建議第一版F407板子直接上四層板疊層用頂層信號、地層、電源層、底層信號。四層板最大的好處是地平面連續(xù)。最小系統(tǒng)上最關(guān)心的是晶振、SWD和電源有了完整地平面晶振底下的回流路徑短電源噪聲小很多問題能提前避免。如果你擔(dān)心自己布線水平至少把第二層設(shè)為完整地平面這個選擇基本不會錯。如果你堅持兩層板那就要特別注意底層盡量鋪地銅并且打滿過孔晶振區(qū)域和電源引腳區(qū)域的地要扎實。不是做不了而是對布局布線要求更高。3.2 布局先定大件再填小件布局是PCB設(shè)計里最考驗經(jīng)驗的環(huán)節(jié)。我的布局順序是這樣的先把MCU放在板子正中心旋轉(zhuǎn)方向按引腳最多的功能模塊朝外放晶振緊貼MCU的PH0和PH1引腳位置要短放電源接口和LDO放在板子邊緣遠(yuǎn)離晶振放去耦電容每個正對MCU電源引腳旁邊放VCAP電容緊貼VCAP引腳放調(diào)試排針等接口件放在板邊方便插拔晶振和LDO要遠(yuǎn)離這點容易被忽略。LDO在負(fù)載變化時會產(chǎn)生熱量和一定噪聲晶振對溫度和噪聲敏感兩者放在一起可能導(dǎo)致頻率偏移或起振異常。我實際測過把LDO挨著晶振放的那版板子HSE起振時間明顯變長后面改了布局才穩(wěn)定。去耦電容的擺放也有講究不能“在原理圖上連對了就行”。100nF電容必須盡量靠近對應(yīng)的VDD引腳走線先經(jīng)過電容再到芯片引腳。如果引腳在內(nèi)側(cè)、電容在外側(cè)中間隔了好幾毫米電容的效果就大打折扣。高頻噪聲的回路在毫米級遠(yuǎn)一點就濾不掉了。VCAP電容更夸張因為它是核心電壓的濾波我都是放在芯片背面從引腳打孔直接落到電容焊盤距離控制在2mm以內(nèi)。3.3 布線規(guī)則線寬、間距、過孔參數(shù)布線參數(shù)是PCB設(shè)計里最常被問的問題。我先給一個常用的線寬電流參考表基于1oz銅厚、溫升10℃以內(nèi)線寬mil線寬mm最大持續(xù)電流參考60.15約0.2A100.25約0.5A200.5約1.1A300.75約1.9A401.0約2.8A這個表是工程經(jīng)驗值不同銅厚和溫升要求會有出入。在F407最小系統(tǒng)板上信號線用8mil0.2mm到10mil足夠了3.3V主電源線建議20mil以上5V入口線建議30mil以上。地線不依賴線寬靠的是鋪銅。布線間距方面常規(guī)信號線線距建議6mil以上電源和地之間的間距8mil以上。如果你用嘉立創(chuàng)下單直接按他們默認(rèn)的6mil/6mil規(guī)則就行但別卡到極限留一點余量后面改版的時候也方便。過孔方面信號過孔我用外徑0.6mm、內(nèi)徑0.3mm電源過孔可以用更大的外徑0.8mm、內(nèi)徑0.4mm。千萬不要在電源路徑上用細(xì)過孔過孔通流能力比走線差多個過孔并聯(lián)會更穩(wěn)。晶振走線這塊重點說一下。HSE晶振的PH0和PH1引腳走線盡量短、盡量直兩個負(fù)載電容要對稱放置晶振下方最好鋪地銅而不是走信號線。如果晶振旁邊有時間敏感的I2C或SPI線要拉開距離避免被晶振的振蕩信號干擾。模擬地和數(shù)字地怎么處理F407最小系統(tǒng)上AGND和DGND在芯片內(nèi)部其實是同一個地如果你把PCB上的模擬地和數(shù)字地完全分開最后沒有單點連接反而會形成地電位差。正確做法是布局時把模擬區(qū)域和數(shù)字區(qū)域分開在某個單點用0Ω電阻或磁珠連接或者直接在ADC采樣點附近匯合到一個完整地平面。畢竟是高速數(shù)字芯片不要搞“隔離得過分”了。3.4 阻焊、絲印和工藝細(xì)節(jié)這些細(xì)節(jié)看似不影響功能但會影響打樣焊接的體驗。絲印層一定要標(biāo)注清楚第1腳方向、電源電壓值、板子版本號。我第一次畫的板子絲印上忘了標(biāo)5V和GND焊接調(diào)試時每次都要拿萬用表對照原理圖看我找方便后面所有板子我都強制自己加絲印。晶振焊盤周圍不建議鋪實心銅如果鋪了焊接時熱量流失快容易虛焊??梢杂檬诌B接或者直接開窗。拼板的時候如果板子很小可以拼兩三塊一起打同時加工藝邊。但最小系統(tǒng)板一般不會太小LQFP144的尺寸就決定了板子起碼要50mm×50mm以上單板打樣就夠。還有個小技巧在板子角落留幾個安裝孔孔徑3.2mm方便后期固定和測試。千萬別忘了不然調(diào)試時候固定板子只能用膠帶。4. 打樣回來后的調(diào)試與避坑4.1 焊接與上電檢查清單板子回來后先別急著上電按下面這個順序來能省掉很多返工目檢。拿放大鏡或相機微距看芯片焊盤有沒有連錫、漏焊方向有沒有裝反量電源對地阻抗。用萬用表二極管檔量3.3V網(wǎng)絡(luò)對地阻抗正常應(yīng)該有大幾百歐姆如果幾乎為0說明有短路不焊芯片只焊電源部分先上電驗證3.3V是否正常確認(rèn)3.3V穩(wěn)定后再焊芯片和其他小元件上電前再次量一遍3.3V對地阻抗防止焊接過程中造成短路我踩過最大的坑是LQFP144連錫。0.5mm腳距的芯片手工焊接時最好用拖焊焊完后一定要檢查相鄰引腳。如果連錫優(yōu)先用助焊劑加烙鐵拖開別硬挑。還有一次板子回來上電后整個板子發(fā)燙一查是VCAP電容方向焊反了。雖然陶瓷電容沒有極性但那次是用了鉭電容結(jié)果炸了個小坑。所以VCAP電容我后來一律用陶瓷電容不用鉭電容杜絕這類問題。4.2 常見問題速查表下面這個表是我把平時調(diào)試中遇到的高頻問題整理出來的如果你畫完板子遇到類似現(xiàn)象可以按圖索驥現(xiàn)象可能原因處理方法上電后電流異常大、芯片發(fā)燙電源短路、VCAP電容缺失/接錯、芯片焊接方向反量3.3V對地阻抗檢查VCAP電容排查連錫無法連接下載器報“No target”SWD引腳焊接不良、SWDIO/SWCLK被復(fù)用、BOOT0懸空或拉高檢查SWD排針到芯片引腳的連通性按住復(fù)位再連檢查BOOT0程序下載成功但上電不運行BOOT0配置錯誤、VCAP電容虛焊、復(fù)位電容過大檢查BOOT0下拉補焊VCAP復(fù)位電容改為100nFHSE晶振不起振主頻跑在低速負(fù)載電容匹配不對、晶振附近走線過長、晶振虛焊核對晶振負(fù)載電容縮短走線補焊晶振ADC采樣值波動大VREF/VDDA噪聲大、模擬地回路不干凈檢查VDDA隔離和濾波電容檢查模擬區(qū)域地平面LSE晶振不工作RTC不走負(fù)載電容不合適、PC14/PC15被代碼配置成普通IO檢查LSE電容關(guān)閉PC14/PC15的GPIO配置SWD下載過一次后第二次失敗PA13/PA14被配置成普通GPIO用復(fù)位聯(lián)機方式恢復(fù)或把SWD引腳從GPIO配置中移除上電后LED燈微亮但不全亮限流電阻太小、3.3V電壓偏低檢查LDO輸出調(diào)整LED電阻4.3 晶振不起振與ADC采集不穩(wěn)的深度排查晶振不起振排查起來比較麻煩因為現(xiàn)象容易和“程序沒跑”混淆。最直接的判斷方法是用示波器看PH0和PH1的振蕩波形。但上面說過探頭電容可能壓停晶振。我的經(jīng)驗是用X10檔探頭帶寬100MHz以上的示波器探頭尖端盡量短地接觸晶振引腳地線夾子夾在最近的GND過孔上。如果看到正弦波幅度一般在0.6V到3.3V之間就說明HSE正常。如果確實不起振先用排除法查這幾個點負(fù)載電容是否和晶振手冊匹配、兩個引腳走線是否太遠(yuǎn)、晶振是否虛焊、1MΩ并聯(lián)電阻是否漏焊。這四個點基本覆蓋了90%的原因。ADC采集不穩(wěn)的話先看硬件再看軟件。硬件上確認(rèn)VDDA和VREF是干凈的VREF的信號不能有高頻毛刺。軟件上檢查ADC采樣時間是不是太短建議配置為盡可能長的采樣周期然后多采樣幾次做軟件平均。還要注意F407的ADC是12位分辨率如果參考電壓有10mV的紋波最后幾位的數(shù)值就會亂跳。4.4 從F103遷移到F407的注意點很多人上手F407之前都玩過STM32F103C8T6看起來都是一個廠家的芯片但遷移時有好幾個坑。引腳不兼容。F103的LQFP48和F407的LQFP144引腳定義完全不同不能直接替換。F407的引腳更多電源引腳數(shù)量也更多。時鐘樹不同。F103最高72MHzF407最高168MHz。用HAL庫時SystemClock_Config的配置代碼會差很多F407需要更詳細(xì)地配置PLL分頻和倍頻參數(shù)。如果直接把F103的時鐘配置搬到F407很可能起不來或者跑不到指定頻率。F4系列多了VCAP引腳這點在原理圖階段就要注意。少了這兩個電容芯片完全無法工作。外設(shè)庫差異也大。F103時代很多人用標(biāo)準(zhǔn)外設(shè)庫F4雖然也可以但現(xiàn)在ST主推HAL庫和LL庫。遷移代碼時GPIO初始化、中斷回調(diào)函數(shù)、DMA配置都會有差別。如果代碼量大建議先在外設(shè)功能層面做好抽象別跟具體寄存器綁太死。從F103遷移到F407的過程其實也是從“能用”到“理解為什么能用”的提升過程。F407的復(fù)雜度逼著你把電源、時鐘、引腳復(fù)用、系統(tǒng)初始化這些底層?xùn)|西搞清楚之后再畫別的板子就會順手很多。最后再分享一個小技巧板子調(diào)試通過后別忘了把原理圖上各種參數(shù)和PCB上的實測波形記錄下來形成一個簡單的設(shè)計記錄。下次做衍生版本或者別人問你怎么改線寬、怎么選電容時這份記錄比任何經(jīng)驗帖都管用。我自己的習(xí)慣是在每個項目文件夾里放一個README把關(guān)鍵測試數(shù)據(jù)、第幾版遇到的問題、哪個區(qū)域布線不滿意都寫上。過幾個月回來看這些筆記的價值比你記住的那點經(jīng)驗大得多。