JTAG和SWD接法
最近自己焊接了STM32的板子(以前一直用的開發板),參照網上的一些資料,陰差陽錯的采用了SWD的接法連接JLINk,結果上電之后發現下載不了程序,彈出以下錯誤。
* JLink Info: TotalIRLen = ?, IRPrint = 0x..000000000000000000000000
**JLink Warning: CPU core not found.
一開始還以為自己沒焊好芯片,可把我急壞了,最后經過多方查找資料,才發現自己采用了SWD的接法,這樣的話在下載程序的設置里就要將Debug-Settings里的Port選項由JTAG改為SWD,修改之后程序果然下載成功了。
附上收集到的一些JTAG和SW接法的資料。
(轉)http://www.cnblogs.com/jeakon/archive/2012/10/07/2813683.html
JTAG有10pin的、14pin的和20pin的,盡管引腳數和引腳的排列順序不同,但是其中有一些引腳是一樣的,各個引腳的定義如下。
一、引腳定義
Test Clock Input (TCK) -----強制要求1
TCK在IEEE1149.1標準里是強制要求的。TCK為TAP的操作提供了一個獨立的、基本的時鐘信號,TAP的所有操作都是通過這個時鐘信號來驅動的。
Test Mode Selection Input (TMS) -----強制要求2
TMS信號在TCK的上升沿有效。TMS在IEEE1149.1標準里是強制要求的。TMS信號用來控制TAP狀態機的轉換。通過TMS信號,可以控制TAP在不同的狀態間相互轉換。
Test Data Input (TDI) -----強制要求3
TDI在IEEE1149.1標準里是強制要求的。TDI是數據輸入的接口。所有要輸入到特定寄存器的數據都是通過TDI接口一位一位串行輸入的(由TCK驅動)。
Test Data Output (TDO) -----強制要求4
TDO在IEEE1149.1標準里是強制要求的。TDO是數據輸出的接口。所有要從特定的寄存器中輸出的數據都是通過TDO接口一位一位串行輸出的(由TCK驅動)。
Test Reset Input (TRST) ----可選項1
這個信號接口在IEEE 1149.1標準里是可選的,并不是強制要求的。TRST可以用來對TAPController進行復位(初始化)。因為通過TMS也可以對TAP Controll進行復位(初始化)。所以有四線JTAG與五線JTAG之分。
?(VTREF) -----強制要求5
接口信號電平參考電壓一般直接連接Vsupply。這個可以用來確定ARM的JTAG接口使用的邏輯電平(比如3.3V還是5.0V?)
Return Test Clock ( RTCK) ----可選項2
可選項,由目標端反饋給仿真器的時鐘信號,用來同步TCK信號的產生,不使用時直接接地。
System Reset ( nSRST)----可選項3
可選項,與目標板上的系統復位信號相連,可以直接對目標系統復位。同時可以檢測目標系統的復位情況,為了防止誤觸發應在目標端加上適當的上拉電阻。
USER IN
用戶自定義輸入。可以接到一個IO上,用來接受上位機的控制。
USER OUT
用戶自定義輸出。可以接到一個IO上,用來向上位機的反饋一個狀態
由于JTAG經常使用排線連接,為了增強抗干擾能力,在每條信號線間加上地線就出現了這種20針的接口。但事實上,RTCK、USER IN、USER OUT一般都不使用,于是還有一種14針的接口。對于實際開發應用來說,由于實驗室電源穩定,電磁環境較好,干擾不大。
二、20、14、10pin JTAG的引腳名稱與序號對應關系
值得注意的是,不同的IC公司會自己定義自家產品專屬的Jtag頭,來下載或調試程序。嵌入式系統中常用的20、14、10pin JTAG的信號排列如下:
需要說明的是,上述Jtag頭的管腳名稱是對IC而言的。例如TDI腳,表示該腳應該與IC上的TDI腳相連,而不是表示數據從該腳進入download cable。
實際上10針的只需要接4根線,4號是自連回路,不需要接,1,2接的都是1管腳,而8,10接的是GND,也可以不接。
(轉)http://www.51hei.com/mcu/1955.html
SWD連接方式的接口定義如下,除了電源和地之外,需要連接到只要三根線,分別為SWDIO、SWCLK和RESET,即7、9、15腳。
一、SWD 和傳統的調試方式區別
????1. SWD 模式比 JTAG 在高速模式下面更加可靠。 在大數據量的情況下面 JTAG 下載程序會失敗, 但是 SWD 發生的幾率會小很多。基本使用 JTAG 仿真模式的情況下是可以直接使用 SWD 模式的, 只要你的仿真器支持。 所以推薦大家使用這個模式。
????2. 在大家 GPIO 剛好缺一個的時候, 可以使用 SWD 仿真, 這種模式支持更少的引腳。
????3. 在大家板子的體積有限的時候推薦使用 SWD 模式, 它需要的引腳少, 當然需要的 PCB 空間就小啦! 比如你可以選擇一個很小的 2.54 間距的 5 芯端子做仿真接口。
二、仿真器對 SWD 模式支持情況
1. 市面上的常用仿真器對 SWD 模式支持情況
(1) JTAGV6 支持 SWD 仿真模式, 速度較慢。
(2) JTAGV7 比較好的支持 SWD 仿真模式, 速度有了明顯的提高,速度是 JTAGV6 的 6 倍。
(3) JTAGV8 非常好的支持 SWD 仿真模式, 速度可以到 10M。
(4) ULINK1 不支持 SWD 模式。
(5) 盜版 ULINK2 非常好的支持 SWD 模式, 速度可以達到 10M。
(6) 正版 ULINK2 非常好的支持 SWD 模式, 速度可以達到 10M。
2. SWD 硬件接口上的不同
(1) JTAGV6 需要的硬件接口為: GND, RST, SWDIO, SWDCLK
(2) JTAGV7 需要的硬件接口為: GND, RST, SWDIO, SWDCLK
(3) JTAGV8 需要的硬件接口為: VCC, GND, RST, SWDIO, SWDCLK (我用的JTAG8)
(4) ULINK1 不支持 SWD 模式
(5) 盜版 ULINK2 需要的硬件接口為: GND, RST, SWDIO, SWDCLK
(6) 正版 ULINK2 需要的硬件接口為: GND, RST, SWDIO, SWDCLK
????由此可以看到只有 JTAGV8 需要 5 個引腳, 即多了一個VCC引腳,其好處是: 仿真器對目標板子的仿真需要用到 RST 引腳, 使用仿真器內部的 VCC 作這個功能其實并不是非常美妙。 因此,JTAGV8 選擇了只和目標板共 GND, 但不共 VCC。 因此我覺得這種模式最合理, 當然通常情況下仿真器和目標板共 GND 和 VCC 是沒有錯的。
三、在 MDK 中SWD 模式的設置
????在調試仿真的時候用JTAG的Cortex-M3方式已經足夠,并且在MDK下他的功能已經做得非常的好,用標準20腳的JTAG下載,速度是非常的快,一般初學者都是這樣做的。但是SWD方式似乎速度更快、更加方便、簡捷、,對于項目中對板子空間要求嚴格、I/O口資源緊張的用戶來說更加的有利,正常的JTAG需要20管腳,而J-Link 的SWD只需要2根線(PA13/JTMS/SWDIO、PA14/JTCK/SWCLK)就夠了(加上電源線也就4根),這樣就節省了3個I/O口(PA15/JTDI、PB3/JTDO、PB4/JNTRST)為其它所用,并且可節省一部分板子的空間(只需4個口就可以了)。
????下面我說一下SWD兩線仿真的一些步驟、注意事項及需要注意的問題。
????接口的連接如下:將JTAG的1、7、9、20分別與自己的開發板上JTAG的VCC、JTMS、JTCK、GND用杜邦線相連即可!
????接下來告訴大家怎么使用SWD設置:
打開工程OPTION設置:
????在設置中按照上圖設置成 SWD 模式, 速度你可以按照你的實際需求來設置, 如果你的板子供電系統不是特別穩定, 紋波比較大或者仿真線比較長可以設置成 500K 或者 1M,如果環境很好當然可以選擇 10M , 當然速度會飛起來。
????記得不要忽略了左下方的那個USB還是 TCP 模式, 當然我們是 USB 模式, 因為有的時候默認是 TCP 模式, 這個時候我們忽略這個設置后會仿真常常連接不上的。
————————————————
版權聲明:本文為CSDN博主「PHD_孤島」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zhaopengdt/article/details/50454793
總結
以上是生活随笔為你收集整理的JTAG和SWD接法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 反向代理服务器nginx
- 下一篇: 土壤湿度检测仪c语言代码,单片机测土壤湿