基于s3c2410的系統(tǒng)設(shè)計(jì)_第1頁(yè)
基于s3c2410的系統(tǒng)設(shè)計(jì)_第2頁(yè)
基于s3c2410的系統(tǒng)設(shè)計(jì)_第3頁(yè)
基于s3c2410的系統(tǒng)設(shè)計(jì)_第4頁(yè)
基于s3c2410的系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩68頁(yè)未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡(jiǎn)介

第4章

嵌入式系統(tǒng)設(shè)計(jì)1概述嵌入式系統(tǒng)的硬件設(shè)計(jì)時(shí)鐘與電源管理實(shí)時(shí)時(shí)鐘定時(shí)器嵌入式系統(tǒng)接口設(shè)計(jì)中斷控制器I/O端口UART接口24.1概述3嵌入式系統(tǒng)設(shè)計(jì)的重要特點(diǎn)是技術(shù)多樣化,即實(shí)現(xiàn)同一個(gè)嵌入式系統(tǒng)可以有許多不同的設(shè)計(jì)方案選擇,而不同的設(shè)計(jì)方案就意味使用不同的設(shè)計(jì)和生產(chǎn)技術(shù)。嵌入式系統(tǒng)設(shè)計(jì)一般步驟1)需求分析3)硬件/軟件設(shè)計(jì)2)體系結(jié)構(gòu)設(shè)計(jì)4)系統(tǒng)集成和系統(tǒng)測(cè)試注意:各個(gè)階段之間往往要求不斷的反復(fù)和修改,直至完成最終設(shè)計(jì)目標(biāo)。4嵌入式系統(tǒng)設(shè)計(jì)過(guò)程1)需求分析階段包括6①

分析用戶(hù)的需求②

確定硬件軟件③

檢查需求分析的結(jié)果④

確定項(xiàng)目的約束條件⑤

概要設(shè)計(jì)需求分析-羅列用戶(hù)的需求7系統(tǒng)用于什么任務(wù)?系統(tǒng)接收什么輸入和輸出什么信號(hào)?用戶(hù)需要如何同系統(tǒng)打交道?系統(tǒng)的重量和體積如何?系統(tǒng)需要連接何種外設(shè)?系統(tǒng)是否需要運(yùn)行某些現(xiàn)存的軟件?系統(tǒng)處理哪種類(lèi)型的數(shù)據(jù)?系統(tǒng)是否要與別的系統(tǒng)通訊?系統(tǒng)是單機(jī)還是網(wǎng)絡(luò)系統(tǒng)?需求分析-羅列用戶(hù)的需求8系統(tǒng)的響應(yīng)時(shí)間是多少?需要什么安全措施?在什么樣的環(huán)境下運(yùn)行?外部存儲(chǔ)媒介和內(nèi)存需要多大?系統(tǒng)可拆裝性,可靠性,牢固性的期望值是什么

(14)如何給系統(tǒng)供電?系統(tǒng)如何向用戶(hù)通報(bào)故障?是否需要任何手動(dòng)或機(jī)械代用裝置?系統(tǒng)是否將具有遠(yuǎn)程診斷或更正問(wèn)題的功能?其他問(wèn)題2)體系結(jié)構(gòu)設(shè)計(jì)9設(shè)計(jì)目的—描述系統(tǒng)的功能如何實(shí)現(xiàn)。決定因素—①系統(tǒng)是硬實(shí)時(shí)系統(tǒng)還是軟實(shí)時(shí)系統(tǒng);②操作系統(tǒng)是否需要嵌入;③物理系統(tǒng)的成本、尺寸和耗電量是否是產(chǎn)品成功的關(guān)鍵因素;④選擇處理器和相關(guān)硬件;⑤其他。3)硬件/軟件設(shè)計(jì)10設(shè)計(jì)目的決定哪些用硬件實(shí)現(xiàn),哪些用軟件實(shí)現(xiàn)。例如:浮點(diǎn)運(yùn)算;網(wǎng)絡(luò)通信控制器實(shí)現(xiàn)的功能;軟調(diào)制

解調(diào)器/硬調(diào)制解調(diào)器;軟件壓縮解壓/硬件壓縮解壓圖像。硬件設(shè)計(jì)①設(shè)計(jì)硬件子系統(tǒng)(top-down方法)

分成模塊;設(shè)計(jì)框圖。例如:CPU子系統(tǒng)、存儲(chǔ)器子系統(tǒng)等

