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