0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

時鐘失效后STM32還能運行是什么情況

GReq_mcu168 ? 來源:STM32單片機 ? 作者:stmcu ? 2021-10-29 17:58 ? 次閱讀

該問題由某客戶提出,發(fā)生在 STM32F103VDT6 器件上。據(jù)其工程師講述:在其產(chǎn)品的設計中,STM32 的 HSE 外接 8MHz 的晶體產(chǎn)生振蕩,然后通過 STM32 內(nèi)部的PLL 倍頻到 72MHz,作為 STM32 的系統(tǒng)時鐘驅(qū)動芯片工作。在 STM32 片外有專用的看門狗芯片,監(jiān)控 STM32 的運行。STM32 內(nèi)部的軟件會在 STM32 的某個管腳上產(chǎn)生脈沖來復位看門狗。一旦 STM32 沒有及時的產(chǎn)生脈沖來復位門狗,則看門狗會認為 STM32 運行不正常,從而復位 STM32。在對該產(chǎn)品做可靠性測試時,進行了對看門狗監(jiān)控時鐘失效能力的測試。測試的方法是:將 HSE 外接的晶體的兩個端子接地,使其停止振蕩,從而驗證看門狗能否做出對 STM32 的做出復位動作。試驗結果表明,看門狗沒有產(chǎn)生復位動作。進一步測試發(fā)現(xiàn),STM32 在失效情況下仍在向看門狗發(fā)送復位脈沖。詳解STM32時鐘的文章:詳解STM32的時鐘系統(tǒng),收藏了。

調(diào)研:

重復測試,確認其所述現(xiàn)象屬實。檢查軟件代碼,確認其軟件沒有開啟 STM32 的 CSS功能。修改代碼,將 PLL 的二分頻從 STM32 的 MCO 管腳送出,以方便用示波器觀察。通過控制晶體的管腳是否接地來控制 HSE 是否振蕩。當 HSE 正常振蕩時,MCO 送出的信號頻率為 36MHz,當 HSE 停止振蕩時,MCO 送出的信號的頻率在 1.7MHz 附近,如圖(一)所示:

通過調(diào)試器觀察寄存器 RCC_CFGR 中的 SWS 控制控制位,其值為[10],說明此時的系統(tǒng)時鐘確實來自 PLL 的輸出。

從 STM32F103VD 的數(shù)據(jù)手冊中查找 PLL 相關的參數(shù)如表(一):

c8633fbe-389b-11ec-82a8-dac502259ad0.png

其中,PLL 的輸出頻率范圍是 16MHz – 72MHz。也就是說,PLL 在處于相位鎖定的狀態(tài)下,可以輸出 16MHz – 72MHz 的時鐘信號。而當輸入信號頻率過低而導致輸出信號頻率低于 16MHz 時,將可能處于失鎖的狀態(tài)。在這狀態(tài)下,它的輸出信號的頻率與輸入信號的頻率之間,不一定符合所設定的倍頻與分頻關系。更確切的說,不能通過公式:

c8d70d36-389b-11ec-82a8-dac502259ad0.png

得出“輸入信號頻率為零時,輸出信號頻率也為零”這樣的結論。這一點與實測的結果相吻合。

結論:

STM32 的 PLL 在沒有輸入信號的情況下,仍能維持在最低的頻點處振蕩,產(chǎn)生輸出。以至,CPU 及其它外設仍能在 PLL 送出的時鐘的驅(qū)動下運行。所以,通過判斷有無時鐘來驅(qū)動 CPU 執(zhí)行指令的方式來判斷 HSE 是否失效是行不通的。

處理:

對軟件做如下修改:

1. 在軟件的初始化部分,開啟 STM32 的 CSS 功能;

2. 修改 NMI 中斷服務程序,加入 while(1) 陷阱語句;

開啟 CSS 功能后,當 HSE 失效時,STM32 會自動開啟 HSI,并將系統(tǒng)時鐘的來源切換到HSI 的輸出,同時產(chǎn)生 NMI 中斷。這樣,程序的流程將停留在 NMI 中而不能產(chǎn)生復位片外的看門狗的脈沖。當片外看門狗溢出后,就會復位 STM32,使其恢復到正常駐的狀。

建議:

STM32 中的 CSS 功能是專門為檢測和處理 HSE 失效而設計的。但該功能在 STM32 復位后是被禁止的,需要軟件對其使能才會發(fā)揮作用。當 CSS 單元檢測到 HSE 失效時,它會使能 HSI,并將系統(tǒng)時鐘切換到 HSI。同時,它會關閉 HSE,如果 PLL 的輸入信號來自 HSE的輸出,它也會關閉 PLL。CSS 單元在做時鐘調(diào)整的同時,也會產(chǎn)生一個 NMI 中斷請求,和一個送給高級定時器的剎車信號。NMI 中斷請求會產(chǎn)生一個 NMI 中斷,以便用戶程序可以在中斷服務程序中做緊急處理,而剎車信號則是使高級定時器進入剎車狀態(tài),以防止由其控制的電機驅(qū)動橋臂由于失去控制而過流。用戶程序可以在 NMI 中斷服務程序中嘗試恢復 HSE 及 PLL 的功能,也可以使用陷阱讓程序的流程停留在服務程序中,從而等待看門狗復位整個系統(tǒng)。

