一、故障現象:
(1)燒寫采用的是SWD 5pin引腳的方式,燒寫程式時jlink上的燈紅綠交替閃爍,MDK報錯(如圖)。

(2)復位腳電壓很低,只有0.9V左右,發現去掉復位腳可以正常燒錄進去,程式也可以運行。
(3)去掉復位腳燒錄行程式后,用jflash讀整個芯片,發現資料是都寫入flash了的。
(4)車間批量燒寫的時候,有10%左右的概率
二、我自己的思考:
為防止例外,程式中加了這個復位重啟的處理,我估計是程式例外了不斷進入復位重啟導致燒寫不進去
void HardFault_Handler(void)
{
NVIC_SystemReset();
}
三、 現在著急尋求幫助怎么找到Bug,不像是程式能正常運行起來debug那就好找問題。
uj5u.com熱心網友回復:
燒寫器供電,還是電路板供電?復位腳電壓低,應該是被燒寫器的拉低的,先排除是否燒寫器故障,程式例外還能拉低復位腳?uj5u.com熱心網友回復:
你這報錯是提示STM32被開啟寫保護了,刷程式前提前清一下STM32的程式可能會好。我在做批量燒寫時一般會有離線下載器,SWD使用4pin就可以,如果你也是用離線下載器燒寫時,注意檢查一下燒寫供電電壓選擇的是3.3V還是5V。
有的Jlink在給芯片燒寫時,Jlink自帶的VDD可能供電不行,Jlink里面有跳線帽,改一下就可以。也可以試試用其他電源來供電,Jlink不給板子供電。(注意共地)
uj5u.com熱心網友回復:
謝謝樓上的兩位老哥幫助,SWD使用4pin確實是可以正常燒寫的。但是90%正常的板子用5Pin方式的也是可以正常燒錄的,我是要找到10%燒寫報錯的問題所在。uj5u.com熱心網友回復:
程式跑不起來不好找問題呀,懂的高手幫忙指點下!uj5u.com熱心網友回復:
既然程式沒跑起來,那和程式有什么關系呢,或者你認為NVIC_SystemReset();有問題,那就把他去掉,如果只在工廠環境下出問題,而且是幾率性的,個人認為是硬體方面的電源干擾或ESD干擾。uj5u.com熱心網友回復:
@南山問道,單片機如果有問題會否導致這種情況?uj5u.com熱心網友回復:
你說的單片機是指電路板嗎,這不一定是電路板的問題,而是外部干擾,個人經驗,用杜邦線連接不同模塊的時候,需要共電源,如果不需要某個模塊了,只把電源線拔了,地線或信號線還連著,就容易導致jlink問題。而且復位信號本身就比較敏感,用線把它引出來,更易受干擾,尤其線長的時候。uj5u.com熱心網友回復:
這里說的單片機是指stm32uj5u.com熱心網友回復:
10%發生概率有以下幾點可能:
1、這批次單片本身存在一定問題,我之前做觸摸屏的時候也出現了類似問題,不過當時是USB介面燒寫出現的情況,也是有9%左右的概率燒不進去,后面原廠分析本身是單片機存在USB的性能差異,換一片就好了,你可以試一下,對于燒入有問題的換一個單片機,以此排除其他問題;
2、如果更換單片機依然有問題就需要從你的電路板或者燒寫器來分析了,看看時鐘信號上是否有電容或者走線電容
3、燒寫器也需要分析一下,當然這個概率和芯片發生問題的概率都相對較小
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/7867.html
標籤:單片機/工控
上一篇:pwm輸出
下一篇:初學Linux C
