新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 系統(tǒng)時鐘和定時器簡單記錄

系統(tǒng)時鐘和定時器簡單記錄

作者: 時間:2016-11-10 來源:網(wǎng)絡(luò) 收藏
S3C2440A 中的時鐘控制邏輯可以產(chǎn)生必須的時鐘信號,包括CPU的FCLK,AHB總線外設(shè)的HCLK以及APB總線外設(shè)的PCLK。S3C2440A 包含兩個鎖相環(huán)(PLL):一個提供給 FCLK、HCLK 和PCLK,另一個專用于USB模塊(48MHz)。時鐘控制邏輯可以不使用PLL來減慢時鐘,并且可以由軟件連接或斷開各外設(shè)模塊的時鐘,以降低功耗。
鎖相環(huán)(PLL):時鐘發(fā)生器之中作為一個電路的MPLL,參考輸入信號的頻率和相位同步出一個輸出信號。用于生成與輸入直流電壓成比例的輸出頻率的壓控振蕩器(VCO)、用于將輸入頻率(Fin)按p分頻的分頻器 P 、用于將VCO輸出頻率按m分頻并輸入到相位頻率檢測器(PFD)中的分頻器M用于將VCO輸出頻率按s分頻成為Mpll(輸出頻率來自MPLL模塊)的分頻器S、鑒相器、電荷泵以及環(huán)路濾波器。
鑒相器(PFD ):PFD檢測 Fref 和Fvco之間的相位差,并在檢測到相位差時產(chǎn)生一個控制信號(跟蹤信號)。Fref 意思為參考頻率。
電荷泵(PUMP )
電荷泵將PFD 控制信號轉(zhuǎn)換為一個按比例變化的電壓并通過外部濾波器來驅(qū)動 VCO。
環(huán)路濾波器
PFD產(chǎn)生用于電荷泵的控制信號,在每次 Fvco與Fref 比較時可能產(chǎn)生很大的偏差(紋波)。為了避免 VCO過載,使用低通濾波器采樣并且濾除控制信號的高頻分量。濾波器是一個典型由一個電阻和一個電容組成的單極性RC濾波器。
壓控振蕩器(VCO)
從環(huán)路濾波器的輸出電壓驅(qū)動 VCO,引起其振蕩頻率線性增大或減小,如同均勻變化電壓的功能。當(dāng)Fvco與Fref 頻率和相位都在限期內(nèi)相匹配時,PFD 停止發(fā)送控制信號給電荷泵,并轉(zhuǎn)變?yōu)榉€(wěn)定輸入電壓給環(huán)路濾波器。VCO頻率保持恒定,PLL 則保持固定為系統(tǒng)時鐘。
PLL和時鐘產(chǎn)生器的通常條件 (參見文檔)
如何控制鎖相環(huán)PLL的輸出頻率呢?MPLLCON(FCLK和Fin的比例關(guān)系)和CLKDIVN寄存器(FCLK、HCLK和PCLK之間的比例關(guān)系):FCLK=(2*m*Fin)/(p*2^s)
m=MDIV+8,p=PDIV+2,s=SDIV。(MPLLCON寄存器中)。注意:在系統(tǒng)初始化階段應(yīng)該先初始化UPLL(USB時鐘),然后等待大約7個nop指令之后,再初始化MPLL.這也就是啟動代碼時,需要注意的。同時最好按照官方給出的系統(tǒng)時鐘配置參考。
例子:已知系統(tǒng)外部晶振輸入為12MHz,要求FCLK輸出為200MHz,經(jīng)過計算可以得到MDIV=92,PDIV=4,SDIV=1。
M_MDIV EQU 92 //Fin=12.0MHz,F(xiàn)out=200MHz
M_PDIV EQU 4
M_SDIV EQU 1
ldr r0 ,=MPLLCON
ldr r1 ,=((M_MDIV<<12)+(M_PDIV<<4)+M_SDIV)
str r1,[r0]
下面配置CLKDIVN寄存器,實(shí)現(xiàn)FCLK、HCLK、PCLK之間的分頻比。其中HDIVN用于控制FCLK和PCLK的比例關(guān)系;PDIVN主要用于控制HCLK和PCLK的比例關(guān)系。
定時器原理與應(yīng)用
S3C2440有5個16位定時器,定時器0、1、2、3被稱為PWM定時器。定時器 4 是一個無輸出引腳的內(nèi)部定時器。定時器 0 還包含用于大電流驅(qū)動的死區(qū)發(fā)生器。(時鐘源是PCLK)
定時器原理相同,寄存器TCMPBn和TCNTBn用于緩存定時器n的比較值和初始化值;TCON用于控制定時親的開啟與關(guān)閉;可以通過讀取寄存器TCNTOn得到定時器的當(dāng)前計數(shù)值。
TCMPBn的值是用于脈寬調(diào)制(PWM)。當(dāng)遞減計數(shù)器的值與定時器控制邏輯中的比較寄存器的值相匹配時定時器控制邏輯改變輸出電平。因此,比較寄存器決定 PWM 輸出的開啟時間(或關(guān)閉時間)。
定時器工作原理概述:
首先、將定時器的比較值和初始值裝入寄存器TCMPBn和TCNTBn中。
然后、設(shè)置定時器控制器TCON啟動定時器。此時、TCMPBn和TCNTBn中的值會加載到寄存器TCMPn和TCNRn中。
此時、定時器會減1計數(shù),即TCNTn進(jìn)行減1計數(shù),當(dāng)TCMPn=TCNTn時,TOUTn引腳輸出取反。TCNTn繼續(xù)減1計數(shù)。
當(dāng)TCNTn的值到達(dá)0時,其輸出管腳TOUTn再次發(fā)轉(zhuǎn),并觸發(fā)定時器n的中斷。(如果中斷使能的話)
當(dāng)TCNTn的值到達(dá)0時,如果在TCON寄存器中將定時器n設(shè)置為“自動取反”,則自動加載初值,下一輪計數(shù)流程開始。
可以通過讀取TCNTOn讀取觀察定時器當(dāng)前的值。PCLK經(jīng)過兩級分頻器,輸出頻率作為定時器的工作頻率。
定時器配置寄存器TCFG0用于控制第1級分頻器的分頻系數(shù),分頻器輸出頻率為:
PCLK/(prescaler value+1),其中prescaler value=0~255.
定時器配置寄存器TCFG1用于控制多路開關(guān)。
定時器的輸入時鐘=PCLK/(prescaler value+1)/(divider value)
prescaler value=0~255;divider value=2、4、8、16
例子:設(shè)置適當(dāng)?shù)姆诸l系數(shù),使定時器0的輸入時鐘為62.5kHz
假如PCLK為50MHz,則50MHz/62.5kHz=800,可以是第一級分頻系數(shù)為100,第2級的分頻系數(shù)為8即可滿足要求。
rTCFG0 &= ~(0xFF);
rTCFG0 |=99;
rTCFG1 &=~(0xf);
rTCFG1 |=0x02;
總體思路是先將這幾位清零,然后將數(shù)據(jù)寫入這幾位。
WATCHDOG定時器可以像16位定時器一樣用于產(chǎn)生周期性的中斷,也可以用于發(fā)出復(fù)位信號以重啟失常的系統(tǒng)。


關(guān)鍵詞: 系統(tǒng)時鐘定時

評論


技術(shù)專區(qū)

關(guān)閉