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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

為什么時(shí)鐘失效后CPU還在運(yùn)行?

STM32單片機(jī) ? 來(lái)源:未知 ? 作者:佚名 ? 2017-08-29 17:42 ? 次閱讀

問(wèn)題:

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

調(diào)研:

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

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

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

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

得出“輸入信號(hào)頻率為零時(shí),輸出信號(hào)頻率也為零”這樣的結(jié)論。這一點(diǎn)與實(shí)測(cè)的結(jié)果相吻合。

結(jié)論:

STM32 的 PLL 在沒(méi)有輸入信號(hào)的情況下,仍能維持在最低的頻點(diǎn)處振蕩,產(chǎn)生輸出。以至,CPU 及其它外設(shè)仍能在 PLL 送出的時(shí)鐘的驅(qū)動(dòng)下運(yùn)行。所以,通過(guò)判斷有無(wú)時(shí)鐘來(lái)驅(qū)動(dòng) CPU 執(zhí)行指令的方式來(lái)判斷 HSE 是否失效是行不通的。

處理:

對(duì)軟件做如下修改:

1. 在軟件的初始化部分,開(kāi)啟 STM32 的 CSS 功能;

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

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

建議:

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


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

    關(guān)注

    68

    文章

    10863

    瀏覽量

    211797
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    356089
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1734

    瀏覽量

    131490

原文標(biāo)題:時(shí)鐘失效后 CPU 還會(huì)運(yùn)行的案例分析

