新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM9基礎(chǔ)教程lessen2—定時器

ARM9基礎(chǔ)教程lessen2—定時器

作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
上篇I/O控制文章中,程序需要延時時,我們是利用循環(huán)語句來實現(xiàn)。這種方法的延時簡單,但不是很精確。當需要精確延時時,就不能采用這種方法了。一般是利用定時器來實現(xiàn)。在這里,我們就介紹一下s3c2440定時器。

? S3C2440的時鐘源
在講解之前,先介紹一下s3c2440時鐘系統(tǒng)。一般來說,MCU的主時鐘源主要是外部晶振或外部時鐘,而用的最多的是外部晶振。在正確情況下,系統(tǒng)內(nèi)所使用的時鐘都是外部時鐘源經(jīng)過一定的處理得到的。由于外部時鐘源的頻率一般不能滿足系統(tǒng)所需要的高頻條件,所以往往需要PLL(鎖相環(huán))進行倍頻處理。在s3c2440中,有2個不同的PLL,一個是MPLL,另一個是UPLL。
UPLL是給USB提供48MHz。在這里,我們主要介紹MPLL。外部時鐘源經(jīng)過MPLL處理后能夠得到三個不同的系統(tǒng)時鐘:FCLK、HCLK和PCLK。
♥ FCLK是主頻時鐘,用于ARM920T內(nèi)核;
♥ HCLK用于AHB總線設(shè)備,如ARM920T,內(nèi)存控制,中斷控制,LCD控制,DMA以及USB主模塊;
♥ PCLK用于APB總線設(shè)備,如外圍設(shè)備的看門狗,IIS,I2C,PWM,MMC接口,ADC,UART,GPIO,RTC以及SPI。
這三個系統(tǒng)時鐘(FCLK、HCLK和PCLK)是有一定的比例關(guān)系,這種關(guān)系是通過寄存器CLKDIVN中的HDIVN位和PDIVN位來控制的,因此我們只要知道了FCLK,再通過這兩位的控制,就能確定HCLK和PCLK。
而FCLK是如何得到的呢?它是通過輸入時鐘(即外部時鐘源)的頻率,經(jīng)過一個計算公式(具體公式請查閱數(shù)據(jù)手冊)得到的,這個計算公式還需要三個參數(shù)(MDIV、PDIV、SDIV),而這三個參數(shù)是經(jīng)過寄存器MPLLCON配置得到的。
最后,我們用最清晰的線路來繪制一下時鐘的產(chǎn)生過程:
外部時鐘源→通過寄存器MPLLCON得到FCLK→再通過寄存器CLKDIVN得到HCLK和PCLK。
這個配置過程在啟動文件中就已完成。例如,外部晶振為12MHz,進過MPLL倍頻以后得到400MHz的FCLK,而FCLK、HCLK、PCLK之間的比例關(guān)系為1:4:8,因此HCLK為100MHz,PCLK為50MHz。

? S3C2440的定時器特性
S3C2440有5個16位的定時器,定時器0~3有脈寬調(diào)制功能(PWM)。定時器4沒有輸出引腳的內(nèi)部定時器。定時器0有一個用于大電流設(shè)備的死區(qū)生成器。S3C2440定時器0和1共享一個8位的預(yù)分頻器,定時器2、3、4共享另一個8位預(yù)分頻器。每個定時器有一個時鐘分頻器,其中以生成5種不同的分頻信號。
每個定時器有一個自己的由定時器時鐘驅(qū)動16位遞減計數(shù)器,當遞減計數(shù)器為零時,定時器中斷請求生成通知CPU定時器操作完成。
S3C2440定時器特性如下:
◎ 5個16位定時器
◎ 兩個8位預(yù)分頻器和2個4位分頻器
◎ 輸出波形的可編程任務(wù)控制
◎ 自動重載模式或單脈沖模式
◎ 死區(qū)生成器

? S3C2440的定時器寄存器
S3C2440定時器:
● 定時器配置寄存器(TCFGn);
● 定時器控制寄存器(TCON);
● 定時器n計數(shù)緩存寄存器(TCNTBn),定時器n比較緩存寄存器(TCMPBn);
● 定時器計數(shù)觀察計數(shù)器。
定時器寄存器具體說明請查閱S3C2440芯片手冊。

♥ 定時器配置寄存器(TCFGn)
定時器配置寄存器用于配置兩個8位預(yù)分頻器值,該寄存器復(fù)位值為0,定時器輸出時鐘頻率計算如下:
定時器輸出時鐘頻率 = PCLK / (預(yù)分頻器值+1) / 分頻值

● TCFG0配置寄存器:[0-7]配置定時器0,1的預(yù)分頻值;[8-15]配置定時器2,3,4的預(yù)分頻值。
● TCFG1配置寄存器:[0-3]配置定時器0分頻值;[4-7]配置定時器1分頻值;[8-11]配置定時器2分頻值;[12-15]配置定時器3分頻值;[16-149]配置定時器4分頻值;

♥定時器控制寄存器(TCON)
TCON寄存器用于控制定時器0~4,寄存器復(fù)位值為0。

本文引用地址:http://butianyuan.cn/article/201611/321047.htm
TCON寄存器描述
0~3控制定時器0:使能[0]、手動更新[1]、匹配輸出[2]、自動重載[3]
4死區(qū)使能
8~11控制定時器1:使能[8]、手動更新[9]、匹配輸出[10]、自動重載[11]
12~15控制定時器2:使能[12]、手動更新[13]、匹配輸出[14]、自動重載[15]
1516~19控制定時器3:使能[16]、手動更新[17]、匹配輸出[18]、自動重載19]
20~22控制定時器4:使能[20]、手動更新[21]、自動重載[23]



♥ 定時器n計數(shù)緩存寄存器(TCNTBn),定時器n比較緩存寄存器(TCMPBn)
定時器計數(shù)與比較緩存寄存器用于緩存用戶所給的定時值,當配置TCON寄存器定時器n使能“手動更新”時,該值將在下一個定時啟動時裝載到TCMPn與TCNTn中,重新進行定時。例如,定時器0內(nèi)部結(jié)構(gòu)如圖所示:

TCMP0與TCNT0不能直接對其操作。

上一頁 1 2 下一頁

關(guān)鍵詞: ARM9基礎(chǔ)教程l定時

評論


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

關(guān)閉