問題:
該問題由某客戶提出,發(fā)生在STM32F103VDT6器件上。據(jù)其工程師講述:在其產(chǎn)品的設(shè)計中,STM32的HSE外接8MHz的晶體產(chǎn)生振蕩,然后通過STM32內(nèi)部的PLL倍頻到72MHz,作為STM32的系統(tǒng)時鐘,驅(qū)動芯片工作。在STM32片外有專用的看門狗芯片,監(jiān)控STM32的運行。STM32內(nèi)部的軟件會在STM32的某個管腳上產(chǎn)生脈沖來復(fù)位看門狗。一旦STM32沒有及時的產(chǎn)生脈沖來復(fù)位門狗,則看門狗會認為STM32運行不正常,從而復(fù)位STM32。在對該產(chǎn)品做可靠性測試時,進行了對看門狗監(jiān)控時鐘失效能力的測試。
測試的方法是:將HSE外接的晶體的兩個端子接地,使其停止振蕩,從而驗證看門狗能否做出對STM32的做出復(fù)位動作。試驗結(jié)果表明,看門狗沒有產(chǎn)生復(fù)位動作。進一步測試發(fā)現(xiàn),STM32在失效情況下仍在向看門狗發(fā)送復(fù)位脈沖。詳解STM32時鐘的文章:詳解STM32的時鐘系統(tǒng),收藏了。
調(diào)研:
重復(fù)測試,確認其所述現(xiàn)象屬實。檢查軟件代碼,確認其軟件沒有開啟STM32的CSS功能。修改代碼,將PLL的二分頻從STM32的MCO管腳送出,以方便用示波器觀察。通過控制晶體的管腳是否接地來控制HSE是否振蕩。當(dāng)HSE正常振蕩時,MCO送出的信號頻率為36MHz,當(dāng)HSE停止振蕩時,MCO送出的信號的頻率在1.7MHz附近,如圖(一)所示:
通過調(diào)試器觀察寄存器 RCC_CFGR 中的 SWS 控制控制位,其值為[10],說明此時的系統(tǒng)時鐘確實來自PLL的輸出。
從STM32F103VD的數(shù)據(jù)手冊中查找PLL相關(guān)的參數(shù)如表(一):
其中,PLL的輸出頻率范圍是16MHz–72MHz。也就是說,PLL 在處于相位鎖定的狀態(tài)下,可以輸出16MHz–72MHz的時鐘信號。而當(dāng)輸入信號頻率過低而導(dǎo)致輸出信號頻率低于16MHz時,將可能處于失鎖的狀態(tài)。在這狀態(tài)下,它的輸出信號的頻率與輸入信號的頻率之間,不一定符合所設(shè)定的倍頻與分頻關(guān)系。更確切的說,不能通過公式:
得出“輸入信號頻率為零時,輸出信號頻率也為零”這樣的結(jié)論。這一點與實測的結(jié)果相吻合。
結(jié)論:
STM32的PLL在沒有輸入信號的情況下,仍能維持在最低的頻點處振蕩,產(chǎn)生輸出。以至,CPU及其它外設(shè)仍能在PLL送出的時鐘的驅(qū)動下運行。所以,通過判斷有無時鐘來驅(qū)動CPU執(zhí)行指令的方式來判斷HSE是否失效是行不通的。
處理:
對軟件做如下修改:
1、在軟件的初始化部分,開啟STM32的CSS功能;
2、修改NMI中斷服務(wù)程序,加入 while(1)陷阱語句;
開啟CSS功能后,當(dāng)HSE失效時,STM32會自動開啟HSI,并將系統(tǒng)時鐘的來源切換到HSI的輸出,同時產(chǎn)生NMI中斷。這樣,程序的流程將停留在NMI中而不能產(chǎn)生復(fù)位片外的看門狗的脈沖。當(dāng)片外看門狗溢出后,就會復(fù)位STM32,使其恢復(fù)到正常駐的狀。
建議:
STM32中的CSS功能是專門為檢測和處理HSE失效而設(shè)計的。但該功能在STM32復(fù)位后是被禁止的,需要軟件對其使能才會發(fā)揮作用。當(dāng)CSS單元檢測到HSE失效時,它會使能HSI,并將系統(tǒng)時鐘切換到HSI。同時,它會關(guān)閉HSE,如果PLL的輸入信號來自HSE的輸出,它也會關(guān)閉PLL。CSS單元在做時鐘調(diào)整的同時,也會產(chǎn)生一個NMI中斷請求,和一個送給高級定時器的剎車信號。NMI中斷請求會產(chǎn)生一個NMI中斷,以便用戶程序可以在中斷服務(wù)程序中做緊急處理,而剎車信號則是使高級定時器進入剎車狀態(tài),以防止由其控制的電機驅(qū)動橋臂由于失去控制而過流。用戶程序可以在NMI中斷服務(wù)程序中嘗試恢復(fù)HSE及PLL的功能,也可以使用陷阱讓程序的流程停留在服務(wù)程序中,從而等待看門狗復(fù)位整個系統(tǒng)。
來源:玩轉(zhuǎn)單片機與嵌入式
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進行處理。
審核編輯 黃宇
-
晶振
+關(guān)注
關(guān)注
34文章
2877瀏覽量
68104 -
STM32
+關(guān)注
關(guān)注
2270文章
10906瀏覽量
356527
發(fā)布評論請先 登錄
相關(guān)推薦
評論