之前做的板子用的4線JTAG,一直是可以燒寫(xiě)程序的。最近要改板子,由于4線JTAG太占面積,所以打算換成2線JTAG。但是在調(diào)試的過(guò)程中卻出現(xiàn)了 Could not find device (or device not supported) Session aborted!的問(wèn)題。下面講一下解決的過(guò)程。
一、4線JTAG和2線JTAG介紹
首先先介紹一下4線JTAG和2線JTAG。這里以我用的MSP430F6638為例。5系列和6系列的應(yīng)該都差不多。
4線JTAG需要用到430上6個(gè)腳,分別為T(mén)DO(1),TDI(3),TMS(5),TCK(7),TEST(8)以及RST(11)腳,再加上一個(gè)共地的角GND(9),一個(gè)VDD腳(2或4),VDD這個(gè)腳根據(jù)你單片機(jī)是非JTAG供電還是JTAG供電,分別選擇接在2號(hào)腳或者4號(hào)腳。根據(jù)MSP430F5529demo板的板載仿真器的電路結(jié)構(gòu)猜測(cè),應(yīng)該是JTAG仿真器內(nèi)部有一個(gè)電平轉(zhuǎn)換芯片,當(dāng)單片機(jī)采用非JTAG供電時(shí),可能電壓與JTAG仿真器輸出電壓不一致,這時(shí)需要一個(gè)電平轉(zhuǎn)換芯片將信號(hào)電平轉(zhuǎn)換一下,使得兩者一致?
2線JTAG只需要用到單片機(jī)上的RST腳和TEST腳,這兩個(gè)其實(shí)是復(fù)用引腳,在2線JTAG模式下,應(yīng)該稱(chēng)為SBWTDIO和SBWTCK更準(zhǔn)確。除了那兩根信號(hào)線之外,再加一個(gè)共地線應(yīng)該就可以燒寫(xiě)程序了。
二、問(wèn)題的描述及解決
問(wèn)題的現(xiàn)象描述:
當(dāng)采用4線JTAG燒寫(xiě)程序時(shí),一切正常;但是使用2線JTAG燒寫(xiě)程序時(shí),卻報(bào)出了 Could not find device (or device not supported) Session aborted!的錯(cuò)誤,無(wú)法燒寫(xiě)程序。
解決方案:
在查閱之后,發(fā)現(xiàn)接在單片機(jī)RST引腳的接地電容的大小很有講究。
接地電容如下圖C28所示。按照TI的demo板上來(lái)看,這個(gè)電容的值為DNP,應(yīng)該是do not place。但是TI的demo板上,這里又焊接了一個(gè)電容,這個(gè)到底應(yīng)該多大呢?一開(kāi)始沒(méi)有仔細(xì)研究,我用的是0.1uF,這個(gè)是最常用的一個(gè)電容值了。
但是后來(lái)查閱資料后發(fā)現(xiàn),這個(gè)電容值其實(shí)很有講究的,在4線JTAG模式下,推薦為10nF,在2線JTAG模式下,最大為2.2nF。我這里用的是0.1uF,顯然是遠(yuǎn)超了推薦值。
后來(lái)把這個(gè)電容換成2nF之后,下載正!

這里分析一下,可能是在2線JTAG模式下,SBWTDIO既作為數(shù)據(jù)的輸入又作為數(shù)據(jù)輸出,對(duì)時(shí)序的要求更高,所以這里電容太大之后,會(huì)產(chǎn)生影響。同時(shí),貼上一張關(guān)于JTAG部分參數(shù)的圖,從圖上似乎可以看到,2線JTAG是速度更高一些,可能也正因?yàn)槿绱,其?duì)時(shí)序的要求也更高吧~這個(gè)分析可能不一定正確,歡迎交流、指正~