。②定義硬件接口I/O端口;硬件寄存器;共享內(nèi)存;硬件中斷;存儲(chǔ)器空間分配;處理器的運(yùn)行速度。3)硬件/軟件設(shè)計(jì)11(3)軟件設(shè)計(jì)設(shè)計(jì)軟件子系統(tǒng):軟件總體設(shè)計(jì)、模塊設(shè)計(jì)。定義軟件接口:模塊接口、函數(shù)接口。(4)檢查設(shè)計(jì)小項(xiàng)目:自己審查設(shè)計(jì)文檔中等項(xiàng)目:拿給同事朋友并向他們解釋你的設(shè)計(jì)

大型項(xiàng)目-審查會(huì):設(shè)計(jì)者應(yīng)作一個(gè)更正式的報(bào)告由于這是一個(gè)設(shè)計(jì)審查會(huì),召集一群人,主要由工程師組成,并盡可能包括一些對(duì)項(xiàng)目有不同看法角度的成員,如做市場(chǎng)的人員、最終用戶(hù)。4)系統(tǒng)集成與測(cè)試12系統(tǒng)集成把系統(tǒng)的軟件、硬件和執(zhí)行裝置集成在一起,進(jìn)行調(diào)試,發(fā)現(xiàn)并改進(jìn)設(shè)計(jì)過(guò)程中的錯(cuò)誤。系統(tǒng)測(cè)試對(duì)設(shè)計(jì)好的系統(tǒng)進(jìn)行測(cè)試,看其是否滿(mǎn)足給定的要求。4.2

嵌入式系統(tǒng)的硬件設(shè)計(jì)13在現(xiàn)階段,嵌入式系統(tǒng)設(shè)計(jì)仍處于一種手工階段。微處理器系統(tǒng)的硬件一般包括有微處理器、存儲(chǔ)器、時(shí)鐘和電源管理、復(fù)位電路等幾部分。4.2.1時(shí)鐘和電源管理14時(shí)鐘電源管理主要包括:Clock控制、

POWER控制.時(shí)鐘控制邏輯單元產(chǎn)生所需要的時(shí)鐘信號(hào),包括CPU使用的主頻FCLK(系統(tǒng)時(shí)鐘),AHB總線(xiàn)設(shè)備使用的HCLK,以及APB總線(xiàn)設(shè)

備使用的PCLK.電源控制邏輯單元,通過(guò)控制時(shí)鐘信號(hào)提供不同的電源管理方案,以?xún)?yōu)化電源消耗。一、時(shí)鐘控制15主時(shí)鐘源由OM[3:2]控制,可以接外部晶振

(XTIPLL)或者是外部時(shí)鐘(EXTCLK)。時(shí)鐘

生成器包含了一個(gè)振蕩器(振蕩放大器),其連接外部晶振,并且還有2個(gè)PLL,可以產(chǎn)生所需的高頻時(shí)鐘。一、時(shí)鐘控制時(shí)鐘源選擇與OM[3:2]引腳組合關(guān)系16一、時(shí)鐘控制17注意:雖然MPLL在reset以后就開(kāi)始工作,但是MPLL輸出(Mpll

)沒(méi)有作為系統(tǒng)時(shí)鐘來(lái)使用,直到軟件對(duì)MPLLCON寄存器寫(xiě)入

有效設(shè)置。有效設(shè)置前,來(lái)自外部晶振或外部時(shí)鐘源的時(shí)鐘將直接被當(dāng)作系統(tǒng)時(shí)鐘來(lái)使用。就算是用戶(hù)不想改變MPLLCON寄存器的默認(rèn)值,用戶(hù)應(yīng)該再重新寫(xiě)入MPLLCON

寄存器一次相同的值。4.2.1微處理器芯片選型的一般原則18鎖鎖相相環(huán)環(huán)(PLL:Phase-locked

loops)是一種利用反饋(Feedback)控制原理實(shí)現(xiàn)的頻率及相位的同步技術(shù),其作用是將電路輸出的時(shí)鐘與其外部的參考時(shí)鐘保持同步。當(dāng)參考時(shí)鐘的頻率或相位發(fā)生改變時(shí),鎖相環(huán)會(huì)檢測(cè)到這種變化,并且通過(guò)其內(nèi)部的反饋系統(tǒng)來(lái)調(diào)節(jié)輸出頻率,直到兩者重新同步,這種同步又稱(chēng)為“鎖相”(Phase-locked)二、鎖相環(huán)19位于時(shí)鐘發(fā)生器中的MPLL,通過(guò)內(nèi)

部的多個(gè)分頻器,得到在相位上同步于外部輸入信號(hào)的輸出信號(hào)。主要包括:3個(gè)分頻器(分頻器P、M、S),鑒相器,電荷泵,電壓控制振蕩器,環(huán)路濾波器。二、鎖相環(huán)20輸出時(shí)鐘頻率Mpll相對(duì)于參考輸入時(shí)鐘頻率