責任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2270

    文章

    10900

    瀏覽量

    356087
  • 時鐘
    +關注

    關注

    11

    文章

    1734

    瀏覽量

    131490

原文標題:時鐘失效之后,STM32還能運行?

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    什么情況下wifi_set_opmode會失???

    我想知道在什么情況下wifi_set_opmode會失?。?模塊運行一段時間,我從 STATION 模式切換到 STATION AP 時遇到問題,試圖調(diào)試原因。 為我打開模塊電源,
    發(fā)表于 07-12 06:44

    AD7686有模擬電壓轉(zhuǎn)換結果為零是什么情況造成的?

    AD7686模擬電壓轉(zhuǎn)換結果不對,SCK有時鐘與SDO輸出,但SDO輸出的結果都是低電平 這是什么情況造成的?謝謝
    發(fā)表于 05-17 16:30

    stm8液晶顯示在斷電重啟消失是什么情況?

    請問,stm8液晶顯示在斷電重啟消失,是什么情況
    發(fā)表于 05-13 08:07

    stm32f0待機模式用rtc鬧鐘喚醒,第二次喚醒沒辦法進入睡眠什么情況?

    stm32f0待機模式用rtc鬧鐘喚醒問題,第一次正常,可以進入睡眠,第二次喚醒重啟執(zhí)行 PWR_EnterSTANDBYMode();就直接重啟了,沒辦法進入睡眠什么情況?
    發(fā)表于 04-28 07:12

    STM8L052芯片在停機halt模式下RTC還能夠正常運行嗎?

    問題:STM8L052芯片在停機halt模式下RTC還能夠正常運行嗎?現(xiàn)在的情況運行狀態(tài)RTC時鐘運行
    發(fā)表于 04-17 07:13

    STM32F103RET6外部復位引腳,無法復位是什么情況

    STM32F103RET6 外部復位引腳,無法復位,是什么情況? P.S.復位電路沒有問題,可正常輸出復位信號
    發(fā)表于 03-28 09:13

    stm32f429自帶網(wǎng)口運行一段時間,出現(xiàn)DMA的ETH_IRQHandler接收中斷進不去的原因?

    stm32f429自帶網(wǎng)口運行一段時間,出現(xiàn)DMA的ETH_IRQHandler接收中斷進不去,但ethertnet_DMA的接收寄存器(DMACHRBAR)一直在增加,發(fā)送正常,這個可能是
    發(fā)表于 03-20 06:49

    stm32進入stop模式,為什么uart還能觸發(fā)中斷并喚醒stm32呢?

    我的理解是stm32進入stop模式,外設時鐘都停掉了,比如uart的時鐘,也就是說uart無法收數(shù)據(jù)了,為什么uart還能觸發(fā)中斷并喚醒
    發(fā)表于 03-15 08:16

    STM32F429ZGT6在調(diào)試中程序首先運行HAL_Init函數(shù),單片機會自動復位,請問是什么情況?

    STM32F429ZGT6在調(diào)試中程序首先運行HAL_Init函數(shù),在這個函數(shù)里面對嘀嗒定時器進行初始化,在使能定時器的中斷時,單片機會自動復位,請問是什么情況?
    發(fā)表于 03-12 08:24

    Stm32斷電無法正常運行的原因?怎么解決?

    自己設計的STM32板子剛開始可以燒錄代碼運行舵機,然后斷電再供電就沒反應了,再次燒錄也不行,但是燒錄LED燈的代碼,燈可以正常閃爍,請這種情況怎么辦?
    發(fā)表于 03-12 06:42

    ad5700輸出的Hart信號耦合到ad5421的Cin腳之后,輸出幅值降低是什么情況

    ad5700輸出的Hart信號耦合到ad5421的Cin腳之后,輸出幅值降低是什么情況
    發(fā)表于 03-04 08:25

    data flash存了兩個標定參數(shù),不能正確讀寫了是什么情況?

    data flash存了兩個標定參數(shù),運行一直沒有問題, 今天突然就不能正確讀寫data flash,程序運行是正常的,這是什么情況
    發(fā)表于 01-15 06:05

    普通探頭測高壓會有什么情況

    普通探頭測高壓會有什么情況? 普通探頭是一種常用于測量高壓的儀器。在使用普通探頭測量高壓時,可能會遇到一些情況和問題。本文將詳細介紹普通探頭測量高壓的原理、使用方法、注意事項以及常見問題及解決方法等
    的頭像 發(fā)表于 01-08 15:40 ?499次閱讀

    stm32 外部晶振不振 程序能運行

    STMicroelectronics公司設計的32位ARM Cortex-M微控制器,廣泛應用于各種嵌入式應用。當外部晶振無法振蕩時,可能會影響STM32的正常工作。本文將探討在外部晶振不振的情況下,STM32程序能否正常
    的頭像 發(fā)表于 01-04 09:33 ?2455次閱讀

    表貼繞線電感斷路是什么情況?

    請教一下各位,表貼繞線電感,萬用表測著斷路,高倍顯微鏡顯示沒斷路,X光也看不出來斷路,請問這種一般是什么情況呢?
    的頭像 發(fā)表于 01-04 09:08 ?518次閱讀
    表貼繞線電感斷路是<b class='flag-5'>什么情況</b>?