
手里這塊MSPM0G3507 LaunchPad我已經(jīng)用了大半年。說實話這板子剛到手的時候光看絲印上一堆PA、PB編號我就愣了半天再加上板上那一排排小跳線一個不留神撥錯位置前一天還能下載程序今天就報錯連不上調(diào)試器。網(wǎng)上關(guān)于這顆芯片的教程遠不像STM32那么多很多朋友在搜MSPM0G3507引腳功能、跳線配置其實核心就一句話先看懂板子怎么連再去談代碼怎么寫。所以我決定把這半年踩過的坑、看過的原理圖、實測過的引腳整理成一篇完整的實踐筆記。不管你是準備用它參加電子設(shè)計競賽還是做循跡小車、編碼器測速這類小項目看完這篇你至少能把板上引腳和跳線安排明白不用再對著開發(fā)板發(fā)愁。1. 整體思路為什么我建議先把引腳和跳線研究透再寫代碼1.1 先看芯片再看板子MSPM0G3507的核心資源盤點在討論開發(fā)板之前得先搞清楚這顆芯片是什么水平。MSPM0G3507是TI的Arm Cortex-M0內(nèi)核MCU最高主頻80MHz自帶128KB Flash和32KB SRAM。這個配置在入門級MCU里非常能打尤其考慮到它的外設(shè)集成度12位1Msps的ADC內(nèi)置運算放大器OPA支持DMA還有多路定時器可以輸出PWM。簡單說讓它處理一個兩輪循跡小車加上兩個編碼器測速綽綽有余甚至比STM32F103C8T6在模擬采集方面更靈活。為什么這個芯片受歡迎在我看來很關(guān)鍵的一點是它的引腳復用和SysConfig配置工具配合得非常好。你在SysConfig里勾選一個功能它自動幫你解決引腳沖突再生成初始化代碼。比起對著幾百頁數(shù)據(jù)手冊找引腳這個體驗對新手相當友好。但前提是你的硬件連接和板載跳線保持一致否則代碼再正確也沒用。1.2 LaunchPad的價值評估板不只是“最小系統(tǒng)”很多初學者拿到LaunchPad第一反應(yīng)是把它當成一塊普通開發(fā)板一個芯片加一堆引腳能點個燈就是勝利。但其實LaunchPad的價值遠不止于此。它板載XDS110調(diào)試器USB插上就能下載調(diào)試不需要額外買仿真器同時XDS110還虛擬出一個串口程序里的printf可以直接輸出到電腦做調(diào)試非常方便。板上還保留了40pin的BoosterPack標準接口可以插各種擴展板也方便自己接杜邦線到外圍電路。對我這種喜歡拿杜邦線到處接的人來說這比集成度很高的開發(fā)板反而更好用因為每一根線的去向都一目了然。遇到問題時用萬用表量一下排針就能確定引腳狀態(tài)排查效率很高。1.3 引腳規(guī)劃的通用原則關(guān)于引腳功能分配我的建議永遠是先把“固定用途”的引腳圈出來再分配外圍設(shè)備。比如板上的LED、按鍵它們默認連到了特定引腳你如果要用這些引腳做別的功能就要多留意跳線和電路連線。然后是模擬輸入引腳盡量留給傳感器。通信接口比如UART、I2C、SPI按項目需求從剩余引腳里挑。這里有個容易忽略的點MSPM0G3507的不同引腳可能復用相同的定時器通道你在SysConfig里選功能時它有推薦引腳但也可以手動改。手動改的時候要參考數(shù)據(jù)手冊的引腳復用表。我用下來的經(jīng)驗是除非有特殊需求直接用SysConfig自動分配的引腳最省事自己亂改反而容易踩坑。以我常用的功能為例先列一張粗略的資源分布參考表功能類別常見引腳范圍說明數(shù)字IOPA0-PA18、PB0-PB27等大部分引腳可作為普通IO帶內(nèi)部上拉/下拉定時器/PWM由TIMA/TIMG映射到具體引腳不同通道分布不同以SysConfig為準ADCPA0-PA7、PB0-PB5等12位1Msps部分引腳支持差分輸入UARTPA2/PA3、PA10/PA11等板載虛擬串口默認占用PA10/PA11I2CPA0/PA1、PA10/PA11等支持標準/快速模式SPIPA12/PA13、PA14/PA15等主從模式均可這張表只能作為參考具體某顆芯片在某個封裝下的完整映射最終以官方數(shù)據(jù)手冊的引腳復用表和SysConfig為準。板上絲印才是最直觀的“第一手資料”。2. 引腳功能全拆解40個引腳到底能干什么2.1 電源引腳與布局注意開發(fā)板通過USB取電USB 5V經(jīng)過板載LDO變成3.3V再供給MCU和外設(shè)排針。排針上的3V3引腳就是穩(wěn)壓后的電源。如果有電機這類大電流設(shè)備最好單獨供電不要把電機電源直接接在3V3上因為板載LDO輸出電流有限帶不動電壓會被拉低MCU就可能復位重啟。5V引腳可以直接用USB的5V但要注意它沒有經(jīng)過額外的保護電路外設(shè)接錯可能直接燒板子。我一般是把5V接到電機驅(qū)動板的邏輯電源而不是直接接電機。另外板上有多個GND引腳分散在兩側(cè)接傳感器時盡量讓多個地線并聯(lián)減少地環(huán)路造成的ADC抖動。2.2 數(shù)字IO與PWM輸出MSPM0G3507的大多數(shù)引腳都可以做數(shù)字IO但并不是所有引腳都能輸出PWM。PWM信號由定時器產(chǎn)生每個定時器的通道會映射到特定的引腳。比如TIMA0的某些通道可以映射到PA0、PA1、PA2而TIMG0的通道又可能分布在其他引腳上。實際開發(fā)中我都是在SysConfig里直接選PWM功能然后看它推薦哪個引腳很少去硬記復用表。板載紅色LED默認接到PB12開發(fā)板上通常有跳線可以斷開。如果你要把PB12拿去做其他數(shù)字功能記得把跳線拔掉否則LED會一直把引腳電平拉低或拉高造成讀數(shù)異常。很多“引腳不輸出”的問題最后查出來都是LED跳線沒摘。這里特別提一句不少人在搜“MSPM0G3507引腳功能”的時候容易被其他型號的引腳圖帶偏比如看到74LS192、ULN2803、74LS04這類芯片的引腳圖和MSPM0G3507完全不是一回事。開發(fā)板的引腳功能最直接的依據(jù)就是板子絲印其次是芯片數(shù)據(jù)手冊里的引腳復用表不要憑印象照著別的芯片接。2.3 ADC與模擬路徑MSPM0G3507的ADC是12位1Msps采樣率在大多數(shù)傳感器采集場景下夠用了。PA0~PA7這些引腳都可以作為模擬輸入具體哪些通道在同一條ADC路徑上需要看數(shù)據(jù)手冊的模擬多路復用器示意圖不過日常應(yīng)用不需要研究到那么細。一個很實用的技巧是片上OPA的輸出可以直接連接到ADC的前端不需要額外線纜。比如你做一個光線檢測前置放大用OPA把信號放大到合適范圍ADC直接采內(nèi)部連接的通道可以減少外部噪聲干擾。這個概念對新手可能有點復雜第一次用可以先從外部直接接線開始等熟悉了再玩內(nèi)部路徑。2.4 通信接口UART/SPI/I2C復用板載虛擬串口通過PA10RX和PA11TX與XDS110連接。默認情況下你在程序里調(diào)用printf字符就會通過這個串口顯示在電腦上。這個功能非常好用但你如果要用PA10/PA11接外部模塊就要注意串口方向MCU的PA10是接收PA11是發(fā)送外部模塊的T和R要交叉連接也就是T接R、R接T。I2C可以在PA0/PA1或PA10/PA11等引腳上配置。SPI常用PA12~PA15。這些接口的具體映射我依賴SysConfig圖形化選定功能后看它提示哪個引腳可用再對照板卡絲印接線。通信引腳的沖突概率不高但一旦沖突現(xiàn)象很奇怪比如兩個外設(shè)都通信失敗。所以在分配引腳時養(yǎng)成查SysConfig的習慣很重要。關(guān)于“MSPM0G3507 DMA”這里多講一句DMA不需要單獨的引腳它是通過外設(shè)觸發(fā)去搬運數(shù)據(jù)的。比如ADC采集時開啟DMA轉(zhuǎn)換結(jié)果會自動搬到內(nèi)存數(shù)組里不需要CPU一個個讀數(shù)。這一點對循跡小車做高速采樣很有幫助后面實戰(zhàn)部分會提到具體用法。3. 跳線配置實操每一項跳線背后都是一種取舍3.1 先從絲印看懂跳線編號與作用LaunchPad的跳線設(shè)計是這套開發(fā)板最實用的地方。板上常見跳線主要分三類電源選擇跳線、調(diào)試鏈路跳線、外設(shè)隔離跳線。絕大多數(shù)跳線出廠時默認安裝短接兩個引腳。當你需要改變某一功能時才去拔跳線。以我的經(jīng)驗第一次上手最重要的一件事是先不要把跳線亂拔。很多“芯片不工作”“連不上調(diào)試器”的情況都是跳線被誤動了。上手之前先對照板卡絲印找到每個跳線的位置和作用。如果實在分不清最簡單的方法是看官方原理圖里面每個跳線都有清晰標注。3.2 電源跳線USB供電與外部供電怎么切板上有一個選擇3.3V來源的跳線默認是從板載LDO取電。如果你要用外部3.3V給MCU供電可以斷開這個跳線從3V3排針輸入外部電源。要注意外部電源電壓不要超過3.6V否則芯片有損壞風險。還有的是5V來源選擇。如果你連了外部5V到排針并希望板載LDO從外部5V產(chǎn)生3.3V就需要把相應(yīng)跳線切到外部5V檔位。這兩個檔位的切換本質(zhì)上就是決定“誰給這顆芯片供電”和“誰給LDO供電”。這種配置在普通小項目里很少需要動默認USB供電已經(jīng)能覆蓋絕大多數(shù)場景。我建議除非有明確的外部供電需求否則保持默認即可。3.3 調(diào)試器與目標MCU之間的跳線XDS110調(diào)試器的SWDIO、SWCLK和UART TX/RX都是通過板載電路連接到目標芯片的。板上相應(yīng)的跳線如果被斷開調(diào)試器就連不上芯片下載就會失敗。很多人收到板子后“下載失敗”結(jié)果一看是跳線被碰掉了。Debug相關(guān)的跳線一般絲印有“XDS110”或“Backchannel UART”字樣默認短路。正常使用不要動它。只有當你要把這幾個引腳挪作他用時才需要斷開跳線同時還得用獨立供電來保證芯片能工作。說實話這種操作對新手不友好我建議前期調(diào)試階段別碰這些跳線。3.4 LED、按鍵跳線及外設(shè)隔離板上紅色LED和RGB LED都通過跳線連接到芯片引腳。這樣的設(shè)計很有意思LED對于調(diào)試很有用但真實應(yīng)用場景里LED掛在引腳上可能影響信號時序。比如你用RGB LED的某個引腳做PWM輸出LED會明顯加重引腳負載可能導致波形變形、電機轉(zhuǎn)速不穩(wěn)。這時候就可以拔掉LED對應(yīng)的跳線把引腳完全釋放出來。同理用戶按鍵也可能會占引腳通過跳線隔離后這些引腳就能完全用于其他功能。我在做循跡小車時就拔掉了兩個LED的跳線把原本用于RGB LED的PA0、PA1、PA2這幾個引腳空出來全部讓給傳感器和驅(qū)動信號效果立竿見影。跳線類型默認狀態(tài)用途什么時候需要改動電源來源USB供電決定3.3V來源使用外部供電時XDS110 SWD短路調(diào)試下載鏈路引腳復用調(diào)試口時XDS110 UART短路虛擬串口鏈路引腳步用作UART外設(shè)時LED跳線短路連接板載LED需要釋放LED引腳時按鍵跳線短路連接用戶按鍵需要釋放按鍵引腳時不同批次的板子跳線編號可能略有差異但功能分類基本一致。拿到板子先看絲印再看官方原理圖準沒錯。4. 實戰(zhàn)循跡小車與編碼器測速的最小硬件連線4.1 循跡小車接線灰度傳感器怎么接循跡小車是很多人第一次認真用MSPM0G3507的項目。常見方案用四路灰度傳感器。每路傳感器輸出模擬電壓或數(shù)字TTL電平取決于模塊類型。模擬輸出版接ADC引腳數(shù)字輸出版接普通IO。我這里的接法是四路灰度傳感器分別接PA15、PA14、PA13、PA12電源統(tǒng)一接3V3地統(tǒng)一接GND。每個傳感器的輸出信號線中間不要走太長盡量縮短杜邦線距離減少干擾。如果你用的是模擬輸出型模塊四路傳感器供電最好穩(wěn)定在3.3V否則ADC讀數(shù)會隨電源波動。代碼邏輯上四路ADC循環(huán)采樣每路先做軟件濾波再和閾值比較判斷小車是直行、左轉(zhuǎn)還是右轉(zhuǎn)。實測下來刷新率完全夠用即使兩輪電機轉(zhuǎn)速有差異也能保持穩(wěn)定循跡。4.2 電機驅(qū)動控制引腳怎么分配電機驅(qū)動部分我用的是TB6612模塊。它的IN1/IN2控制左電機正反轉(zhuǎn)IN3/IN4控制右電機PWMA/PWMB控制轉(zhuǎn)速??刂七壿嫼芎唵蜪N1、IN2分別為高、低左電機正轉(zhuǎn)分別為低、高左電機反轉(zhuǎn)通過PWM占空比調(diào)節(jié)轉(zhuǎn)速。接線時我分配PA0和PA1作為PWM輸出控制PWMA和PWMBPA2、PA3、PA4、PA5作為方向控制引腳。TB6612的VM接5VVCC接3V3GND和系統(tǒng)的GND共地。這里特別要注意共地問題如果不共地驅(qū)動板無法正常接收控制信號電機根本不會轉(zhuǎn)或者亂轉(zhuǎn)。這是新手最容易踩的坑沒有之一。4.3 編碼器測速接線與DMA采集思路電機編碼器多數(shù)是霍爾式的輸出A、B兩路方波。測速時可以通過外部中斷計數(shù)或定時器捕獲。MSPM0G3507的資源足夠直接在兩路編碼器A相引腳上做上升沿中斷計數(shù)定時讀取計數(shù)值再除以時間窗口就能換算成轉(zhuǎn)速簡單好用。關(guān)于“MSPM0G3507編碼器”這類搜索詞不少朋友問這顆芯片是不是有硬件正交編碼器接口。就我目前使用的經(jīng)驗來看普通電機測速用外部中斷已經(jīng)夠用了如果對精度要求高可以研究一下定時器輸入捕獲模式。具體硬件外設(shè)支持情況以官方數(shù)據(jù)手冊為準不要憑經(jīng)驗斷言。講到DMA這里順便展開一下思路如果做高速多通道ADC采樣可以開啟ADC加定時器觸發(fā)加DMA的模式。ADC每轉(zhuǎn)換完一個通道結(jié)果由DMA自動搬運到內(nèi)存數(shù)組CPU不用守在中斷里讀寄存器可以專心跑控制算法。這個思路在循跡小車里可以用來快速采集多路灰度傳感器也能用來采樣電機電流做簡單的閉環(huán)控制。5. 常見問題與排查技巧實錄5.1 引腳不輸出怎么排查遇到引腳不輸出第一步看是不是被跳線綁定的外設(shè)干擾。比如你明明把PA0置高了但電壓始終是0V先看RGB LED對應(yīng)跳線有沒有影響信號。拔掉跳線再試很多問題一下就解決了。第二步看SysConfig里的引腳分配是否有沖突。MSPM0G3507引腳復用比較自由但在SysConfig里如果勾選了同一個引腳的兩個功能初始化可能默默失敗。處理辦法是刪掉沖突項重新生成代碼再下載一次。第三步再查硬件連接包括杜邦線是否插緊、模塊是否共地、芯片是否真的進入了預期狀態(tài)。5.2 串口亂碼或連不上XDS110虛擬串口連不上或printf輸出亂碼絕大多數(shù)情況是跳線或軟件配置問題。先確認XDS110與MCU之間的UART跳線沒有斷開再確認串口波特率與代碼設(shè)置一致。我自己用4800、9600都會偶爾亂碼后來固定用115200穩(wěn)定得多。還有一點如果程序里啟用了低功耗模式或者改動了時鐘頻率串口波特率可能偏掉導致亂碼。檢查一下時鐘源配置如果用了外部晶振注意初始化順序。實在不行換一根USB線或者換個USB口插開發(fā)板的調(diào)試器對劣質(zhì)USB線比較敏感。5.3 ADC讀數(shù)抖動ADC讀數(shù)抖動的原因很多最常見的是供電穩(wěn)定性問題。尤其是電機驅(qū)動工作時地線回流很容易讓ADC通道上產(chǎn)生毛刺。解決方法是傳感器地線盡量單獨回板不要和電機電源走同一條線ADC采樣前加一點軟件濾波比如連續(xù)采8次取平均。另外MSPM0G3507的ADC輸入阻抗不算特別高如果傳感器輸出阻抗太大采到的值會偏低且不穩(wěn)定??梢栽趥鞲衅鬏敵龆撕虯DC引腳之間加一個1uF左右的電容做簡單積分濾波效果非常明顯。我實測過加了電容之后四路灰度傳感器的讀數(shù)抖動從十幾LSB降到兩三個LSB以內(nèi)。5.4 跳線弄亂之后怎么恢復跳線撥亂了最簡單的恢復辦法是看板子背面絲印或官方入門手冊里的默認跳線示意圖。一般板上跳線位置都會印有“default”字樣或一個箭頭指示默認狀態(tài)。如果實在找不到把所有跳線都恢復成“短路狀態(tài)”再把USB拔插一次通常就能回到出廠狀態(tài)。要注意拔掉USB并不會清空寫進Flash的程序跳線恢復后程序還在。所以別因為下載了一個異常程序就誤以為是硬件壞了。判斷硬件是否正??梢韵扔霉俜匠鰪S例程測一遍出廠程序通常包含了LED閃爍和按鍵響應(yīng)如果這些都能跑通硬件基本沒問題。我在實際使用中的體會是這塊板子最值得玩的地方就是跳線加引腳的可配置性。每一項跳線都不是隨便設(shè)置的它背后對應(yīng)的是硬件鏈路的選擇權(quán)。當你把每個跳線的“選擇”都梳理清楚這塊板子就不再只是一塊開發(fā)板而是一個可以按項目需求裁剪的硬件平臺。剛開始用的時候拿到板子別急著寫代碼花一個小時把引腳圖抄下來把跳線默認狀態(tài)記下來以后遇到莫名其妙的問題起碼能先排除硬件層面的干擾。這套方法幫我省了很多排查時間你也可以試試。