Fin如以下公式所示:Mpll=

(2

*

m

*

Fin)

/

(p

*s

2

)m=M(分頻器M的值)+8,p=P(分頻器P的值)+2二、鎖相環(huán)21三、時(shí)鐘控制邏輯22時(shí)鐘控制邏輯決定哪個(gè)時(shí)鐘源被使用,mpll還是直接使用外部時(shí)鐘(XTIpll

orEXTCLK)。當(dāng)PLL配置新頻率值時(shí),時(shí)鐘控制邏輯使

Fclk無(wú)效直到PLL輸出使用PLL鎖定時(shí)間達(dá)到穩(wěn)定。時(shí)鐘控制邏輯單元在上電reset和

power-down模式被喚醒時(shí)被激活。三、時(shí)鐘控制邏輯時(shí)鐘控制邏輯決定哪個(gè)時(shí)鐘源被使用,mpll還是直接使用外部時(shí)鐘(XTIpll

orEXTCLK)。當(dāng)PLL配置新頻率值時(shí),時(shí)鐘控制邏輯使

Fclk無(wú)效直到PLL輸出使s

用PLL鎖定時(shí)間達(dá)到穩(wěn)定。時(shí)鐘控制邏輯單元在上電reset和

power-down模式被喚醒時(shí)被激活。23四、FCLK/HCLK/PCLK24FCLK用于ARM920THCLK用于AHB總線(xiàn),例如用于ARM920T,內(nèi)存控制,中斷控制,LCD控制,DMA以及USB主模塊。PCLK用于APB總線(xiàn),用于外圍設(shè)備如看門(mén)狗,IIS,I2C,PWM,MMC接口,ADC,UART,GPIO,RTC以及SPI。四、FCLK/HCLK/PCLK2410支持FCLK,HCLK,PCLK分頻比的選擇。比例由CLKDIVN控制寄存器中的

HDIVN,PDIVN位確定。25HDIVN=CLKDIVN[2:1]PDIVN=CLKDIVN[0]四、FCLK/HCLK/PCLK設(shè)置值在1.5HCLK后有效,1個(gè)HCLK可以

CLKDIVN寄存器的值從默認(rèn)(1:1:1)到其他分頻比(1:1:2,1:2:2,1:24

)改變有效。26void

Target_Init(void){MMU_Init();ChangeClockDivider(1,1);27//

1:2:4ChangeMPllValue(0xa1,0x3,0x1);//

FCLK=202.8MHzPort_Init();Isr_Init();Uart_Init(0,115200);Uart_Select(0);}void

ChangeClockDivider(int

hdivn,int

pdivn){//

hdivn,pdivn

FCLK:HCLK:PCLK28//0,01:1:1//0,11:1:2//1,01:2:2//1,11:2:4rCLKDIVN

=

(hdivn<<1)

|

pdivn;if(hdivn)MMU_SetAsyncBusMode();elseMMU_SetFastBusMode();}void

ChangeMPllValue(int

mdiv,int

pdiv,int

sdiv){rMPLLCON

=

(mdiv<<12)

|

(pdiv<<4)

|

sdiv;}//MPLLCON寄存器:用于設(shè)置FCLK與Fin的倍數(shù)//位[19:12]的值稱(chēng)為MDIV,位[9:4]的值稱(chēng)為PDIV,位//[1:0]的值稱(chēng)為SDIV//MPLL(FCLK)=(m*Fin)/(p*2^s)//其中:m=MDIV+8,p=PDIV+2,s=SDIV29五、電源管理302410的電源管理模塊通過(guò)軟件控制系統(tǒng)時(shí)鐘來(lái)降低各個(gè)模塊的電源消耗。這些方案與

PLL,時(shí)鐘控制邏輯(FCLK,HCLK,PCLK),以及喚醒信號(hào)相關(guān)。2410有4種電源模式,各個(gè)模式并不能自由轉(zhuǎn)換,有條件。五、電源管理2410的電源管理模塊通過(guò)軟件控制系統(tǒng)時(shí)鐘來(lái)降低各個(gè)模塊的電源消耗。這些方案與

PLL,時(shí)鐘控制邏輯(FCLK,HCLK,PCLK),以及喚醒信號(hào)相關(guān)。2410有4種電源模式,下面描述每個(gè)電源管理模式,各個(gè)模式并不能自由轉(zhuǎn)換,有條件31五、電源管理2410的電源管理模塊通過(guò)軟件控制系統(tǒng)時(shí)鐘來(lái)降低各個(gè)模塊的電源消耗。這些方案與

