1. 程式人生 > >STM32 SWD下載口無法下載的原因和解決辦法

STM32 SWD下載口無法下載的原因和解決辦法

.org int 報廢 mdk 下拉電阻 分析 ems 要求 斷開

1.SWD的下載口在程序中被禁用,IO口被設置為普通IO口

2.芯片被鎖,原因有可能是程序執行了不正確的訪問導致芯片被鎖

3.供電不正常

4.SWD燒了

技術分享圖片

技術分享圖片

解鎖原因:

在下載程序的時候有時候會發生錯誤導致內核停止工作,這就意味著內核被鎖,這時候已經無法把程序下載進去了。


解決的辦法就是用ISP方式下載程序進去沖刷一遍,然後就好用了。

除非使能了讀保護,不然一般不會鎖死的。--來自網貼評論

解鎖的方法:

 A. 用JLINK鏈接,把板子的的BOOT0置高,此時就已經可以識別芯片了,芯片解鎖,然後將BOOT0拉低就可以,既識別芯片又可以正常仿真了

 B.用ISP模式,經UART串口全片刪除。

C.用rlink擦除下就好

 D.SEGGER 的JLink ARM V4.08l包中的,Processor Specific Utilities->J-Link STM32 Unlock 工具就可以解鎖

 E.https://blog.csdn.net/gmq_syy/article/details/82624755

F.https://www.cnblogs.com/eva0/p/6222257.html

  短路復位電容,點下載,稍等幾秒(這個靠感覺嘍),斷開短路的電容,OK!大功告成!

  這是因為復位的時候,禁止JTAG的寄存器也是復位狀態,所以JTAG就自動啟動,未被禁止。

網上搜集到的帖子:

帖子1:

原帖地址:

http://openedv.com/thread-86241-1-1.html

摘錄內容:

提問:

大家好,
我使用STM32F100R8的芯片,采用SWD(4線)連接方式.發現SWD連不上STM32.
請大家分析一下,主要有哪些原因?
1,如果不焊接晶振會不會影響jlink連接STM32?
2,BOOT0引腳串電子接到地了,如果沒有正確設置BOOT0 和BOOT1 會有影響這個嗎?
3,怎麽才能硬件上判斷當前的STM32芯片還是好的啊?
4,我使用jlink加轉接板在用4P排線接到板子上,排線長短會有影響嗎?
5我SWDIO和SWCLK分別結論上啦和下拉電阻,這個應該嗎?

技術分享圖片

答復:

1. 默認用內部RC的,沒有晶振不影響SWD,但如果程序用到,會有影響。STM32的SWD要求AVDD必須有電,如果是自己做的板子,建議好好對對,最好找老司機帶帶路。

2. 如果程序裏面沒有關SWD,或配置字沒有關SWD,BOOT接0不影響。
如果程序裏面有關了SWD,那把BOOT接1會容易連接上SWD。
如果是熔絲裏面關了SWD,那只能解鎖,最高級加密無法解鎖,只能報廢。
3.
4. 保證線的質量,盡量縮短長度,並嘗試降低速度。
但命令都不顯示內核,那得歸為錯誤了。
5. 不影響,只要電阻另太小,幾K到幾十K都可以。

改造JLINK接口的方法:

http://www.stmcu.org.cn/module/forum/thread-598871-1-1.html

擴展內容:

關於設置下載速度:

技術分享圖片

這個的話,建議點開debug-再點開setting-看到debug-jtag cmd,查看target interface speed,記下這個速度,關掉cmd,然後修改debug上的速度一致就行了

技術分享圖片

如果是JLINK能找到芯片但是KEIL找不到請下載補丁:

我用的單片機就沒有jtag接口,只留了4線的SW接口。
不過問題解決了,是MDK4.6對CM0+的內核支持不完善,在segger的官網下了個補丁,替換了一下就好了。
http://www.segger.com/IDE_Integration_Keil.html#knownproblems

我被自己蠢哭了,不過終於解決了,真的是好貼啊,謝謝水煮魚。。。我補充一下,下載還是點開水煮魚給的地址,然後下載dll文件,放在D:\Keil\ARM\Segger裏面替換原來文件,下載的文件的網頁截圖如下:

技術分享圖片

STM32對JTAG口的默認配置

https://blog.csdn.net/qq_26093511/article/details/56666320

仿真進不去的原因:

https://blog.csdn.net/fxltsbl007/article/details/52511687/

flymcu串口下載:

http://bookshiyi.com/archives/1258

擴展8:

如果出現讀取的id和工程設置的芯片id不符合的情況,多半是jlink本身有問題,固件與驅動不符,導致的讀取數據錯誤;可以嘗試更換低版本的驅動,有時候最新的不一定是最合適的。

https://blog.csdn.net/xuezhimeng2010/article/details/78771030

擴展9:

https://blog.csdn.net/DZRYWYBL/article/details/84704905

STM32 SWD下載口無法下載的原因和解決辦法