飛思卡爾 Kinetis系列是飛思卡爾推出的基于ARM CORTEX-M4為核心的微控制器。
飛思卡爾K60時鐘系統設計
? ? 飛思卡爾K60時鐘系統如上圖所示,可以發現器件的源時鐘源一共有4個:
? ? ①內部參考時鐘源,包括 Fast IRC和 slow IRC (IRC--Internal Reference Clock)
? ? ②外部參考時鐘源,只一個EXTAL管腳作為時鐘輸入,這個可以使用有源晶體振蕩器來實現
? ? ③外部晶體諧振器,使用EXTAL和XTAL兩個管腳來輸入
? ? ④外部32K RTC 諧振器,用于實時時鐘的時鐘輸入
? ? 在圖中可以看到,要為系統提供時鐘信號,關鍵是要最終生成 MCGOUTCLK 輸出。MCGOUTCLK 再經過分頻便可以提供Core/system clocks、Bus clock、FlexBus clock和Flash clock。MCGOUTCLK 的產生有3個途徑:
? ? ①由內部參考時鐘源 Fast IRC 直接提供,這個時鐘源集成在芯片的內部(包括Slow IRC),頻率是2M
? ? ②由 FLL 或者 PLL 模塊來提供
? ? ③由外部時鐘來直接提供,包括外部參考時鐘源(1個管腳輸入)、外部晶體諧振器經內部OSC logic產生的XTAL_CLK 和 RTC OSC logic 的時鐘輸出。
?
? ? 一般情況下,MCGOUTCLK 是由PLL或者FLL倍頻來產生的,飛思卡爾官方的例程最終是由PLL模塊來產生。圖中可以看到PLL模塊的時鐘輸入是OSCCLK或者RTC OSC logic。我的板子以外部參考時鐘源提供PLL時鐘,最終經PLL倍頻產生MCGOUTCLK。即 EXTAL-->PLL模塊-->MCGOUTCLK.
?
2.關于時鐘模式
?
?
?從圖中可以看到,該芯片一共包含8種工作時鐘模式,外加Stop模式。系統在RESET后直接進入默認的FEI模式。圖中,F--FLL、P--PLL、E--Enable或者EXTAL(外部時鐘)、B--Bypass(旁路)、I--Internal(內部參考時鐘)、L--Low Power.
·FLL 啟用、內部參考時鐘(FEI), 內部參考時鐘提供FLL的時鐘,FLL驅動MCGOUT
·FLL 啟用、外部參考時鐘(FEE), 外部參考時鐘提供FLL的時鐘,FLL驅動MCGOUT
·FLL 旁路、內部參考時鐘(FBI),FLL雖然在運作但由內部時鐘參考源驅動MCGOUT?
·FLL 旁路、外部參考時鐘(FBE),FLL雖然在運作但由外部時鐘參考源驅動MCGOUT?
·PLL 旁路、外部參考時鐘(PBE),PLL雖然在運作但由外部時鐘參考源驅動MCGOUT?
·PLL 啟用、外部參考時鐘(PEE),外部參考時鐘提供PLL的時鐘,PLL驅動MCGOUT
·BLPI FLL和PLL都禁用,內部時鐘參考源驅動MCGOUT
·BLPE?FLL和PLL都禁用,外部時鐘參考源驅動MCGOUT
由于系統在重啟后默認進入FEI模式,我們的目標是要跳到PEE模式,所以要涉及到模式的轉化。圖中由FEI到PEE是不能直接跳轉的,必須經由其他模式來轉換。