PLL,時(shí)鐘控制邏輯(FCLK,HCLK,PCLK),以及喚醒信號(hào)相關(guān)。2410有4種電源模式,下面描述每個(gè)電源管理模式,各個(gè)模式并不能自由轉(zhuǎn)換,有條件32五、電源管理4種電源模式33六、相關(guān)寄存器34鎖定時(shí)間計(jì)數(shù)寄存器(LOCKTIME)鎖相環(huán)控制寄存器(MPLLCON&UPLLCON)時(shí)鐘控制寄存器(CLKCON)時(shí)鐘減慢控制寄存器(CLKSLOW)時(shí)鐘分頻控制寄存器(CLKDIVN)4.2.2實(shí)時(shí)時(shí)鐘35大多數(shù)嵌入式系統(tǒng)有兩種時(shí)鐘源:實(shí)時(shí)時(shí)鐘(real

time

clock,RTC);定時(shí)器/計(jì)數(shù)器。實(shí)時(shí)時(shí)鐘:一般靠電池供電,即使系統(tǒng)斷電,也可以維持日期和時(shí)間。實(shí)時(shí)時(shí)鐘獨(dú)立于操作系統(tǒng),所以也被稱(chēng)為硬件時(shí)鐘,為整個(gè)系統(tǒng)提供一個(gè)計(jì)時(shí)標(biāo)準(zhǔn)。定時(shí)器/計(jì)數(shù)器:實(shí)時(shí)內(nèi)核需要一個(gè)定時(shí)器作為系統(tǒng)時(shí)鐘(或稱(chēng)OS時(shí)鐘),并由實(shí)時(shí)內(nèi)核控制系統(tǒng)時(shí)鐘工作。一般情況下,系統(tǒng)時(shí)鐘的最小粒度是由應(yīng)用和操作系統(tǒng)的特點(diǎn)決定的。37(1)S3C2410

RTC的振蕩電路S3C2410

RTC的只需外接2個(gè)20P左右的小電容、

32.768KHz的晶振即可。如下圖所示。(2)RTC專(zhuān)用寄存器S3C2410的RTC有17個(gè)專(zhuān)用寄存器,均需用字節(jié)讀寫(xiě)。下表為前10個(gè),有4個(gè)為控制寄存器,6個(gè)為報(bào)警寄存器。RegisterAddressR/WDescriptionReset

ValueRTCCON0x57000040/3R/WRTC控制寄存器0x0TICNT0x57000044/7R/WRTC節(jié)拍計(jì)數(shù)器0x00RTCALM0x57000050/3R/WRTC報(bào)警控制寄存器0x00RTCRST0x5700006C/FR/WRTC循環(huán)復(fù)位寄存器0x0ALMSEC0x57000054/7R/W報(bào)警秒數(shù)寄存器0x00ALMMIN0x57000058/BR/W報(bào)警分鐘數(shù)寄存器0x00ALMHOUR0x5700005C/FR/W報(bào)警小時(shí)數(shù)寄存器0x00ALMDAY0x57000060/3R/W報(bào)警天(日)數(shù)寄存器0x01ALMMON0x57000064/7R/W報(bào)警月數(shù)寄存器0x01ALMYEAR0x57000068/BR/W報(bào)警年數(shù)寄存器0x00(2)RTC專(zhuān)用寄存器S3C2410的RTC有17個(gè)專(zhuān)用寄存器,均需用字節(jié)讀寫(xiě)。下表為4個(gè)控制寄存器。RegisterAddressR/WDescriptionResetValueRTCCON0x57000040/3R/WRTC控制寄存器0x0TICNT0x57000044/7R/WRTC節(jié)拍計(jì)數(shù)器0x00RTCALM0x57000050/3R/WRTC報(bào)警控制寄存器0x00RTCRST0x5700006C/FR/WRTC秒循環(huán)復(fù)位寄存器0x0本表6個(gè)寄存器:為報(bào)警日期、時(shí)間寄存器RegisterAddressR/WDescriptionResetValueALMSEC0x57000054/7R/W報(bào)警秒數(shù)寄存器0x00ALMMIN0x57000058/BR/W報(bào)警分鐘數(shù)寄存器0x00ALMHOUR0x5700005C/FR/W報(bào)警小時(shí)數(shù)寄存器0x00ALMDAY0x57000060/3R/W報(bào)警天(日)數(shù)寄存器0x01ALMMON0x57000064/7R/W報(bào)警月數(shù)寄存器0x01ALMYEAR0x57000068/BR/W報(bào)警年數(shù)寄存器0x00后7個(gè)寄存器:為日期、時(shí)間寄存器。RegisterAddressR/WDescriptionResetValueBCDSEC0x57000070/3R/W秒當(dāng)前值寄存器0xXXBCDMIN0x57000074/7R/W分鐘當(dāng)前值寄存器0xXXBCDHOUR0x57000078/BR/W小時(shí)當(dāng)前值寄存器0xXXBCDDAY0x5700007C/FR/W日當(dāng)前值寄存器0xXXBCDDATE0x57000080/3R/W星期當(dāng)前值寄存器0xXXBCDMON0x57000084/7R/W月當(dāng)前值寄存器0xXXBCDYEAR0x57000088/BR/W年當(dāng)前值寄存器0xXX4.2.3定時(shí)器435個(gè)16位定時(shí)器;2個(gè)8位預(yù)分頻器和2個(gè)4位分頻器;可編程PWM輸出占空比;具有初值自動(dòng)重裝連續(xù)輸出模式和單脈沖輸出模式;具有死區(qū)生成器。在這段時(shí)間間隔內(nèi),禁止兩個(gè)開(kāi)關(guān)同時(shí)處于開(kāi)啟狀態(tài)。4.2.3定時(shí)器44S3C2410有5個(gè)16位的定時(shí)器,定時(shí)器0-3具有PWM(脈寬調(diào)制)功能。定時(shí)器4是一個(gè)內(nèi)部定時(shí)器,沒(méi)有輸出引腳,供內(nèi)部使用。定時(shí)器0有死區(qū)產(chǎn)

