STM32開發(fā)板如何利落地連接外部編程器?從0設(shè)計(jì)一款SWD適配器
來(lái)源:beningo.com
作者:Jacob Beningo
編譯:付斌
為STM32開發(fā)板設(shè)計(jì)一個(gè)簡(jiǎn)單的編程適配器
幾乎每個(gè)開發(fā)板都帶有內(nèi)置的編程工具,不同的供應(yīng)商可能是PE Micro,SEGGER J-Link OB,甚至是供應(yīng)商自己的工具,如ST-Link。
大多數(shù)情況下,板載編程器的功能相當(dāng)有限,使用外部編程器則是很有意義的一件事。連接編程器通常需要使用從編程器到開發(fā)板進(jìn)行跳線,這個(gè)過(guò)程可能導(dǎo)致錯(cuò)誤的接線,更有甚者還連成了“老鼠窩”。
一天,我與IAR的美國(guó)東海岸FAE Aaron Bauch談及此處時(shí),他創(chuàng)建了一塊電路板來(lái)使他的I-Jet編程器JTAG / SWD連接適應(yīng)ST Microelectronics所采用的6針單排連接大多數(shù)板子。這是一個(gè)好主意,但不幸的是,Aaron無(wú)法分享他的電路板或設(shè)計(jì)。所以在這篇文章中,將向您介紹如何創(chuàng)建自己的適配器。
過(guò)程的第一步是選擇一個(gè)帶有6針連接器的開發(fā)板。碰巧在我的幾個(gè)課程中使用STM32F429I-Disco板,所以這個(gè)板子是這次的主角。由于這個(gè)適配器板非常簡(jiǎn)單,只是從一組引腳到下一個(gè)引腳的路由跟蹤,我決定啟動(dòng)Altium并創(chuàng)建一個(gè)帶有單個(gè)原理圖表的SWDAdapter項(xiàng)目。
查看開發(fā)板上6針SWD連接器是一個(gè)很好的著手點(diǎn),但從連接器來(lái)看,僅可看出它是一個(gè)1×6,標(biāo)準(zhǔn).100的連接器,我還見過(guò)百萬(wàn)次標(biāo)準(zhǔn)連接器。通過(guò)打開STM32F429I-Disco板的用戶手冊(cè),在文檔中搜索了描述SWD頭的頁(yè)面。我發(fā)現(xiàn)下表描述了每個(gè)引腳的作用:
快速瀏覽一下這張表,你注意到有什么問(wèn)題嗎?我會(huì)給你一個(gè)提示,看看針腳1 ...... 它是VDD_Target,即應(yīng)用程序的VDD。這個(gè)引腳不提供目標(biāo)電源供程序員檢測(cè),而是充當(dāng)內(nèi)置ST-Link的感應(yīng)線!這意味著這些引腳實(shí)際上是為了對(duì)不在開發(fā)板上的部件進(jìn)行編程而設(shè)計(jì)的!
如果我們要?jiǎng)?chuàng)建一個(gè)外部編程器適配器,那么適配器也需要一種方法來(lái)檢測(cè)微控制器電壓。由于VCC不在6針連接器上,我決定將另一個(gè)雙針連接器添加到適配器,這將為我提供一個(gè)未使用的引腳,然后將MCU VCC跳線到外部編程器,雖然不是一個(gè)理想的解決方案,但至少比跳6線好太多了。為了確保我沒(méi)有忘記引腳或者引腳1未被使用,我復(fù)制了引腳表并將其粘貼到我的原理圖表上。
最后,唯一需要查閱的就是找出我的J-Trace Pro for ARM Cortex-M處理器的引腳。我找到了官方的數(shù)據(jù)表,然后在我的原理圖中添加了一個(gè)2×5標(biāo)準(zhǔn).100連接器,并再次粘貼了一份引腳。為什么我會(huì)使用10針頭而不是第一張圖像中的20針。這樣做的原因是因?yàn)槲矣幸粋€(gè)20針到10針的適配器,使用這個(gè)較小的尺寸可以讓PCB也保持小尺寸。
現(xiàn)在所有連接器都在板上,我花了幾分鐘連接所有連接。將原理圖放在一起時(shí),我在制作這個(gè)過(guò)程時(shí)候喜歡做這些工作來(lái)讓我制作效率更高:
留下記錄,以便我記得為什么我做了一些事情
使用易于識(shí)別的信號(hào)描述標(biāo)記每個(gè)網(wǎng)絡(luò)
自動(dòng)指定部件
使用No ERC符號(hào)標(biāo)記任何未使用的引腳
結(jié)果如下:
結(jié)果很好,下一步是開發(fā)PCB,對(duì)構(gòu)建這些簡(jiǎn)單適配器板的成本進(jìn)行一些分析。
PCB布局以及原型設(shè)計(jì):BOM和成本
完成原理圖后,只需按一下按鈕,即可將組件和網(wǎng)絡(luò)推入PCB文檔。在鋪設(shè)電路板時(shí),過(guò)程遵循以下幾點(diǎn):
將組件排列在空白紙上
自動(dòng)路由以確保存在有效的路由解決方案
定義板輪廓(在這種情況下~1英寸乘0.75英寸)
路由任何電源信號(hào)(VCC等)
設(shè)定返回路徑和地面的策略
路由信號(hào)
添加多邊形填充
添加版權(quán),備注等
檢查布局
進(jìn)行任何調(diào)整
生成生產(chǎn)文檔
在元件布置階段,確保連接器方向正確至關(guān)重要。
如圖所見,使用兩層,路由這些信號(hào)非常簡(jiǎn)單,無(wú)需添加任何過(guò)孔即可實(shí)現(xiàn)!
在設(shè)計(jì)電路板時(shí),我喜歡查看生成的電路板,了解它在3D渲染中的樣子。執(zhí)行此操作時(shí),可以為連接器添加3D模型,然后可以將其導(dǎo)出給機(jī)械工程師,以便使用電子模型構(gòu)建外殼和其他工作。對(duì)于這個(gè)簡(jiǎn)單的電路板,我沒(méi)有花時(shí)間添加這些連接器模型。最終電路板的外觀如下所示:
從上往下看這個(gè)模型,在左側(cè),10針連接器將與兩個(gè)針式公連接器一起安裝在頂部。P3是連接到目標(biāo)的母連接器,實(shí)際上將放置在電路板的底部。
電路板的材料清單(BOM)也非常簡(jiǎn)單。主板選擇了以下組件:
這里有幾點(diǎn)需要注意:
對(duì)于開發(fā)人員來(lái)說(shuō),組件P2可能會(huì)有很大不同,這取決于他們?cè)诰幊唐魃鲜褂玫牟季€。我選擇使用舊式IDC連接器。
連接器BOM成本不超過(guò)1.50美元。
我添加了一條IDC電纜,以防我沒(méi)有,將外部編程器連接到適配器板。
此處未列出PCB的定價(jià)。
事實(shí)證明,如果進(jìn)行小型電路板運(yùn)行,PCB成本是最大的費(fèi)用。我統(tǒng)計(jì)了一下,發(fā)現(xiàn)包括運(yùn)費(fèi)在內(nèi)的約100美元,可以生產(chǎn)大約50塊板子。如果你打算制造這些設(shè)備這是很棒的,但我只對(duì)設(shè)計(jì)板子過(guò)程感興趣??偟膩?lái)說(shuō),每個(gè)適配器將花費(fèi)我25美元左右。
我可以做的更便宜嗎?當(dāng)然可以了!我本可以購(gòu)買幾條1.11美元的電纜,切斷連接器,然后直接將電纜焊接到P3連接器上。不過(guò)仍然需要添加VCC跳線,布線可能已經(jīng)建成了,加上烙鐵大約5美元。但說(shuō)實(shí)話,這樣就沒(méi)有設(shè)計(jì)布局一個(gè)PCB那么有趣了。
檢驗(yàn)成果
轉(zhuǎn)接板到貨了,正如前兩部分中討論的那樣,大多數(shù)開發(fā)板附帶的板載調(diào)試器都是可用的,但通常提供的遠(yuǎn)不如專業(yè)調(diào)試器。我們一直在探索如何為ST Microelectronic開發(fā)板創(chuàng)建適配器板,以便我們輕松使用外部調(diào)試器。接下來(lái)讓我們檢查最終的結(jié)果!
在打開并檢查我的板后,我發(fā)現(xiàn)它們看起來(lái)狀態(tài)良好。正如您在下面看到的那樣,該板看起來(lái)就像我們?cè)诘?部分中列出的那樣,測(cè)量尺寸大約在1英寸×1.25英寸:
在燒制我的烙鐵后,我將我的元件焊接到電路板上。JTAG / SWD和我的電源引腳在頂部,底部是6引腳SWD。組裝好的電路板如下所示:
在這個(gè)階段,我注意到兩個(gè)小缺陷:
我從未測(cè)量過(guò)JTAG / SWD連接器尺寸,因此連接器略寬于電路板。
JTAG / SWD連接器太寬了,覆蓋了VCC和上面的一些絲印。
不過(guò)這些缺陷都不會(huì)影響適配器的運(yùn)行,考慮到這塊板設(shè)計(jì)速度很快,很多板尺寸都是估摸的,其實(shí)對(duì)板的結(jié)果還是非常滿意的。事實(shí)上,這些缺陷是如此微不足道,如果我沒(méi)有指出它們,甚至可能都不會(huì)引人注意。
隨著電路板的組裝,是時(shí)候測(cè)試它了,看看我是否真的可以用我的適配器編程一個(gè)微控制器。為了測(cè)試,我將適配器板連接到STM32F429I-Discovery板上的6針連接器。我還將一個(gè)20針到10針的IDC連接器連接到我的SEGGER J-Link Ultra +,并將我的新帶狀電纜連接到適配器板。在此階段,設(shè)置如下:
如果你還記得,我必須將VCC引腳放在電路板上,以便檢測(cè)目標(biāo)MCU是否通電。此時(shí),我們需要將適配器板上的VCC引腳跳線到開發(fā)板上的VCC。為了做到這一點(diǎn),我使用了Sparkfun母對(duì)母接頭,并連接到STM32429I-Discovery板上的3V引腳之一。最終設(shè)置如下:
真正的考驗(yàn)當(dāng)然是我是否可以編程微控制器。我將J-Link連接到我的電腦,并嘗試使用簡(jiǎn)單的RTOS LED閃爍程序?qū)﹄娐钒暹M(jìn)行編程。謝天謝地,一切都按預(yù)期工作!沒(méi)有給我更多的跳線(好吧,只是VCC的那個(gè))。
如果有興趣下載此項(xiàng)目的設(shè)計(jì)文件和gerber,請(qǐng)點(diǎn)擊下方“閱讀原文”下載
網(wǎng)友提問(wèn):
最終工作的性能是否達(dá)到了預(yù)期?例如:基于SWO printf的調(diào)試,暫停和單步執(zhí)行代碼,mem監(jiān)視,分析(例如來(lái)自Atollic True Studio或simmilar),從STM Studio觀察變量,基本的mem讀寫操作(例如來(lái)自SMT32 ST-Link Utility )?
看起來(lái)codeload確實(shí)有效。在代碼加載(啟動(dòng)代碼)后是否還需要按下目標(biāo)(ST發(fā)現(xiàn))板上的物理重置按鈕來(lái)重置目標(biāo)?速度如何(例如,在寫入或讀取閃存內(nèi)容時(shí))?
Jacob Beningo:
板載的調(diào)試器非常有限,因?yàn)槭蔷幊涛⒖刂破鞯淖钚〗鉀Q方案。如果查看數(shù)據(jù)表,ST-Link v2的連接速度約為15 kb / s,而J-Link EDU的速度約為1 mb / s。更高端的調(diào)試器可以獲得更快的速度。
通過(guò)此適配器接口使用外部程序員可以更快地完成所有操作。基于所使用的探測(cè)器也有改進(jìn),例如無(wú)限斷點(diǎn),同時(shí)訪問(wèn)多個(gè)總線的能力等等。