文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何在運(yùn)行時(shí)計(jì)算設(shè)計(jì)中使用的時(shí)鐘頻率?

    我想知道如何在運(yùn)行時(shí)計(jì)算設(shè)計(jì)中使用的時(shí)鐘頻率(設(shè)計(jì)使用時(shí)鐘組件),尤其是組件內(nèi)部的時(shí)鐘,例如 UART。 例如,使用 clock_getSourceRegister () 返回
    發(fā)表于 01-24 06:09

    STM32F103使用keil5進(jìn)入debug模式,斷點(diǎn)能觸發(fā),但是程序還在運(yùn)行,為什么?

    最近遇到一個(gè)問(wèn)題,使用keil5進(jìn)入debug模式,斷點(diǎn)能觸發(fā),但是程序還在運(yùn)行,就是板子上有個(gè)燈還在閃,這是定時(shí)器控制的,為啥程序停不下來(lái)啊。
    發(fā)表于 03-20 06:25

    STM32L151低功耗運(yùn)行模式CPU是否正在運(yùn)行

    在使得CPU處于LPRUN Mode時(shí),翻轉(zhuǎn)LED,LED不能正常翻轉(zhuǎn),因此請(qǐng)教一下網(wǎng)友們,STM32L151低功耗運(yùn)行模式CPU是否正在運(yùn)行
    發(fā)表于 07-05 06:17

    手機(jī)沒(méi)反應(yīng)游戲還在運(yùn)行

    手機(jī)是聯(lián)想 安卓系統(tǒng)手機(jī)沒(méi)反應(yīng)怎么按都沒(méi)反應(yīng)關(guān)機(jī)也沒(méi)反應(yīng)游戲是手機(jī)網(wǎng)絡(luò)游戲 里面的游戲還在自動(dòng)打怪就是怎么按都沒(méi)反應(yīng)只有拔電池
    發(fā)表于 09-14 08:55

    電腦關(guān)機(jī)提示“程序仍在運(yùn)行

    在Win7系統(tǒng)下關(guān)閉電腦,系統(tǒng)上還有未關(guān)閉的程序,此時(shí)系統(tǒng)就會(huì)彈出提示“程序仍在運(yùn)行”,那么你只能將程序關(guān)閉才能正常關(guān)機(jī)。遇到這樣情況該怎么關(guān)閉電腦,下面小編告訴大家電腦關(guān)機(jī)提示“程序仍在運(yùn)行
    發(fā)表于 08-04 14:49

    用28035調(diào)試CLA的時(shí)候發(fā)現(xiàn),在線調(diào)試時(shí)CPU和CLA都在運(yùn)行,程序下載到板子上FLASHLA程序沒(méi)有運(yùn)行請(qǐng)問(wèn)一下這是什么情況?

    本帖最后由 一只耳朵怪 于 2018-6-14 08:54 編輯 在用28035調(diào)試CLA的時(shí)候發(fā)現(xiàn):在線調(diào)試時(shí)能很好地發(fā)現(xiàn)CPU和CLA都在運(yùn)行,程序下載到板子上FLASH,把板子掉電重新上電,發(fā)現(xiàn)
    發(fā)表于 06-13 11:36

    請(qǐng)問(wèn)通過(guò)rt_timer_create創(chuàng)建的定時(shí)器是否在進(jìn)入臨界區(qū)還在運(yùn)行

    請(qǐng)問(wèn)在調(diào)用rt_enter_critical()進(jìn)入臨界區(qū),通過(guò)rt_timer_create創(chuàng)建的定時(shí)器是否還在運(yùn)行呢?在文檔里看到默認(rèn)創(chuàng)建的是硬件定時(shí)器,此時(shí)進(jìn)入臨界區(qū)定時(shí)器超時(shí)函數(shù)應(yīng)該還能
    發(fā)表于 08-31 14:14

    axd調(diào)試程序在運(yùn)行板子沒(méi)反應(yīng)怎么解決?

    axd調(diào)試程序在運(yùn)行板子沒(méi)反應(yīng)怎么解決?
    發(fā)表于 10-17 06:14

    高性能CPU時(shí)鐘網(wǎng)絡(luò)設(shè)計(jì)

    討論了物理設(shè)計(jì)中時(shí)鐘網(wǎng)絡(luò)的設(shè)計(jì)技術(shù),并以現(xiàn)有的CPU時(shí)鐘網(wǎng)絡(luò)的為例,介紹了高性能CPU時(shí)鐘網(wǎng)絡(luò)設(shè)計(jì)技術(shù)。
    發(fā)表于 12-27 15:28 ?46次下載
    高性能<b class='flag-5'>CPU</b><b class='flag-5'>時(shí)鐘</b>網(wǎng)絡(luò)設(shè)計(jì)

    關(guān)閉電源還在運(yùn)行

    STM32F103RCT6關(guān)閉電源還在運(yùn)行
    發(fā)表于 12-08 11:51 ?0次下載

    FPGA相比CPU在運(yùn)算中的優(yōu)勢(shì)

    FPGA相比于CPU,最大的優(yōu)點(diǎn)在于速度,簡(jiǎn)單來(lái)講,F(xiàn)PGA是靠控制每個(gè)時(shí)鐘(Cycle)來(lái)驅(qū)動(dòng)信號(hào)與寄存器傳輸?shù)?,也就是說(shuō)可以通過(guò)時(shí)鐘來(lái)精確控制任務(wù)。
    的頭像 發(fā)表于 03-28 17:10 ?1.3w次閱讀

    時(shí)鐘失效STM32還能運(yùn)行是什么情況

    72MHz,作為 STM32 的系統(tǒng)時(shí)鐘,驅(qū)動(dòng)芯片工作。在 STM32 片外有專用的看門狗芯片,監(jiān)控 STM32 的運(yùn)行。STM32 內(nèi)部的軟件會(huì)在 STM32 的某個(gè)管腳上產(chǎn)生脈沖來(lái)復(fù)位看門狗。一旦
    的頭像 發(fā)表于 10-29 17:58 ?3081次閱讀
    <b class='flag-5'>時(shí)鐘</b><b class='flag-5'>失效</b><b class='flag-5'>后</b>STM32還能<b class='flag-5'>運(yùn)行</b>是什么情況

    時(shí)鐘失效之后,STM32還能運(yùn)行?

    STM32 沒(méi)有及時(shí)的產(chǎn)生脈沖來(lái)復(fù)位門狗,則看門狗會(huì)認(rèn)為 STM32 運(yùn)行不正常,從而復(fù)位 STM32。在對(duì)該產(chǎn)品做可靠性測(cè)試時(shí),進(jìn)行了對(duì)看門狗監(jiān)控時(shí)鐘失效能力的測(cè)試。測(cè)試的方法是:將 HSE 外接
    的頭像 發(fā)表于 12-30 16:20 ?881次閱讀

    51單片機(jī)for循環(huán)結(jié)束之后還在運(yùn)行

    。因此,在這篇文章中,我將詳盡、詳實(shí)、細(xì)致地討論51單片機(jī)在循環(huán)結(jié)束之后還在運(yùn)行的原因,并提供解決這個(gè)問(wèn)題的措施。 首先,讓我們回顧一下51單片機(jī)的基本運(yùn)行原理。51單片機(jī)是一個(gè)8位微控制器,它具有高度集成的特點(diǎn),包括CPU、
    的頭像 發(fā)表于 12-26 14:06 ?1080次閱讀

    CPU時(shí)鐘周期的組成和作用

    CPU時(shí)鐘周期是計(jì)算機(jī)體系結(jié)構(gòu)中一個(gè)至關(guān)重要的概念,它直接關(guān)聯(lián)到CPU運(yùn)行速度和性能。以下是對(duì)CPU時(shí)
    的頭像 發(fā)表于 09-26 15:32 ?632次閱讀