生器,通常用于大電流設(shè)備控制。有2個(gè)8位預(yù)分頻器和2個(gè)4位分頻器。定時(shí)器0

和定時(shí)器1

分享同一個(gè)8

位的預(yù)分頻器和分頻器,定時(shí)器2、3、4

分享另一個(gè)預(yù)分頻器和分頻器,分頻器有1/2、1/4、1/8、1/16這4種分頻值。定時(shí)器從分頻器接收自己的時(shí)鐘信號(hào),時(shí)鐘分頻器從相應(yīng)的預(yù)分頻器接收時(shí)鐘信號(hào)。1)PWM(脈寬調(diào)制)概念PWM(脈寬調(diào)制):就是只對(duì)一方波序列信號(hào)的占空比按照要求進(jìn)行調(diào)制,而不改變方波信號(hào)的其它參數(shù),即不改變幅度和周期,因此脈寬調(diào)制信號(hào)的產(chǎn)生和傳輸,都是數(shù)字式的。用脈寬調(diào)制技術(shù)可以實(shí)現(xiàn)模擬信號(hào):如果調(diào)制信

號(hào)的頻率遠(yuǎn)遠(yuǎn)大于信號(hào)接受者的分辨率,則接收者獲得的是信號(hào)的平均效果,不能感知數(shù)字信號(hào)的0和1,其信號(hào)大小的平均值與信號(hào)的占空比有關(guān),信號(hào)的占空比越大,平均信號(hào)越強(qiáng),其平均值與占空比成正比。只要帶寬足夠(頻率足夠高或周期足夠短),任何模擬信號(hào)都可以使用PWM

來(lái)實(shí)現(xiàn)。PWM技術(shù)的應(yīng)用:借助于微處理器,使用脈寬調(diào)制方法實(shí)現(xiàn)模擬信號(hào)是一種非常有效的技術(shù),廣泛應(yīng)用在從測(cè)量、通信到功率控制與變換的許多領(lǐng)域中。2)結(jié)構(gòu)與工作原理(1)定時(shí)器結(jié)構(gòu)時(shí)鐘控制:系統(tǒng)為每個(gè)定時(shí)器設(shè)置有:預(yù)分頻器、分頻器。定時(shí)器組成(5部分):減法計(jì)數(shù)器、初值寄存器、比較寄存器、觀察寄存器、控制邏輯等部分構(gòu)成。47定時(shí)器結(jié)構(gòu)圖預(yù)分頻器8位分頻器1/21/41/81/16TCLK0/1計(jì)數(shù)器觀察寄存器PCLK五選一開(kāi)關(guān)初值寄存器控制邏輯TOUT比較寄存器中斷(2)工作原理①定時(shí)器工作過(guò)程裝入初值、啟動(dòng)計(jì)數(shù),計(jì)數(shù)結(jié)束產(chǎn)生中斷請(qǐng)求,并且可以重裝初值連續(xù)計(jì)數(shù)。如下圖所示。TCNTBn=3TCMPn=1Manual

update=1Auto-reload=1TCNTBn=2TCMPn=0Manual

update=0Auto-reload=0②初值自動(dòng)重裝、手動(dòng)裝載和雙緩沖初值自動(dòng)重裝功能:

