簡單驗證K60內部時鐘執行頻率

2021-06-03 19:20:50 字數 1298 閱讀 6153

新的一年,開個好頭~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)。現在硬體上的配置我們已經了然了,下面看看飛思卡爾官方給出的軟體上是怎麼實現的。這部分軟體需要到啟動**檔案之一sysinit.c檔案(這裡再抱怨一下,飛思卡爾官方給出的太麻煩了,哎)裡找到。在最後面可以看到兩個子函式及在程式之中的呼叫,下圖:

軟體上如上圖所示設定之後就可以正常輸出了。在軟體mcg初始化裡,我設定的核心時鐘為100mhz(所以trace clock為50mhz,上面有說到),匯流排時鐘為50mhz(fb_clock),下面看下我照下來的波形(汗,用手機照的,效果一般,沒帶u盤沒法從示波器裡直接匯出,湊合著先看著,下次一定不要忘了帶u盤啊,呵呵):

trace clock 波形圖

fb_clock 波形圖

通過上面簡單的步驟就可以實現對k60內部時鐘的執行頻率驗證了,非常方便。不過從圖上看,波形有一定的直流分量,而且我測試過頻率越低,這個直流分量越小,沒想明白,希望有高手遇到過這個問題的指點一下,謝謝了。

K60 啟動過程分析

很高興老師借給我一k60的開發板,趁著暑假好好鼓搗鼓搗!有了上圖的過程分析我想心裡大概有個低了吧!以下看 codewarrior arm runtime support library date 2013 02 08 07 14 44 revision 1.6 arm start.c entry p...

k60 的DHT11時序寫法注意

第一次發帖,不怎麼會,承認了。就僅僅是記錄一下心得 下面是時序圖 初始化時序圖 2.讀取資料時序圖 下面看一下我的 void dht11writestart void 開始標誌 u8 dht11readbyte void else 否表示0 return temp char a 5 int temp...

K60學習筆記(1) 啟動檔案分析

初始化函式 上電復位 中斷向量表 在vectors.c裡面定義,在vectors.件裡。在vectors.h裡面兩行 define vector 000 vector entry boot stack address arm core initial supervisor sp define vec...