先來copy下 JTAG、SW接口的定義
JTAG:JTAG(JointTest Action Group;聯(lián)合測(cè)試工作組)是一種國際標(biāo)準(zhǔn)測(cè)試協(xié)議,主要用于芯片內(nèi)部測(cè)試。現(xiàn)在多數(shù)的高級(jí)器件都支持JTAG協(xié)議,如DSP、FPGA器件等。標(biāo)準(zhǔn)的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時(shí)鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。
SWD:SW(Serial Wire Mode Interface),串行接口線模式。在串行線模式,只有針TCLK和TMS使用。TDO數(shù)據(jù)輸出引腳是一個(gè)可選。
SWD下載調(diào)試 原理圖:
從圖中看到:板子使用SWD接口下載調(diào)試,即使用SWDIO、SWCLK(PA13、PA14);PB3–JTDO 默認(rèn)功能為JTAG的,而這里用作其他的功能–普通I/O。
問題來了:
1、需要關(guān)掉PB3的JTAG功能,復(fù)用為其他功能。
2、SWD 和傳統(tǒng)的調(diào)試方式區(qū)別。
STM32JTAG復(fù)用相關(guān)方法 :
直接上代碼,如下:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);//改變指定管腳的映射GPIO_Remap_SWJ_JTAGDisableJTAG-DP失能+SW-DP使能GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);。..。...12345
但,當(dāng)設(shè)置了以上語句后,當(dāng)運(yùn)行了這兩個(gè)語句后,JTAG仿真就與目標(biāo)失去去聯(lián)系。
解決辦法有:
1、設(shè)置啟動(dòng)模式為ISP模式(BOOT0=1、BOOT1=0)或設(shè)置啟動(dòng)模式為RAM運(yùn)行模式(BOOT0=1、BOOT1=1)。 將開發(fā)板斷電后重新上電,此時(shí)就因不是在用戶程序模式,因此就不會(huì)執(zhí)行禁用JTAG的語句,JTAG功能也就可以正常使用。
2、設(shè)置啟動(dòng)模式為ISP模式(BOOT0=1、BOOT1=0),用ISP程序?qū)TM32的FLASH擦除,之后就可恢復(fù)JTAG功能。
3、如果你的仿真器支持SWD仿真模式,如IAR下用JLINK、MDK下用ULINK2。 直接將仿真器的模式設(shè)為SWD模,就可以不受這個(gè)禁止JTAG功能的影響了。
我的環(huán)境切合第三個(gè)解決方案,IAR設(shè)置如下:
SWD 和傳統(tǒng)的調(diào)試方式區(qū)別 :
SWD 模式比 JTAG 在高速模式下面更加可靠。 在大數(shù)據(jù)量的情況下面 JTAG 下載程序會(huì)失敗, 但是 SWD 發(fā)生的幾率會(huì)小很多。基本使用 JTAG 仿真模式的情況下是可以直接使用 SWD 模式的, 只要你的仿真器支持。 所以推薦大家使用這個(gè)模式。
在大家 GPIO 剛好缺一個(gè)的時(shí)候, 可以使用 SWD 仿真, 這種模式支持更少的引腳。
在大家板子的體積有限的時(shí)候推薦使用 SWD 模式, 它需要的引腳少, 當(dāng)然需要的 PCB 空間就小啦! 比如你可以選擇一個(gè)很小的 2.54 間距的 5 芯端子做仿真接口。
-
單片機(jī)
+關(guān)注
關(guān)注
6043文章
44621瀏覽量
638564 -
JTAG
+關(guān)注
關(guān)注
6文章
401瀏覽量
71842
原文標(biāo)題:STM32單片機(jī)JTAG的復(fù)用方法解析
文章出處:【微信號(hào):changxuemcu,微信公眾號(hào):暢學(xué)單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論