stm32F103R6之時鐘樹

概述

三種不同的時鐘源可被用來驅動系統時鐘(SYSCLK):HSI(內部高速)振盪器時鐘、HSE(外部高速)振盪器時鐘、PLL(鎖相環)時鐘。

另外:

  • 40kHz低速內部RC,可以用於驅動獨立看門狗和通過程序選擇驅動RTC。RTC用於從停機/待機模式下自動喚醒系統。
  • 32.768kHz低速外部晶體也可用來通過程序選擇驅動RTC(RTCCLK)。

當不被使用時,任一個時鐘源都可被獨立地啟動或關閉,由此優化系統功耗。

stm32F103R6之時鐘樹

圖 1時鐘樹

HSE時鐘

高速外部時鐘信號(HSE)由以下兩種時鐘源產生:HSE外部晶體/陶瓷諧振器和HSE用戶外部時鐘。

為了減少時鐘輸出的失真和縮短啟動穩定時間,晶體/陶瓷諧振器和負載電容器必須儘可能地靠近振盪器引腳。負載電容值必須根據所選擇的振盪器來調整。

外部時鐘源(HSE旁路)

在這個模式裡,必須提供外部時鐘。它的頻率最高可達25MHz。用戶可通過設置在時鐘控制寄存器中的HSEBYP和HSEON位來選擇這一模式。外部時鐘信號(50%佔空比的方波、正弦波或三角波)必須連到SOC_IN引腳,同時保證OSC_OUT引腳懸空。見下圖。

外部晶體/陶瓷諧振器(HSE晶體)

4~16Mz外部振盪器可為系統提供更為精確的主時鐘。相關的硬件配置可參考下圖。在時鐘控制寄存器RCC_CR中的HSERDY位用來指示高速外部振盪器是否穩定。在啟動時,直到這一位被硬件置’1’,時鐘才被釋放出來。如果在時鐘中斷寄存器RCC_CIR中允許產生中斷,將會產生相應中斷。 HSE晶體可以通過設置時鐘控制寄存器裡RCC_CR中的HSEON位被啟動和關閉。

stm32F103R6之時鐘樹

圖 2HSE時鐘源

HSI時鐘

HSI時鐘信號由內部8MHz的RC振盪器產生,可直接作為系統時鐘或在2分頻後作為PLL輸入。HSI RC振盪器能夠在不需要任何外部器件的條件下提供系統時鐘。它的啟動時間比HSE晶體振盪器短。然而,即使在校準之後它的時鐘頻率精度仍較差。

製造工藝決定了不同芯片的RC振盪器頻率會不同,這就是為什麼每個芯片的HSI時鐘頻率在出廠前已經被ST校準到1%(25°C)的原因。系統復位時,工廠校準值被裝載到時鐘控制寄存器的HSICAL[7:0]位。 如果用戶的應用基於不同的電壓或環境溫度,這將會影響RC振盪器的精度。可以通過時鐘控制寄存器裡的HSITRIM[4:0]位來調整HSI頻率。

時鐘控制寄存器中的HSIRDY位用來指示HSI RC振盪器是否穩定。在時鐘啟動過程中,直到這一位被硬件置’1’,HSI RC輸出時鐘才被釋放。HSI RC可由時鐘控制寄存器中的HSION位來啟動和關閉。 如果HSE晶體振盪器失效,HSI時鐘會被作為備用時鐘源。

PLL

內部PLL可以用來倍頻HSI RC的輸出時鐘或HSE晶體輸出時鐘。

PLL的設置(選擇HIS振盪器除2或HSE振盪器為PLL的輸入時鐘,和選擇倍頻因子)必須在其被激活前完成。一旦PLL被激活,這些參數就不能被改動。

如果PLL中斷在時鐘中斷寄存器裡被允許,當PLL準備就緒時,可產生中斷申請。

如果需要在應用中使用USB接口,PLL必須被設置為輸出48或72MHZ時鐘,用於提供48MHz的USBCLK時鐘。

LSE時鐘

LSE晶體是一個32.768kHz的低速外部晶體或陶瓷諧振器。它為實時時鐘或者其他定時功能提供一個低功耗且精確的時鐘源。 LSE晶體通過在備份域控制寄存器(RCC_BDCR)裡的LSEON位啟動和關閉。 在備份域控制寄存器(RCC_BDCR)裡的LSERDY指示LSE晶體振盪是否穩定。在啟動階段,直到這個位被硬件置’1’後,LSE時鐘信號才被釋放出來。如果在時鐘中斷寄存器裡被允許,可產生中斷申請。

外部時鐘源(LSE旁路)

在這個模式裡必須提供一個32.768kHz頻率的外部時鐘源。你可以通過設置在備份域控制寄存器(RCC_BDCR)裡的LSEBYP和LSEON位來選擇這個模式。具有50%佔空比的外部時鐘信號。

LSI時鐘

LSI RC擔當一個低功耗時鐘源的角色,它可以在停機和待機模式下保持運行,為獨立看門狗和自動喚醒單元提供時鐘。LSI時鐘頻率大約40kHz(在30kHz和60kHz之間)。

LSI RC可以通過控制/狀態寄存器(RCC_CSR)裡的LSION位來啟動或關閉。

在控制/狀態寄存器(RCC_CSR)裡的LSIRDY位指示低速內部振盪器是否穩定。在啟動階段,直到這個位被硬件設置為’1’後,此時鐘才被釋放。如果在時鐘中斷寄存器(RCC_CIR)裡被允許,將產生LSI中斷申請。

系統時鐘(SYSCLK)選擇

系統復位後,HSI振盪器被選為系統時鐘。當時鍾源被直接或通過PLL間接作為系統時鐘時,它將不能被停止。 只有當目標時鐘源準備就緒了(經過啟動穩定階段的延遲或PLL穩定),從一個時鐘源到另一個時鐘源的切換才會發生。在被選擇時鐘源沒有就緒時,系統時鐘的切換不會發生。直至目標時鐘源就緒,才發生切換。 在時鐘控制寄存器(RCC_CR)裡的狀態位指示哪個時鐘已經準備好了,哪個時鐘目前被用作系統時鐘。

時鐘安全系統(CSS)

時鐘安全系統可以通過軟件被激活。一旦其被激活,時鐘監測器將在HSE振盪器啟動延遲後被使能,並在HSE時鐘關閉後關閉。 如果HSE時鐘發生故障,HSE振盪器被自動關閉,時鐘失效事件將被送到高級定時器(TIM1和TIM8)的剎車輸入端,併產生時鐘安全中斷CSSI,允許軟件完成營救操作。此CSSI中斷連接到Cortex™-M3的NMI中斷(不可屏蔽中斷)。

時鐘輸出

微控制器允許輸出時鐘信號到外部MCO引腳。 相應的GPIO端口寄存器必須被配置為相應功能。以下四個時鐘信號可被選作MCO時鐘(見圖一):

● SYSCLK

● HSI

● HSE

● 2分頻的PLL時鐘


分享到:


相關文章: