新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 軟件啟動模式導致 IWatchDog 失效

軟件啟動模式導致 IWatchDog 失效

作者: 時間:2016-11-25 來源:網絡 收藏
問題:
該問題由某客戶提出,發(fā)生在 STM32F103VET6 器件上。據其工程師講述:其產品中使用了 STM32,已量產。在發(fā)給其客戶的產品中,部分出現不開機現象。其工程師在現場測試后發(fā)現 STM32 的 HSE 沒有起振。通過拉低 NRST 管腳對 SMT32 復位后,HSE 起振且系統(tǒng)恢復正常工作。于是懷疑 STM32 的HSE 的缺陷導致了其不起振。

調研:
檢查其硬件電路設計的 HSE 部分,在原理圖及 PCB 中勻未發(fā)現錯誤。檢查 STM32 的供電情況,VDD、VDDA、VBAT、Vref+、Vref-、VSS、VSSA 未發(fā)現異常。檢查 BOOT0 管腳的設置,未發(fā)現異常。檢查 NRST 的外圍電路,未發(fā)現異常。對其產品重新上電,可以正常起動、工作。檢查軟件計,發(fā)現其 IWatchDog 的啟動模式為軟件啟動。于是,要求其工程師將其改為硬件起動模式,然后對此前出現異常的產品更新程序后重新測試。經過一段時間的觀察后,發(fā)現其不再重現先前的問題。

結論:
猜測 STM32 在運行中受到了連續(xù)的干擾。在程序跑飛之后,由于 IWatchDog 溢出而引起STM32 復位。復位之后干擾依然存在,程序再次跑飛。由于設置了軟件啟動模式,導致IWatchDog 此時尚未開始工作,從而不能再次復位 STM32。于是,干擾過后,STM32 不能自行恢復到正常的工作狀態(tài)。而HSE 不起振則是由于軟件未來得及對 HSE 開啟而表現出的一個現象。

處理:
將 IWatchDog 的啟動模改為硬件啟動,可以保障 STM32 在干擾過后能夠自行的恢復到正常的工作狀態(tài)。

建議:
STM32 的 IWatchDog 設有兩種啟動模式,一種是軟件啟動模式,另一種是硬件啟動模式。在軟件啟動模式下,IWatchDog 在復位之后暫時是關閉的,直到軟件對其開啟之后才開始工作。而在硬件啟動模式下,在復位結束時,IWatchDog 已經開始工作,無須軟件干預。于是,同硬件啟動模相比,軟件啟動模式在時間上多了一個“不安全窗口”,如圖(二)所示:

如果 STM32 在“不安全窗口”內受到干擾而跑飛,那么系統(tǒng)是無法自恢復的。所以,要使 IWatchDog 有效的工作,硬件啟動模式是必須的選擇。通常,在編程器的操作界面上會有相關的選項,以供使用者選擇用哪種啟動模式來啟動 IWatchDog。雖然用戶程序也可以通過對 STM32 的 Option Bytes 進行設置來實現兩種啟動模式的選擇,但不建議這樣做,因為這需要相關的軟件具有嚴謹控制邏輯,處理不當會留下安全隱患


評論


技術專區(qū)

關閉