5個(gè)定時(shí)器都具有此功能。當(dāng)計(jì)數(shù)器中值減到0后,若設(shè)置了自動(dòng)重裝功能,則在下一計(jì)數(shù)周期開(kāi)始前將初值裝入計(jì)數(shù)器重新計(jì)數(shù)。初值手動(dòng)裝載功能:在啟動(dòng)計(jì)數(shù)前,必須使用手動(dòng)裝載功能將初值裝入計(jì)數(shù)器,而初值自動(dòng)重裝僅是一次計(jì)數(shù)結(jié)束后重新裝入初值。雙緩沖功能:如果定時(shí)器正在工作,此時(shí)寫(xiě)入新的數(shù)據(jù)到TCNTBn、或者到TCMPBn,該寫(xiě)入的數(shù)據(jù)不影響本次定時(shí)器的操作。當(dāng)定時(shí)器到達(dá)0后下一次運(yùn)行定時(shí)器時(shí),新寫(xiě)入的

TCNTBn、或者TCMPBn才生效。③PWM輸出寄存器TCMPB的作用:當(dāng)計(jì)數(shù)器TCNT中的值減到與TCMPB的值相同時(shí),TOUT的輸出值取反。改變TCMPB的值,便改變了輸出方波的占空比。TOUT的輸出可以設(shè)置為反相輸出,如下圖所示。④死區(qū)產(chǎn)生器死區(qū)的概念:是一小段時(shí)間間隔,在這個(gè)時(shí)間間隔內(nèi),禁止兩個(gè)開(kāi)關(guān)同時(shí)處于開(kāi)啟狀態(tài)。死區(qū)是在功率設(shè)備控制中常采用的一種技術(shù),防止兩個(gè)開(kāi)關(guān)同時(shí)打開(kāi)起反作用。S3C2410的timer0具有死區(qū)發(fā)生器功能,可用于控制大功率設(shè)備。死區(qū)發(fā)生器開(kāi)啟前后輸出波形對(duì)比DMA請(qǐng)求模式S3C2410中定時(shí)器的DMA功能:系統(tǒng)中的5個(gè)定時(shí)器都有DMA請(qǐng)求功能,但是在同一時(shí)刻只能設(shè)置一個(gè)使用DMA功能,通過(guò)設(shè)置其DMA模式位來(lái)實(shí)現(xiàn)。DMA請(qǐng)求過(guò)程:定時(shí)器可以在任意時(shí)間產(chǎn)生DMA請(qǐng)求,并且保持DMA請(qǐng)求信號(hào)(nDMA_REQ)為低直到定時(shí)器收到ACK信號(hào)。當(dāng)定時(shí)器收到ACK信號(hào)時(shí),它使請(qǐng)求信號(hào)變得無(wú)效。DMA請(qǐng)求與中斷的關(guān)系:如果一個(gè)定時(shí)器被配置為

DMA模式,該定時(shí)器不會(huì)產(chǎn)生中斷請(qǐng)求了。其他的定時(shí)器會(huì)正常的產(chǎn)生中斷。3)計(jì)數(shù)時(shí)鐘和輸出計(jì)算定時(shí)器輸入時(shí)鐘頻率f

Tclk

(即計(jì)數(shù)時(shí)鐘頻率)

:f

Tclk=[f

pclk∕(Prescaler+1)]

×分頻值式中:Prescaler,預(yù)分頻值,0---255;分頻值為1/2、1/4、1/8、1/16。PWM輸出時(shí)鐘頻率

:PWM輸出時(shí)鐘頻率=

f

Tclk

TCNTBnPWM輸出信號(hào)占空比(即高電平持續(xù)時(shí)間所占信號(hào)周期的比例):PWM輸出信號(hào)占空比

=

TCMPBn∕

TCNTBn定時(shí)器最大、最小輸出周期設(shè)PCLK的頻率為50MHz,經(jīng)過(guò)預(yù)分頻和分頻器后,送給定時(shí)器的可能計(jì)數(shù)時(shí)鐘頻率由表4-7-1給出。表4-7-1

定時(shí)器最大、最小輸出周期分頻值最小輸出周期預(yù)分頻器=0TCNTBn=1最大輸出周期預(yù)分頻器=255TCNTBn=65535最小輸出周期預(yù)分頻器=0

