由于本人能力有限,從原理圖到最后的調(diào)試,多多少少都會(huì)有不足之處,望各位高手能夠體諒并指正。如果整篇文章能夠帶給你哪怕一點(diǎn)點(diǎn)的幫助,那就不枉費(fèi)我花了那么多時(shí)間來(lái)弄這個(gè)。首先我們先對(duì)Jlink ARM-OB STM32 進(jìn)行一些了解:
Jlink ARM-OB STM32 是 SEGGER 公司為開(kāi)發(fā)板定制的板載Jlink調(diào)試方案。除了不能測(cè)試目標(biāo)板電壓外,此Jlink 與正式版功能幾乎一致(速度限制到 2MHz)。
受一篇文章啟發(fā),參考資料,筆者制作了此文所提的 Jlink 簡(jiǎn)化版,經(jīng)過(guò)將近半年的測(cè)試,其不但工作穩(wěn)定,而且攜帶方便,故此與大家分享。
????
?????? 其特點(diǎn)為:
? + 支持IAR EWARM 和 KEIL MDK;
? + 僅支持 SW 兩線調(diào)試;
? + 工作穩(wěn)定,無(wú)丟失固件現(xiàn)象;
? + 僅U盤大小,攜帶方便;
? + 直接與電腦USB 接口連接,無(wú)需USB 線纜;
? + 接口簡(jiǎn)化,僅用三根線,完成高速調(diào)試、下載;
? + 僅需要三腳 XH2.54 連接器,大大節(jié)約PCB面積;
? + 與JTAG 相比,僅需兩根線(TMS / TCK),可節(jié)約若干條 IO 口。
其中用到的材料有:
IC:
STM32F103C8T * 1
RT9193 * 1
電阻(0603封裝):
100R * 5
10K * 1
1K * 1
1K5 * 1
22R * 2
電容(0805封裝):
105(1uF) * 2
104(0.1uF) * 6
22pF * 4
接插件:
杜邦排針(燒寫用) * 3
3線XH2.54 * 1
USB_A插頭 * 1
LED(0805 0603均可) * 1
8MHz晶振(貼片) * 1
??????? 成品圖如下圖所示:
?
下面是詳細(xì)制作過(guò)程,首先就是PCB,該方案的最初設(shè)計(jì)是借鑒了IAR公司的開(kāi)發(fā)板原理圖,后又經(jīng)優(yōu)化后,得到了目前的版本,如下圖所示
原理圖是用OrCad Capture CIS畫的,感覺(jué)用起來(lái)比AD要舒服一些,外表沒(méi)有AD花哨,但是用戶體驗(yàn)做得很好。
電源部分用的是RT9193,線性穩(wěn)壓,價(jià)格便宜,體積小,最大輸出電流300mA,對(duì)于下載器來(lái)說(shuō)已經(jīng)足夠了。左側(cè)中間的接線端子用于給STM32燒寫固件,其他部分沒(méi)什么難度,照著畫就行。
接下來(lái)就是最讓我糾結(jié)的布線,由于板子并不復(fù)雜,于是選擇了AD進(jìn)行布線,封裝用的是AD自帶或者LP Wizard生成的。經(jīng)過(guò)幾天以來(lái)反復(fù)的調(diào)整,總算是出來(lái)一個(gè)初級(jí)版本了。接著出GerBer,制作,等待……
PCB拿到手之后,第一感覺(jué)還是很不錯(cuò)的,唯一的缺憾就是USB那邊多出來(lái)了零點(diǎn)幾個(gè)毫米(設(shè)計(jì)缺陷),會(huì)影響USB插頭的安裝,砂紙簡(jiǎn)單處理之,搞定。
?????????? 接下來(lái),到了展現(xiàn)本人焊工的時(shí)候了,經(jīng)過(guò)反復(fù)折騰,看上去還是挺不錯(cuò)的,電容電阻全部選用0603封裝,焊起來(lái)比較考驗(yàn)功夫,不過(guò)有松香就另當(dāng)別論了。
最后曬一下工作臺(tái)的照片。
????????? 硬件搞定后就是固件燒寫了,燒寫工作需要一個(gè)通用版的JLink,之后就可以雞生蛋蛋生雞了,為了節(jié)省板子空間,固件燒寫接口仍采用SW模式,20針JTAG工作在SW模式下的引腳定義如下:
只需要SWD、SWC、GND三根線,即7號(hào)、9號(hào)及GND中的任意一根針,由于固件燒寫一次后就不再使用(掉固件的可能性非常低),因此不需要再焊排針上去了,把杜邦排針插上去,斜方向給點(diǎn)力就能良好接觸,如下圖
連接順序:插針,原始JLink上電,燒寫器上電(USB)。斷開(kāi)時(shí)步驟相反,切不可顛倒!尤其不能在上電時(shí)斷開(kāi)上圖中的連接,否則會(huì)燒壞器件!
打開(kāi)J-Flash ARM
選擇File-OpenProject,由于默認(rèn)工程中沒(méi)有C8T的選項(xiàng),所以選擇相近的STM32F103RB.jflash 并在Options-ProjectSettings里面,將目標(biāo)元件改為C8T
選擇File-OpenDataFile選擇燒寫器的固件(網(wǎng)絡(luò)獲取)
點(diǎn)擊Target-Connect,會(huì)出現(xiàn)以下信息
表示檢測(cè)并連接到目標(biāo)芯片,但由于電壓過(guò)低,斷開(kāi)連接。
對(duì)于全功能JLink,1號(hào)針的功能有兩個(gè):檢測(cè)目標(biāo)板電壓;為內(nèi)部的電平轉(zhuǎn)換芯片提供輸出端參考電壓。也就是說(shuō),如果目標(biāo)板電壓為3.3V,那么這里也必須給1號(hào)針提供3.3V電壓,才能保證正常輸出。由上圖可知,20針JTAG的2號(hào)針可以提供VCC供電,而當(dāng)我打開(kāi)J-Link Commander輸入power on時(shí),卻發(fā)現(xiàn)2號(hào)針輸出的是5V電壓,如法通過(guò)直接短路1、2號(hào)針來(lái)解決問(wèn)題。正當(dāng)我手足無(wú)措的時(shí)候,發(fā)現(xiàn)JLink的主芯片燒寫接口上,有一根線的寬度很可疑
?????? 左起第一根線的寬度,用作信號(hào)線的可能性很小,極有可能是起到供電的作用,于是拿起萬(wàn)用表,果然!
于是犧牲掉一根杜邦線,問(wèn)題解決
最終接口連線如圖
? 整體效果
再次Connect,錯(cuò)誤消失
點(diǎn)擊Target-Auto 自動(dòng)下載固件,下載成功后出現(xiàn)如下提示
斷開(kāi)連接,重新插上燒寫器,電腦提示找到JLink,至此,制作成功~
進(jìn)入MDK的JLink設(shè)置頁(yè),第一次進(jìn)入會(huì)提示固件升級(jí)
之后選擇SW模式
完成后就可以正常使用了,單步調(diào)試什么的都可以完美支持,不過(guò)速度會(huì)稍微慢一點(diǎn)(2M),畢竟只有3跟線
體積測(cè)試:
與優(yōu)盤共存,空間會(huì)有點(diǎn)吃緊,不過(guò)與USB延長(zhǎng)線共存還是很輕松滴
評(píng)論