ARM9(S3C2440)時鐘與定時器_第1頁
ARM9(S3C2440)時鐘與定時器_第2頁
ARM9(S3C2440)時鐘與定時器_第3頁
ARM9(S3C2440)時鐘與定時器_第4頁
ARM9(S3C2440)時鐘與定時器_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第第頁ARM9(S3C2440)時鐘與定時器時鐘概念

一、時鐘脈沖:一個按一定電壓幅度,一定時間間隔連續(xù)發(fā)出的脈沖信號。

二、時鐘頻率:單位時間(如一秒)內(nèi)產(chǎn)生的時鐘脈沖個數(shù)。時鐘作用

時鐘信號時時序邏輯(如一些芯片要一定的延時時間才能工作)的基礎(chǔ),它用于決定邏輯單元中的狀態(tài)何時更新。數(shù)字芯片中眾多的晶體管都工作在開關(guān)狀態(tài),他們的導(dǎo)通和關(guān)斷動作無不是按照時鐘信號的節(jié)奏進行的。

(1)時鐘產(chǎn)生晶振

優(yōu)點:性能穩(wěn)定,頻率穩(wěn)定,準確。

缺點:頻率僅由晶體決定,通常是特定晶體被制成客戶所需要的振蕩器,導(dǎo)致成本,周期較長,不利于快速上市,而且難以獲得非標準的頻率。

(2)時鐘產(chǎn)生PLL

PLL(鎖相環(huán))合成器是一種更為復(fù)雜的系統(tǒng)時鐘源。通用PLL合成器需要一個外部晶體并包含一個能夠?qū)w的特定頻率加倍或分頻的集成鎖相環(huán)(PLL)電路。S3C2440有兩個PLL:MPLL與UPLL.

(1)、UPLL專用于USB設(shè)備。

(2)、MPLL用于CPU及其他外圍器件。

通過MPLL會產(chǎn)生三個部分的時鐘頻率:FCLK,HCLK,PCLK.

FCLK用于CPU核,HCLK用于AHB(AdvancedHigh-performanceBus:常用語高速外設(shè)),PCLK用于APB(AdvancedPeripheralBus:常用語低速外設(shè))總線的設(shè)備(比如UART).

(1)、上電幾毫秒后,(按下復(fù)位鍵(可以不需要這一步,系統(tǒng)自動復(fù)位)),外部晶振輸出穩(wěn)定,F(xiàn)CLK=外部晶振頻率(12MHZ),nRESET信號恢復(fù)高電平后,

CPU開始執(zhí)行命令。

(2)、在設(shè)置MPLL幾個寄存器后,需要等待一段時間(LockTime),MPLL的輸出才穩(wěn)定。在這段時間內(nèi),F(xiàn)CLK停止震動,CPU停止工作。LockTine的長短

由寄存器LOCKTIME設(shè)定。

(3)、LockTime之后,MPLL輸出正常,CPU工作在新的FCLK(如400MHZ)下。

寄存器

S3C2440的時鐘頻率寄存器:

(1)、LOCKTIME寄存器

(2)、MPLLCON寄存器

(3)、CLKDIVN寄存器MPLLCON

該寄存器用于設(shè)置FCLK與Fin(如我們的外部晶振為12MHz,那么Fin就是12MHz)的倍數(shù)。公式如下:

MPLL(FCLK)=(2*m*Fin)/(p*2^s)

其中:m=MDIV+8,p=PDIV+2,s=SDIV

CLKDIVN

該寄存器用于設(shè)置FCLK,HCLK,PCLK三者之間的比例。

定時器

定時器部件的時鐘源為PCLK,首先通過兩個8位的預(yù)分頻器降低頻率:定時器0、1共用第一個預(yù)分頻器,定時器2、3、4共用第二個預(yù)分頻器。預(yù)分頻器的輸出將進入第二級分頻器,它們輸出5中頻率的時鐘:2分頻、4分頻、8分頻、16分頻或者外部TCLK0TCLK1,每個定時器的工作時鐘也可以從這5種頻率中選擇。

定時器驅(qū)動流程:初始化>啟動

(1)、定時器初始化

1、定時器時鐘頻率(如定時器時鐘頻率為50hz,則每秒減去50)

2、設(shè)置定時器計數(shù)器(如計數(shù)值為100,時鐘頻率為50hz,則定時器在2秒后超時)

3、設(shè)置中斷處理函數(shù)(定時器超時或產(chǎn)生中斷要處理的函數(shù))

注意:(本例使用定時器0)

定時器時鐘頻率:

設(shè)置定時器計數(shù)器

通過設(shè)置TCON寄存器可以裝載定時器計數(shù)值,并啟動定時器。(設(shè)置第四位從新加載定時器)。定時器工作流程

1、程序初始化,設(shè)置TCMPBn,TCNTBn這兩個寄存器,他們表示定時器n的比較值、初始計數(shù)值。

2、隨之設(shè)置TCON寄存器啟動定時器n,這時,CMPBn,TCNTBn的值將被裝入其內(nèi)部寄存器TCMPn、TCNTn中。在定時器n的工作頻率下,TCNTn開始減一計數(shù),其值可

以通過TCNTO0寄存器得知。

3、當TCNTn的值等于TCMPn的值時,定時器n的輸出管腳TOUTn反轉(zhuǎn);TCNTn繼續(xù)減一計數(shù)。

代碼:定時器控制LED.

主要代碼為:

#defineGLOBAL_CLK1#include#include#include"def.h"#include"option.h"#include"2440addr.h"#include"2440lib.h"#include"2440slib.h"#include"mmu.h"#include"profile.h"#include"memtest.h"

voidTimer0_init(void);staticvoid__irqIRQ_Timer0_Handle(void);voidSet_Clk(void);staticvoidcal_cpu_bus_clk(void);voidLed1_init(void);voidLed1_run(void);

/*延時函數(shù)*/voiddelay(inttimes){undefinedinti,j;for(i=0;i>12)//settheregister--rMPLLCONChangeClockDivider(key,12);//theresultofrCLKDIVN[0:1:0:1]3-0bitcal_cpu_bus_clk();//HCLK=100MPCLK=50M}

staticvoidcal_cpu_bus_clk(void){undefinedstaticU32cpu_freq;staticU32UPLL;U32val;U8m,p,s;val=rMPLLCON;m=(val>>12)p=(val>>4)s=val

//(m+8)*FIN*2不要超出32位數(shù)!FCLK=((m+8)*(FIN/100)*2)/((p+2)*(1>1)p=valval=rCAMDIVN;s=val>>8;switch(m){undefinedcase0:HCLK=FCLK;break;case1:HCLK=FCLK>>1;break;case2:if(selseHCLK=FCLK>>2;break;case3:if(selseHCLK=FCLK/3;break;}if(p)PCLK

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論