TCNTBn=65535最小輸出周預(yù)分頻器=0TCNTBn=2551/225.00MHz(0.04μs)0.6710s381Hz976561/412.50MHz(0.08μs)1.3421s191Hz488281/86.250MHz(0.16μs)2.6843s95Hz244141/163.125MHz(0.32μs)5.3686s48Hz122074)定時(shí)器專(zhuān)用寄存器共有6種、17個(gè)寄存器TCNTBn---Timern計(jì)數(shù)初值寄存器(計(jì)數(shù)緩沖寄存器),16位TCMPBn---Timern比較寄存器(比較緩沖寄存器),16位TCNTOn---Timern計(jì)數(shù)讀出寄存器,16位RegisterAddressR/WDescriptionResetValueTCFG00x51000000R/W配置寄存器00x00000000TCFG10x51000004R/W配置寄存器10x00000000TCON0x51000008R/W控制寄存器0x00000000TCNTBn0x510000xxR/W計(jì)數(shù)初值寄存器(5個(gè))0x0000TCMPBn0x510000xxR/W比較寄存器(4個(gè))0x0000TCNTOn0x510000xxR觀察寄存器(5個(gè))0x0000Dead

zone

length---死區(qū)寬度設(shè)置位其值N為:0~255,以timer0的定時(shí)時(shí)間為單位死區(qū)寬度為:(N+1)×timer0的定時(shí)時(shí)間Prescaler1---timer2、3、4的預(yù)分頻值其值N為:0~255輸出頻率為:PCLK

÷(N+1)Prescaler0---timer0、1的預(yù)分頻值其值N為:0~255輸出頻率為:PCLK

÷(N+1)(1)TCFG0---預(yù)分頻器配置寄存器31……2423……1615……87……0保留(為0)Dead

zonelengthPrescaler1Prescaler0(2)TCFG1---DMA模式與分頻選擇寄存器DMA

mode---DMA通道選擇設(shè)置位0000:不使用DMA方式,所有通道都用中斷方式0001:選擇timer00011:選擇timer20101:選擇timer40010:選擇timer10100:選擇timer3011X:保留MUX4~

MUX0---timer4~timer0分頻值選擇0000:1/20001:1/40011:1/160010:1/801XX:選擇外部TCLK0、1(對(duì)timer0、1是選

TCLK0,對(duì)timer4、3、2是選TCLK1)31

2423

2019…1615…1211…87

43

0保留(為0)DMA

modeMUX4MUX3MUX2MUX1MUX0TL4~TL0---計(jì)數(shù)初值自動(dòng)重裝控制位0:?jiǎn)未斡?jì)數(shù)1:計(jì)數(shù)器值減到0時(shí),自動(dòng)重新裝入初值連續(xù)計(jì)數(shù)。TUP4~TUP0---計(jì)數(shù)初值手動(dòng)裝載控制位。0:不操作

1:立即將TCNTBn中的計(jì)數(shù)初值裝載到計(jì)數(shù)寄存器TCNTn中。說(shuō)明:如果沒(méi)有執(zhí)行手動(dòng)裝載初值,則計(jì)數(shù)器啟動(dòng)時(shí)無(wú)初值。121110987…543210TR2TL1TO1TUP1TR1保留DZETL0TO0TUP0TR0(3)TCON---定時(shí)器控制寄存器31…2322212019181716151413保留TL4TUP4TR4TL3TO3TUP3TR3TL2TO2TUP2TR4~TR0---TIMER4~TIMER0運(yùn)行控制位0:停止

1:?jiǎn)?dòng)對(duì)應(yīng)的TIMERTO3~TO0---

TIMER4~TIMER0輸出控制位0:正相輸出

1:反相輸出DZE---TIMER0死區(qū)操作控制位0:禁止死區(qū)操作

1:使能死區(qū)操作121110987…543210TR2TL1TO1TUP1TR1保留DZETL0TO0TUP0TR0TCON---定時(shí)器控制寄存器(續(xù))31…2322212019181716151413保留TL4TUP4TR4TL3TO3TUP3TR3TL2TO2TUP24)定時(shí)器的使用(1)定時(shí)器初始化方法①寫(xiě)TCFG0,設(shè)置計(jì)數(shù)時(shí)鐘的預(yù)分頻值和Timer0死區(qū)寬度;②寫(xiě)TCFG1,選擇各個(gè)定時(shí)器的分頻值和DMA、中斷服務(wù);③對(duì)TCNTBn和TCMPBn分別寫(xiě)入計(jì)數(shù)初值和比較初值;④寫(xiě)TCON,設(shè)置計(jì)數(shù)初值自動(dòng)重裝、手動(dòng)裝載初值、設(shè)置反相輸出;⑤再寫(xiě)TCON,清除手動(dòng)裝載初值位、設(shè)置正相輸出、啟動(dòng)計(jì)數(shù)。2、定時(shí)器停止運(yùn)行方法寫(xiě)TCON,禁止計(jì)數(shù)初值自動(dòng)重裝。(一般不使用運(yùn)行控制位停止運(yùn)行)3、定時(shí)器操作例子5011040

40

20

