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

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

3天內不再提示

時鐘失效之后,STM32還能運行?

STM32嵌入式開發(fā) ? 來源:STM32嵌入式開發(fā) ? 2022-12-30 16:20 ? 次閱讀

問題:

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

調研:

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

40e426d8-8805-11ed-bfe3-dac502259ad0.jpg

40f6e1e2-8805-11ed-bfe3-dac502259ad0.jpg

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

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

4111db5a-8805-11ed-bfe3-dac502259ad0.png

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

413206d2-8805-11ed-bfe3-dac502259ad0.png

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

結論:

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

處理:

對軟件做如下修改:

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

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

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

建議:

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

418658b8-8805-11ed-bfe3-dac502259ad0.jpg

審核編輯:湯梓紅

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

    關注

    10

    文章

    562

    瀏覽量

    70810
  • STM32
    +關注

    關注

    2270

    文章

    10900

    瀏覽量

    356041
  • pll
    pll
    +關注

    關注

    6

    文章

    776

    瀏覽量

    135163
  • 時鐘
    +關注

    關注

    10

    文章

    1733

    瀏覽量

    131483

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

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    STM32F1系列單片機的時鐘系統(tǒng)

      這是stm32時鐘系統(tǒng),時鐘與單片機的關系就好比心臟與人的關系一樣,它為單片機的運行提供時間基準。STM32F1系列單片機的
    發(fā)表于 03-23 17:44 ?2889次閱讀
    <b class='flag-5'>STM32</b>F1系列單片機的<b class='flag-5'>時鐘</b>系統(tǒng)

    晶振損壞了,STM32還能正常運行?

    晶振損壞了,STM32還能正常運行?
    的頭像 發(fā)表于 09-21 17:10 ?901次閱讀
    晶振損壞了,<b class='flag-5'>STM32</b><b class='flag-5'>還能</b>正常<b class='flag-5'>運行</b>?

    STM32MP135裸機開發(fā)程序掉電之后還能運行嗎?

    目前是直接使用STM32CubeIDE下載在SYSRAM 中運行的,請問ST的大佬們, 1、可否通過把應用程序放在SD卡或者EMMC中,然后復位之后,程序再加載到SYSRAM或在DDR中運行
    發(fā)表于 03-11 07:39

    RCC系統(tǒng)時鐘stm32例程

    關于RCC系統(tǒng)時鐘stm32例程是一個完整的程序,可以運行
    發(fā)表于 12-07 14:33 ?16次下載

    STM32時鐘

    STM32時鐘配置的總結
    發(fā)表于 01-14 11:05 ?3次下載

    為什么時鐘失效后CPU還在運行

    據其工程師講述:在其產品的設計中,STM32 的 HSE 外接 8MHz 的晶體產生振蕩,然后通過 STM32 內部的PLL 倍頻到 72MHz,作為 STM32 的系統(tǒng)時鐘,驅動芯片
    的頭像 發(fā)表于 08-29 17:42 ?6526次閱讀
    為什么<b class='flag-5'>時鐘</b><b class='flag-5'>失效</b>后CPU還在<b class='flag-5'>運行</b>?

    STM32F10x常見的應用講解分析概述

    STM32作為一個可靠穩(wěn)定的微處理器,但是不能排除由于某些外界特殊因素可能造成STM32的外部振蕩器失效,所以在芯片中需要一種包含機制能夠在STM32
    發(fā)表于 10-25 15:35 ?2次下載
    <b class='flag-5'>STM32</b>F10x常見的應用講解分析概述

    STM32F10x單片機的常見應用分析

    STM32作為一個可靠穩(wěn)定的微處理器,但是不能排除由于某些外界特殊因素可能造成STM32的外部振蕩器失效,所以在芯片中需要一種包含機制能夠在STM32
    發(fā)表于 12-10 08:00 ?4次下載
    <b class='flag-5'>STM32</b>F10x單片機的常見應用分析

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

    72MHz,作為 STM32 的系統(tǒng)時鐘,驅動芯片工作。在 STM32 片外有專用的看門狗芯片,監(jiān)控 STM32運行。
    的頭像 發(fā)表于 10-29 17:58 ?3080次閱讀
    <b class='flag-5'>時鐘</b><b class='flag-5'>失效</b>后<b class='flag-5'>STM32</b><b class='flag-5'>還能</b><b class='flag-5'>運行</b>是什么情況

    STM32移植到GD32,將內部時鐘切換為外部時鐘后無法運行的問題分析

    1. 前言作者之前用過GD32芯片,也成功移植過STM32代碼到GD32芯片,但最近移植一份STM32代碼到GD32后運行的時候發(fā)現一個問題:使用內部時鐘時一切正常,一旦切換為使用外部
    發(fā)表于 12-02 15:36 ?17次下載
    <b class='flag-5'>STM32</b>移植到GD32,將內部<b class='flag-5'>時鐘</b>切換為外部<b class='flag-5'>時鐘</b>后無法<b class='flag-5'>運行</b>的問題分析

    STM32學習筆記--時鐘系統(tǒng)

    ,它們工作的核心都是大規(guī)模的時序邏輯電路,而驅動電路的關鍵則是準確而且穩(wěn)定的時鐘源。時鐘為時序電路提供基本的脈沖信號,用于協(xié)調和同步各單元運行。? 51單片機不需要配置時鐘,是因為一個
    發(fā)表于 12-05 19:51 ?13次下載
    <b class='flag-5'>STM32</b>學習筆記--<b class='flag-5'>時鐘</b>系統(tǒng)

    STM32CubeMX | 基于STM32使用HAL庫驅動RTC時鐘及鬧鐘功能

    STM32使用HAL庫驅動RTC時鐘及鬧鐘功能目錄STM32使用HAL庫驅動RTC時鐘及鬧鐘功能(一)工程配置(二)代碼編寫(三)運行效果本
    發(fā)表于 12-06 09:21 ?52次下載
    <b class='flag-5'>STM32</b>CubeMX | 基于<b class='flag-5'>STM32</b>使用HAL庫驅動RTC<b class='flag-5'>時鐘</b>及鬧鐘功能

    STM32時鐘

    STM32時鐘樹問題1:為什么需要時鐘?答:STM 32的時鐘系統(tǒng)類似于人的心臟,需要為芯片提供時鐘芯片才能正常工作,而
    發(fā)表于 12-06 09:51 ?16次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>時鐘</b>樹

    STM32入門系列-STM32時鐘系統(tǒng),STM32時鐘

    時鐘對于單片機來說是非常重要的,它為單片機工作提供一個穩(wěn)定的機器周期從而使系統(tǒng)能夠正常運行。時鐘系統(tǒng)猶如人的心臟,一旦有問題整個系統(tǒng)就崩潰。我們知道STM32屬于高級單片機,其內部有很
    發(fā)表于 01-17 11:22 ?6次下載
    <b class='flag-5'>STM32</b>入門系列-<b class='flag-5'>STM32</b><b class='flag-5'>時鐘</b>系統(tǒng),<b class='flag-5'>STM32</b><b class='flag-5'>時鐘</b>樹

    時鐘失效之后STM32還能運行?

    STM32片外有專用的看門狗芯片,監(jiān)控STM32運行。STM32內部的軟件會在STM32的某個管腳上產生脈沖來復位看門狗。
    發(fā)表于 02-08 15:19 ?0次下載
    <b class='flag-5'>時鐘</b><b class='flag-5'>失效</b><b class='flag-5'>之后</b>,<b class='flag-5'>STM32</b><b class='flag-5'>還能</b><b class='flag-5'>運行</b>?