詳解stm32時(shí)鐘問題
一、時(shí)鐘
1.三種不同的時(shí)鐘源可被用來驅(qū)動(dòng)系統(tǒng)時(shí)鐘(SYSCLK):
.HSI?振蕩器時(shí)鐘??High?Speed?Internal
.HSE?振蕩器時(shí)鐘??High?Speed?External
.PLL?時(shí)鐘????????Phase?Locked?Loop
2.這些設(shè)備有以下2種二級(jí)時(shí)鐘源:
.32kHz?低速內(nèi)部RC【1】,可以用于驅(qū)動(dòng)獨(dú)立看門狗和RTC。RTC用于從停機(jī)/待機(jī)模式下自動(dòng)喚醒系統(tǒng)。
.32.768kHz?低速外部晶體也可用來驅(qū)動(dòng)RTC(RTCCLK)。RTC:Real-Time?Clock 實(shí)時(shí)時(shí)鐘當(dāng)不被使用時(shí),任一個(gè)時(shí)鐘源都可被獨(dú)立地啟動(dòng)或關(guān)閉,由此優(yōu)化系統(tǒng)功耗。
3.用戶可通過多個(gè)預(yù)分頻器配置AHB(Advanced?High?Performance?Bus高性能總線)、高速APB(Advanced?Peripheral?Bus外圍總線)(APB2)和低速?APB(APB1)域的頻率。
AHB和APB2域的最大頻率是72MHZ。APB1域的最大允許頻率是36MHZ。
RCC通過AHB時(shí)鐘8分頻后供給Cortex系統(tǒng)定時(shí)器的外部時(shí)鐘。通過對(duì)SysTick控制與狀態(tài)寄存器的設(shè)置,可選擇上述時(shí)鐘或Cortex?AHB時(shí)鐘作為SysTick時(shí)鐘。
ADC時(shí)鐘由高速APB2時(shí)鐘經(jīng)2、4、6或8分頻后獲得。
定時(shí)器時(shí)鐘頻率是其所在APB總線頻率的兩倍。然而,如果相應(yīng)的APB預(yù)分頻系數(shù)是1,定時(shí)器的時(shí)鐘頻率與所在APB總線頻率一致。
FCLK是Cortex-M3的自由運(yùn)行時(shí)鐘(Free?Clock)。詳情見ARM的Cortex-M3技術(shù)參考手冊(cè)。
4.時(shí)鐘樹
?
二、HSE?時(shí)鐘
高速外部時(shí)鐘信號(hào)(HSE)由以下兩種時(shí)鐘源產(chǎn)生:(High?Speed?External)
HSE?外部晶體/陶瓷諧振器【2】
HSE?用戶外部時(shí)鐘
為了減少時(shí)鐘輸出的失真和縮短啟動(dòng)穩(wěn)定時(shí)間,晶體/陶瓷諧振器和負(fù)載電容器必須盡可能地靠近振蕩器管腳。負(fù)載電容值必須根據(jù)所選擇的振蕩器來調(diào)整。
HSE/LSE時(shí)鐘源
硬件配置
外部時(shí)鐘
晶體/陶瓷諧振器
外部時(shí)鐘源(HSE旁路)
在這個(gè)模式里,必須提供外部時(shí)鐘。它的頻率最高可達(dá)25MHz。用戶可通過設(shè)置在時(shí)鐘控制寄存器中的HSEBYP和HSEON位來選擇這一模式。外部時(shí)鐘信號(hào)(50%占空比的方波、正弦波或三角波)必須連到SOC_IN管腳,同時(shí)保證OSC_OUT管腳懸空。見上圖。
外部晶體/陶瓷諧振器(HSE晶體)4-16Mz外部振蕩器可為系統(tǒng)提供更為精確的主時(shí)鐘。相關(guān)的硬件配置可上圖,進(jìn)一步信息可參考數(shù)據(jù)手冊(cè)的電氣特性部分。
在時(shí)鐘控制寄存器RCC_CR中的HSERDY位用來指示高速外部振蕩器是否穩(wěn)定。在啟動(dòng)時(shí),直到這一位被硬件置1,時(shí)鐘才被釋放出來。如果在時(shí)鐘中斷寄存器RCC_CIR中被激活,將會(huì)產(chǎn)生相應(yīng)中斷。
HSE晶體可以通過設(shè)置時(shí)鐘控制寄存器里RCC_CR中的HSEON位被啟動(dòng)和關(guān)閉。
三、HSI?時(shí)鐘??High?Speed?Internal
HSI時(shí)鐘信號(hào)由內(nèi)部8MHZ的RC振蕩器產(chǎn)生,它可以直接作為系統(tǒng)時(shí)鐘或者在2分頻后作為PLL輸入。HSI?RC振蕩器能夠在不需要任何外部器件的條件下提供系統(tǒng)時(shí)鐘。它的啟動(dòng)時(shí)間比HSE晶體振蕩器短。然而,即使在校準(zhǔn)之后它的時(shí)鐘頻率精度仍較差。
校準(zhǔn)
制造工藝決定了不同芯片的RC振蕩器頻率會(huì)不同,這就是為什么每個(gè)芯片的HIS時(shí)鐘頻率在出廠前已經(jīng)被ST校準(zhǔn)到1%(25°C)的原因。系統(tǒng)復(fù)位時(shí),工廠校準(zhǔn)值被裝載到時(shí)鐘控制寄存器的HSICAL[7:0]位。如果用戶的應(yīng)用基于不同的電壓或環(huán)境溫度,這將會(huì)影響RC振蕩器的精度。你可以通過利用在時(shí)鐘控制寄存器里的HSITRIM[4:0]位來調(diào)整HSI頻率。時(shí)鐘控制寄存器中的HSIRDY位用來指示HSI?RC振蕩器是否穩(wěn)定。在時(shí)鐘啟動(dòng)過程中,直到這一位被硬件置1,HSI?RC輸出時(shí)鐘才被釋放。HSI?RC可由時(shí)鐘控制寄存器中的HSION位來啟動(dòng)和關(guān)閉。如果HSE晶體振蕩器失效,HSI時(shí)鐘會(huì)被作為備用時(shí)鐘源??梢詤⒖紩r(shí)鐘安全系統(tǒng)。
四、?PLL
內(nèi)部PLL可以用來倍頻HSI?RC的輸出時(shí)鐘或HSE晶體輸出時(shí)鐘。參考上圖和時(shí)鐘控制寄存器。
PLL的設(shè)置(選擇HIS振蕩器除2或HSE振蕩器為PLL的輸入時(shí)鐘,和選擇倍頻因子)必須在其被激活前完成。一旦PLL被激活,這些參數(shù)就不能被改動(dòng)。如果PLL中斷在時(shí)鐘中斷寄存器里被允許,當(dāng)PLL準(zhǔn)備就緒時(shí),可產(chǎn)生中斷申請(qǐng)。如果需要在應(yīng)用中使用USB接口,PLL必須被設(shè)置為輸出48或72MHZ時(shí)鐘,用于提供48MHz的USBCLK時(shí)鐘。
五、?LSE?時(shí)鐘
LSE晶體是一個(gè)32.768kHz的低速外部晶體或陶瓷諧振器。它為實(shí)時(shí)時(shí)鐘或者其他定時(shí)功能提供一個(gè)低功耗且精確的時(shí)鐘源。LSE晶體通過在備份域控制寄存器(RCC_BDCR)里的LSEON位啟動(dòng)和關(guān)閉。在備份域控制寄存器(RCC_BDCR)里的LSERDY指示LSE晶體振蕩是否穩(wěn)定。在啟動(dòng)階段,直到這個(gè)位被硬件置1后,LSE時(shí)鐘信號(hào)才被釋放出來。如果在時(shí)鐘中斷寄存器里被允許,可產(chǎn)生中斷申請(qǐng)。外部時(shí)鐘源(LSE旁路)在這個(gè)模式里必須提供一個(gè)32.768kHz頻率的外部時(shí)鐘源。你可以通過設(shè)置在備份域控制寄存器(RCC_BDCR)里的LSEBYP和LSEON位來選擇這個(gè)模式。具有50%占空比的外部時(shí)鐘信號(hào)(方波,正弦波或三角波)必須連到OSC32_IN管腳,同時(shí)保證OSC32_OUT管腳懸空。見上圖。
六、?LSI?時(shí)鐘
LSI?RC擔(dān)當(dāng)一個(gè)低功耗時(shí)鐘源的角色,它可以在停機(jī)和待機(jī)模式下保持運(yùn)行,為獨(dú)立看門狗和自動(dòng)喚醒單元提供時(shí)鐘。LSI時(shí)鐘頻率大約32kHz(在30kHz和60kHz之間)。進(jìn)一步信息請(qǐng)參考數(shù)據(jù)手冊(cè)中有關(guān)電氣特性部分。
LSI?RC可以通過控制/狀態(tài)寄存器(RCC_CSR)里的LSION位來啟動(dòng)或關(guān)閉。
在控制/狀態(tài)寄存器(RCC_CSR)里的LSIRDY位指示低速內(nèi)部振蕩器是否穩(wěn)定。在啟動(dòng)階段,直到這個(gè)位被硬件設(shè)置為1后,此時(shí)鐘才被釋放。如果在時(shí)鐘中斷寄存器(RCC_CIR)里被允許,將產(chǎn)生LSI中斷申請(qǐng)。
七、?系統(tǒng)時(shí)鐘(SYSCLK)選擇
系統(tǒng)復(fù)位后,HSI振蕩器被選為系統(tǒng)時(shí)鐘。當(dāng)時(shí)鐘源被直接或通過PLL間接作為系統(tǒng)時(shí)鐘時(shí),它將不能被停止。只有當(dāng)目標(biāo)時(shí)鐘源準(zhǔn)備就緒了(經(jīng)過啟動(dòng)穩(wěn)定階段的延遲或PLL穩(wěn)定),從一個(gè)時(shí)鐘源到另一個(gè)時(shí)鐘源的切換才會(huì)發(fā)生。在被選擇時(shí)鐘源沒有就緒時(shí),系統(tǒng)時(shí)鐘的切換不會(huì)發(fā)生。直至目標(biāo)時(shí)鐘源就緒,才發(fā)生切換。在時(shí)鐘控制寄存器(RCC_CR)里的狀態(tài)位指示哪個(gè)時(shí)鐘已經(jīng)準(zhǔn)備好了,哪個(gè)時(shí)鐘目前被用作系統(tǒng)時(shí)鐘。
八、?時(shí)鐘安全系統(tǒng)(CSS)(Clock?System?Safe)
時(shí)鐘安全系統(tǒng)可以通過軟件被激活。一旦其被激活,時(shí)鐘監(jiān)測(cè)器將在HSE振蕩器啟動(dòng)延遲后被使能,并在HSE時(shí)鐘關(guān)閉后關(guān)閉。如果HSE時(shí)鐘發(fā)生故障,此振蕩器自動(dòng)地被關(guān)閉,時(shí)鐘失效事件將被送到高級(jí)定時(shí)器TIM1的斷路輸入端,并產(chǎn)生時(shí)鐘安全中斷CSSI,允許軟件完成營(yíng)救操作。此CSSI中斷被連接到Cortex-M3?NMI的中斷。
注意:一旦CSS被激活,并且HSE時(shí)鐘出現(xiàn)故障,CSS中斷就產(chǎn)生,并且NMI也自動(dòng)產(chǎn)生。NMI將被不斷執(zhí)行,直到CSS中斷掛起位被清除。因此,在NMI的處理程序中必須通過設(shè)置時(shí)鐘中斷寄存器(RCC_CIR)里的CSSC位來清除CSS中斷。如果HSE振蕩器被直間或間接地作為系統(tǒng)時(shí)鐘來用的話,(間接的意思是:它被作為PLL輸入時(shí)鐘,并且PLL時(shí)鐘被作為系統(tǒng)時(shí)鐘),時(shí)鐘故障將導(dǎo)致系統(tǒng)時(shí)鐘自動(dòng)切換到HSI振蕩器,
同時(shí)外部HSE振蕩器被關(guān)閉。在時(shí)鐘失效時(shí),如果HSE振蕩器時(shí)鐘(被分頻或未被分頻)是用作系統(tǒng)時(shí)鐘的PLL的輸入時(shí)鐘,PLL也將被關(guān)閉。
九、?RTC?時(shí)鐘
通過設(shè)置備份域控制寄存器(RCC_BDCR)里的RTCSEL[1:0]位,RTCCLK時(shí)鐘源可以由HSE/128、LSE或LSI時(shí)鐘提供。除非備份域復(fù)位,此選擇不能被改變。
LSE時(shí)鐘在備份域里,但HSE和LSI時(shí)鐘不是。因此:
如果LSE?被選為RTC?時(shí)鐘:
只要VBAT?維持供電,盡管VDD?供電被切斷,RTC?仍繼續(xù)工作。
如果LSI?被選為自動(dòng)喚醒單元(AWU)時(shí)鐘:
如果VDD?供電被切斷,?AWU?狀態(tài)不能被保證
如果HSE?時(shí)鐘128?分頻后作為RTC?時(shí)鐘:
如果VDD?供電被切斷或內(nèi)部電壓調(diào)壓器被關(guān)閉(1.8V?域的供電被切斷),RTC?狀態(tài)不能被保證。
十、?看門狗時(shí)鐘
如果獨(dú)立看門狗已經(jīng)由硬件選項(xiàng)或軟件啟動(dòng),LSI振蕩器將被強(qiáng)制在打開狀態(tài),并且不能被關(guān)閉。在LSI振蕩器穩(wěn)定后,時(shí)鐘供應(yīng)給IWDG。
十一、?時(shí)鐘輸出
微控制器允許輸出時(shí)鐘信號(hào)到外部MCO管腳。
相應(yīng)的GPIO端口寄存器必須被配置為相應(yīng)功能。以下四個(gè)時(shí)鐘信號(hào)可被選作MCO時(shí)鐘:
SYSCLK
HSI
HSE
除2?的PLL?時(shí)鐘
時(shí)鐘的選擇由時(shí)鐘配置寄存器(RCC_CFGR)中的MCO[2:0]位控制。
【1】采用RC選頻網(wǎng)絡(luò)構(gòu)成的振蕩電路稱為RC振蕩電路,它適用于低頻振蕩,一般用于產(chǎn)生1Hz~1MHz的低頻信號(hào)。因?yàn)閷?duì)于RC振蕩電路來說,增大電阻R即可降低振蕩頻率,而增大電阻是無需增加成本的。?
常用LC振蕩電路產(chǎn)生的正弦波頻率較高,若要產(chǎn)生頻率較低的正弦振蕩,勢(shì)必要求振蕩回路要有較大的電感和電容,這樣不但元件體積大、笨重、安裝不便,而且制造困難、成本高。因此,200kHz以下的正弦振蕩電路,一般采用振蕩頻率較低的RC振蕩電路。
常用的RC振蕩電路
有相移式和橋式兩種。
(1)RC移相式振蕩器,具有電路簡(jiǎn)單,經(jīng)濟(jì)方便等優(yōu)點(diǎn),但選頻作用較差,振幅不夠穩(wěn)定,頻率調(diào)節(jié)不便,因此一般用于頻率固定、穩(wěn)定性要求不高的場(chǎng)合。其振蕩頻率是fo=1/2π√6RC?
(2)RC橋式振蕩器?將RC串并聯(lián)選頻網(wǎng)絡(luò)和放大器結(jié)合起來即可構(gòu)成RC振蕩電路,放大器件可采用集成運(yùn)算放大器。?
【2】諧振器就是指產(chǎn)生諧振頻率的電子元件,常用的分為石英晶體諧振器和陶瓷諧振器。起產(chǎn)生頻率的作用,具有穩(wěn)定,抗干擾性能良好的特點(diǎn),廣泛應(yīng)用于各種電子產(chǎn)品中,石英晶體諧振器的頻率精度要高于陶瓷諧振器,但成本也比陶瓷諧振器高。諧振器重要起頻率控制的作用,所有電子產(chǎn)品涉及頻率的發(fā)射和接收都需要諧振器。諧振器的類型按照外形可以分為直插式和貼片式兩種。
是的