6058按照前面初始化定時(shí)器;設(shè)置

TCNTBn=160(50+110),TCMPBn=110;手動(dòng)裝入初值后,又重設(shè)TCNTBn=80,TCMPBn=40;啟動(dòng)定時(shí)器,按第一個(gè)初值計(jì)數(shù);與第一個(gè)比較值相同,輸出取反;第一次計(jì)數(shù)結(jié)束,自動(dòng)重裝初值80、40;在第一次中斷處理程序又重設(shè)TCMPBn=60;(8)在第二次中斷處理程序禁止自動(dòng)重裝初值,準(zhǔn)備結(jié)束計(jì)數(shù);(10)第三次計(jì)數(shù)結(jié)束,不再計(jì)數(shù)。1

2

3

4

6

7

9

10TOUTn定時(shí)器應(yīng)用舉例#define

BIT_TIMER0#define

BIT_TIMER1#define

BIT_TIMER2#define

BIT_TIMER3#define

BIT_TIMER4(0x1<<10)(0x1<<11)(0x1<<12)(0x1<<13)(0x1<<14)定時(shí)器應(yīng)用舉例#int

variable0,variable1,variable2,variable3,variabvoid

irq

Timer0Done(void){//Clear

pending

bit//Clear

serve

bitrSRCPND

=

BIT_TIMER0;rINTPND

=

BIT_TIMER0;variable0++;}void

irq

Timer1Done(void)//Clear

pending

bit{

rSRCPND

=

BIT_TIMER1;rINTPND

=

BIT_TIMER1;variable1++;}#define

pISR_TIMER0

(*(unsigned*)(_ISR_STARTADDRESS+0x48))#define

pISR_TIMER1

(*(unsigned*)(_ISR_STARTADDRESS+0x4c))void

Test_TimerInt(void){variable0

=

0;variable1

=

0;variable2

=

0;variable3

=

0;variable4

=

0;rINTMSK

=

~(BIT_TIMER4

|

BIT_TIMER3

|

BIT_TIMER2

|BIT_TIMER1

|

BIT_TIMER0);//將各個(gè)中斷向量寫(xiě)入中斷向量表中pISR_TIMER0=(int)Timer0Done;pISR_TIMER1=(int)Timer1Done;pISR_TIMER2=(int)Timer2Done;pISR_TIMER3=(int)Timer3Done;pISR_TIMER4=(int)Timer4Done;Uart_Printf("\n[

Timer

0,1,2,3,4

Interrupt

Test

]\n\nrTCFG0

=

rTCFG0

&

~(0xffffff)

|

0x000f0f;//死區(qū)寬度=0//T1預(yù)分頻=0x0f,T0預(yù)分頻=0x0frTCFG1

=rTCFG1

&

~(0xffffff)

|

0x001233;//全部使用中//T4---T0分頻值為:1/2,1/4,1/8,1/16,1/16//設(shè)置T0---T4計(jì)數(shù)初值rTCNTB0

=

0xffff;

rTCNTB1

=

0xffff;

rTCNTB2

=

0xffff;

rTCNTB3

=

0xffff;

rTCNTB4

=

0xffff;//

(1/(50MHz/16/16))

*

0xffff

(65535)

=

0//

(1/(50MHz/16/16))

*

0xffff

(65535)

=

0//

(1/(50MHz/16/8

))

*

0xffff

(65535)

=

0//

(1/(50MHz/16/4

))

*

0xffff

(65535)

=

0//

(1/(50MHz/16/2

))

*

0xffff

(65535)

=

0rTCON =

rTCON

&

~(0xffffff)

|

0x6aaa0a;

//Auto

relo//Inverter

off,

Manual

update,

Dead

zone

disable,

StoprTCON =

rTCON

&

~(0xffffff)

|

0x599901;

//Auto

relo//(T0=One-shot),Inverter

off,No

operation,Dead

zonedisable,Startwhile(variable0

==

0);Delay(1);

//To

compensate

timer

error(<1

tiperiod)if(variable4==8

&&

variable3==4

&&

variable2==2

&&variable1==1

&&

variable0==1)Uart_Printf("Timer

0,1,2,3,4

Interrupt

Test

-->

OK\elseUart_Printf("Timer

0,1,2,3,4

Interrupt

Test

-->Fail.......\n");Uart_Printf("Press

any

key

to

exit

Timer

interrupttest\n");

while(!Uart_GetKey());rTCON =

0x0;Dead//One-shot,

Inverter

off,

No

operation,zone

disable,

StopUart_Printf("Timers

interrupt

number

is

as

below:\nUart_Printf("Timer0

-

%d

,Timer1

-

%d

,Timer2

-

%d

,Time

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論