soc的時鐘產生單元(
cgu)通過外部輸入時鐘和內部相位鎖相環(
pll)和分頻選擇邏輯產生用於片內的不同頻率的時鐘。片內時鐘頻率的改變通過配置
ahb匯流排全域性控制模組單元內部鎖相環暫存器實現。
cgu單元內部包含三個鎖相環,分別產生系統主時鐘、
ddr物理層時鐘、乙太網物理層時鐘,其配置暫存器位於
ahb匯流排全域性控制模組。
cgu模組還產生
1553
模組時鐘與
uart
時鐘。
鎖相環採用
65nm
工藝庫中的
pllsm65llfrac
鎖相環,其最高輸出頻率為
1.6ghz
,包含小數配置模式和整數配置模式,該時鐘管理單元內部的鎖相環採用整數配置模式,使用者可配置引腳如表
1所列。
表1 普通鎖相環可配置引腳
引腳名稱
方向位寬
說明refdiv(分頻器)i6
鎖相環分頻係數
fbdiv(倍頻器)i12
鎖相環倍頻係數
鎖相環時鐘用foutvco表示,晶振輸入時鐘用clkin表示,倍頻器係數用fbdiv表示,分頻器係數用refdiv表示,主時鐘用mainpll表示,ddr3時鐘用ddrpll表示,乙太網時鐘用enetpll表示。鎖相環配置公式如下:
鎖相環時鐘:foutvco = clkin * fbdiv / refdiv;
主時鐘:mainpll = clkin * fbdiv / (2*refdiv);
ddr3時鐘:ddrpll = clkin * fbdiv / (2*refdiv);
乙太網時鐘:enetpll = clkin * fbdiv / (6*refdiv);
需要注意的地方:輸出時鐘的範圍為400mhz ≤ foutvco ≤ 1600mhz;對於配置訊號refdiv、fbdiv的要求:1 ≤ refdiv ≤ 63;16 ≤ fbdiv ≤ 1600;通過檢查鎖相環狀態暫存器獲知鎖相環是否鎖定,此時再對鎖相環進行配置操作。
主鎖相環的配置:
主鎖相環產生系統主時鐘,對於主時鐘鎖相環的原理分析知道其滿足:
mainpll = clkin * fbdiv / (2*refdiv)。
配置步驟:
讀取全域性控制模組主鎖相環暫存器,檢視鎖相環狀態暫存器
lock
位資訊(0x40c00008
暫存器的第21位
),直到讀出該位為
0x1;
對主鎖相環暫存器的bypass位寫0x1操作(0x40c00008
暫存器的第
20位),對主鎖相環暫存器的lock位寫0x1操作(0x40c00008
暫存器的第
21位);
配置主鎖相環暫存器的主時鐘倍頻係數(fbdiv)和主時鐘分頻係數(refdiv),mainpll = clkin * fbdiv / (2*refdiv),配置主頻為400mhz,則fbdiv = 0xa0,refdiv = 0x5(fbdiv為暫存器的19-8位,refdiv為暫存器的5-0位);
等待主鎖相環暫存器頻率鎖存完成,通過迴圈讀取lock可知,如果lock位讀出為0,表示頻率鎖存完成;
向主鎖相環暫存器的bypass位寫入0,表示時鐘為鎖相環模式,非旁路模式。
ddr鎖相環配置:
ddr鎖相環產生系統ddr3時鐘,對於ddr鎖相環的原理分析知道其滿足:
ddrpll = clkin * fbdiv / (2*refdiv)。
配置步驟:
讀取全域性控制模組ddr鎖相環暫存器,檢視鎖相環狀態暫存器
lock
位資訊(0x40c0000c
暫存器的第21位
),直到讀出該位為
0x1;
對ddr鎖相環暫存器的bypass位寫0x1操作(0x40c0000c
暫存器的第
20位),對主鎖相環暫存器的lock位寫0x1操作(0x40c0000c
暫存器的第
21位);
配置ddr鎖相環暫存器的ddr時鐘倍頻係數(fbdiv)和ddr時鐘分頻係數(refdiv),ddrpll = clkin * fbdiv / (2*refdiv),配置主頻為533mhz,則fbdiv = 0x215,refdiv = 0x32(fbdiv為暫存器的19-8位,refdiv為暫存器的5-0位);
等待ddr鎖相環暫存器頻率鎖存完成,通過迴圈讀取lock可知,如果lock位讀出為0,表示頻率鎖存完成;
向ddr鎖相環暫存器的bypass位寫入0,表示時鐘為鎖相環模式,非旁路模式。
根據時鐘模組暫存器位址在記憶體分配圖中的分布,將其位址定義為整型巨集定義,將暫存器定義為各位各個功能位域的結構聯合體。這樣子將整型位址轉換成暫存器的結構聯合體指標,就能夠通過暫存器位域去編寫底層驅動了,圖1表示巨集定義暫存器的定義和型別轉換,圖2表示暫存器結構聯合體定義。
圖1
圖2
系統時鐘配置
define rcc rcc typedef rcc base 我們先定義乙個結構體指標rcc base,我們知道指標就是位址空間,我們確定了乙個結構體的首位址,那麼這個結構體的大小隨之確定了,這個結構體的成員將會按首位址依次排列,並逐個占用位址空間.訪問乙個結構體指標成員我們用rcc cr.rcc...
基本時鐘配置
task 上一節中提到了延時函式,延時函式的基本原理就是cpu每執行一條語句需要一定固定的時間,而提供這個時間基準的就是微控制器的時鐘訊號。時鐘訊號 於一定的時鐘源,它們是時鐘源經過被選擇和分頻產生的。時鐘源由一定的硬體電路產生,例如晶振和其他各種振盪器。時鐘源類似於人體的心臟 汽車的發動機。而在g...
如何配置DSI時鐘頻率
description 計算dsi資料速率的方式,以及如何配置時鐘clk的方式 keyword dsi data rate mipi clk solution 1 dsi vdo mode下的資料速率data rate的計算公式為 data rate width vsa vbp vfp height...