解決燒錄問題:Jlink的三線制SWD方式連線STM32晶片無法識別的解決方案
網上找到此文章解決了j-flash只能連線後不能燒錄的問題,希望遇到相同問題的小夥伴,可以用同樣的辦法解決:
前段時間,做了一塊板子,除錯介面只留了三個口SWD、SWCLK、GND,在使用Jlink的SWD方式除錯的時候發現無法連線。使用ST-link的時候可以連線,無奈樓主的ST-link的連結方式相當的不可靠,時而能識別時而不能識別:當然我的ST-link是山寨版的。
那麼問題來了:為什麼通過20針全部連線的方式可以除錯,而三針的方式就不行了呢?
古人云知之為知之,不知Google之,Google不讓用,那就問度娘好了。
通過查閱網上資料發現,jlink的20針,不光有除錯的功能還有供電和檢測電壓的功能。
下面是jlink的介面圖
通過上面圖片可以發現,jlink的1腳叫做VTref,這個從字面意思理解應該是參考電壓的意思,沒錯,這個管腳就是板子給Jlink內部緩衝晶片供電的介面,這個地方供幾伏,緩衝晶片的IO電平就是幾伏的。起了一個電平匹配的作用。
20針JTAG的2號針可以提供VCC供電。開啟J-Link
Commander輸入power on時,發現2號針腳輸出的是3.3V電壓,那麼可以通過直接短路1、2號針
來解決問題。
樓主的山寨版Jlink的2腳可以向外提供3.3V電壓,那麼短接1、2腳的話是可以讓Jlink正常使用的,如果你的Jlink的2腳輸出的是5V話那麼最好就不要這樣短接來用了。
好多板子上的20針除錯介面是按下圖連線的。
那麼短接完成,如果再採用20針除錯的時候就要注意了,jlink的3.3V千萬不要與開發板上20針介面的3.3V接在一塊,否則會有燒壞jlink的可能,這個時候就要設定jlink不給開發板供電了。
樓主的解決方式是在jlink的2腳上加了一個開關,當需要jlink給開發板供電的時候,開關打到3.3V上,當不需要內部供電的時候呢打到懸空上。這樣就可以同時使用三線的SWD和20線的JTAG與SWD除錯方式了。
/************************************************************/
我自己遇到的問題是燒寫stm32f103c8t6 硬體環境:只接SWD、SWCLK、GND 三根線,在接外部電源3.3v供電;軟體環境:win10,JlinkV450/JlinkV490/JlinkV502c 都是一樣的情況,J-flash 報錯:
- ERROR: RAM check failed @ address 0x20000000.
- ERROR: Write: 0x03020100 07060504
- ERROR: Read: 0xAAAAAAAA AAAAAAAA
- ERROR: (0 bytes of RAM have been checked successfully)
- ERROR: Failed to test speed
解決辦法:
短接Jtag介面的1 2 腳即可正常燒寫,但是之前燒寫stm32vet6不需要短接也可以正常燒寫,還是比較困惑的,不太清楚根本原因在哪裡。