引言
STM32 G0 系列產(chǎn)品具有豐富的外設和強大的處理性能以及良好的低功耗特性,被廣泛用于各類工業(yè)產(chǎn)品中,包括一些需要低功耗需求的應用。
問題描述
用戶使用 STM32G0B1 作為汽車多媒體音響控制器的控制芯片,用來作為收音機頻道存貯和各種檢測控制。在實驗室條件下模擬汽車頻繁打火的情形進行測試,連續(xù)工作 72 小時實驗中,進入 STOP 模式后,會出現(xiàn)無法再繼續(xù)運行的情況(屏幕沒有顯示輸出,外部中斷無反應)。
問題重現(xiàn)
通常調(diào)查問題時采取調(diào)試監(jiān)控的方式。但是用戶產(chǎn)品是在檢測外部掉電時,測外部電壓(汽車 ACC 電源,轎車 12V)下降后,立刻進入低功耗模式,然后通過 RTC 和外部中斷(PC13 下降沿觸發(fā)即汽車打火上電)喚醒 MCU 繼續(xù)工作。
那么既然是已經(jīng)進入低功耗模式,并且在幾十個小時內(nèi)才會出現(xiàn)故障,通常的用 ST-LINK 在線調(diào)試方式顯然很困難重現(xiàn)問題,即使幸運的遇到了故障,也很容易錯過引起故障的代碼部分,看到了現(xiàn)象卻無法定位。
在此種情況下,正面分析出問題的可能性極小,況且用戶代碼量超過 200k。這時候采用排除法不失為一種可行的辦法。通過增加測試樣本數(shù)量,進行并行測試提高定位效率。 在實踐中,根據(jù)代碼結(jié)構(gòu)時序采用提高觸發(fā)喚醒頻率的方式減少故障發(fā)生的時間。