新聞中心

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

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

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

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

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

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

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

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

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

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



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

TCMP0與TCNT0不能直接對(duì)其操作。

上一頁(yè) 1 2 下一頁(yè)

評(píng)論


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

關(guān)閉