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

stm32單片機的基本工作原理
STM32F103單片機JTAG端口重映射

STM32單片機端口復用和端口重映射

STM32單片機GPIO口簡介

評論