新的一年,開個好頭~K60涼在手里好多天了,好久沒弄了,今天又拿出來當寶貝似的玩了玩,搗鼓了一上午,有點小收獲,跟大家分享一下,因為只是一種小技巧,所以就不單獨列入從零入手系列了。
其實以前看啟動代碼的時候就注意過這個,不過那時候沒親手試驗過,老覺著空有理論,然而不實踐一下怎么能行呢是吧,呵呵。其實現在發現好多人都有這個毛 病,覺著看那點東西就那么回事兒,小菜兒,往往就懶得去動手去驗證一下,個人覺著這個陋習不只是在剛入門的人身上有體現,很多高手也有這個毛病。個人建議 下盡量去克服這個陋習(雖然我也有這個毛病,汗,正在改_ing),因為我們搞電子的、搞工程的不就是靠的動手能力嗎,咱靠著吃飯的家伙可不能冷落了它, 覺著有理的頂一個哈,哈哈~
下面進入正題,我們在通過MCG模塊設置系統時鐘的時候,往往無法去準確確定設置后系統的運行時鐘跟自己的設置是否對應。到這里可能會有人提出通過軟件延 時不斷翻轉某個IO狀態來驗證,好吧,我只能微微一笑了,呵呵~既然飛思卡爾給咱提供了方便的方式(不只是飛思卡爾,其實很多單片機都提供這個功能,這里 用飛思卡爾人家的東西就替人家吹吹吧),咱們何樂而不為呢。
K60(144pin的,因為有些型號由于管腳數量限制,可能會被裁減掉,這里為了嚴謹提一下)提供了兩個復用IO管腳(PTA6和PTC3)用來輸出 trace_clock 和FB_Clock,其中trace_clock為調試用的跟蹤時鐘,通過軟件可以設置成為MCG_Clock_Out或者 Core_Clock/System_Clock(注意trace clock實際輸出為內部時鐘的2分頻);FB_Clock為FlexBus clock即總線時鐘。文字啰嗦,下面還是上圖(管腳復用圖),呵呵~
上面是硬件上的復用情況,可以看到,trace clock 為第七個復用功能(ALT7),FB_Clock為第五個復用功能(ALT5),F在硬件上的配置我們已經了然了,下面看看飛思卡爾官方給出的軟件上是怎 么實現的。這部分軟件需要到啟動代碼文件之一sysinit.c文件(這里再抱怨一下,飛思卡爾官方給出的太麻煩了,哎)里找到。在最后面可以看到兩個子 函數及在程序之中的調用,下圖:
軟件上如上圖所示設置之后就可以正常輸出了。在軟件MCG初始化里,我設置的內核時鐘為100MHz(所以trace clock為50MHz,上面有說到),總線時鐘為50MHz(FB_Clock),下面看下我照下來的波形(汗,用手機照的,效果一般,沒帶U盤沒法從 示波器里直接導出,湊合著先看著,下次一定不要忘了帶U盤啊,呵呵):
trace clock 波形圖
FB_Clock 波形圖
通過上面簡單的步驟就可以實現對K60內部時鐘的運行頻率驗證了,非常方便。不過從圖上看,波形有一定的直流分量,而且我測試過頻率越低,這個直流分量越小,沒想明白,希望有高手遇到過這個問題的指點一下,謝謝了。