第6章 定時器相關(guān)模塊_第1頁
第6章 定時器相關(guān)模塊_第2頁
第6章 定時器相關(guān)模塊_第3頁
第6章 定時器相關(guān)模塊_第4頁
第6章 定時器相關(guān)模塊_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第6章 定時器相關(guān)模塊本章導讀:本章講述了計數(shù)器/定時器的一般工作原理,介紹K60N512的定時接口模塊(PDB、 FTM、PIT、LPTMR、CMT和RTC )的基本功能與編程基礎(chǔ),并給出具體的例子,讀者要仔細體會各種不同的使用方法,并將這些方法運用到具體的應(yīng)用中。本章知識點有計數(shù)器/定時器的工作原理;可編程延時模塊PDB;Flex定時器FTM;周期中斷定時器PIT;低功耗定時器LPTMR;載波調(diào)制傳輸接口 CMT;實時時鐘RTC。6.1計數(shù)器/定時器的基本工作原理在嵌入式應(yīng)用系統(tǒng)中,有時要求能對外部脈沖信號或開關(guān)信號進行計數(shù),這可通過計數(shù)器來 完成。有些設(shè)備要求每間隔一定時間開啟并在一段時

2、間后關(guān)閉,有些指示燈要求不斷地閃爍,這 可利用定時信號來完成。個人計算機也經(jīng)常要用到定時信號,如系統(tǒng)日歷時鐘的計時、產(chǎn)生不同 頻率的聲源等。在計算機系統(tǒng)屮,計數(shù)與定時問題的解決方法是一致的,只不過是同一個問題的 兩種表現(xiàn)形式。實現(xiàn)計數(shù)與定時的基本方法有三種:完全硬件方式、完全軟件方式、可編程計數(shù)器/定時器。 1.完全硬件方式在過去的許多儀器儀表或設(shè)備中,需要進行延時、定時或計數(shù),經(jīng)常使用數(shù)字邏輯電路實現(xiàn), 即完全用硬件電路實現(xiàn)計數(shù)/定時功能,若要改變計數(shù)/定時的要求,必須改變電路參數(shù),通用性和靈活性差。在微型電子計算機出現(xiàn)以后,特別是隨著單片微型計算機的發(fā)展與普及,這種完全硬件方式實現(xiàn)定時與計

3、數(shù)的方法已較少使用。2.完全軟件方式在計算機中,通過編程利用計算機執(zhí)行指令的時間實現(xiàn)定時,稱為完全軟件方式,簡稱軟件方式。在這種方式中,一般是根據(jù)所需要的時間常數(shù)來設(shè)計一個延時子程序,延時子程序中包含一定的指令,設(shè)計者要對這些指令的執(zhí)行時間進行精確的計算和測試,以便確定延時時間是否符合要求。當時間常數(shù)比較大時,常常將延時子程序設(shè)計為一個循環(huán)程序,通過循環(huán)常數(shù)和循環(huán)體 內(nèi)的指令來確定延時時間。這樣,每當延時子程序結(jié)束以后,可以直接轉(zhuǎn)入下而的操作,也可以用輸出指令產(chǎn)生一個信號作為定時輸出。這種方法的優(yōu)點是節(jié)省硬件。主要缺點是執(zhí)行延時程序期間,CPU一直被占用,所以降低了 CPU的使用效率,也不容易

4、提供多作業(yè)環(huán)境;另外,設(shè)計延時子程序時,要用指令執(zhí)行時間來拼湊延時時間,顯得比較麻煩。不過,這種方法在實際應(yīng)用中還是經(jīng)常使用的,尤其是在已有系統(tǒng)上作軟件開發(fā)時,以及延時時間較小而重復次數(shù)又較少的情況。在計算機控制軟件開發(fā)過程中,作為粗略的延時,經(jīng)常使用軟件方法來實現(xiàn)定時。3.可編程計數(shù)器/定時器利用專門的可編程計數(shù)器/定時器實現(xiàn)計數(shù)與定時,克服了完全硬件方式與完全軟件方式的缺點,綜合利用了它們各自的優(yōu)點,其計數(shù)/定時功能可由程序靈活地設(shè)置,設(shè)定之后與CPU并行地工作,不占用CPU的工作時間。應(yīng)用可編程計數(shù)器/定時器,在簡單的軟件控制下,可以產(chǎn)生準確的時間延時。這種方法的主要思想是根據(jù)需要的定時

5、時間,用指令對計數(shù)器/定時器設(shè)置定時常數(shù),并用指令啟動計數(shù)器/定時器開始計數(shù),當計數(shù)到指定值時,便自動產(chǎn)生一個定時輸出。在計數(shù)器/定時器開始工作以后,CPU不必去管它,而可以去做其他工作。這種方法最突出的優(yōu)點是計數(shù)時不占用CPU的時間,如果利用計數(shù)器/定時器產(chǎn)生中斷信號還可以建立多作業(yè)的環(huán)境,所以可大大提高CPU的利用率。加上計數(shù)器/定時器本身的開銷并不很大,因此這種方法在微機應(yīng)用系統(tǒng)中得到了廣泛的使用。K60的定時器接口模塊包括了六個子模塊:可編程延遲模塊PDB、Flex定時器模塊FTM、周期中斷定時器模塊PIT、低功耗定時器模塊LPTMR、載波調(diào)制發(fā)射器模塊CMT,以及實時時鐘模塊RTC。

6、下面逐個介紹這幾個模塊。6.2可編程延遲模塊PDB6.2.1 PDB的基礎(chǔ)知識可編程延遲模塊(Programmable Delay Block, PDB)可以提供從內(nèi)部/外部觸發(fā)源、可編程間隔到A/D轉(zhuǎn)換(Analog To Digital Convert, ADC)的硬件觸發(fā),也可以提供D/A轉(zhuǎn)換模塊(Digital-to-Analog Converter, DAC)間隔觸發(fā)的可控時延,這樣就可以為ADC轉(zhuǎn)換和DAC輸出提供精確的時間。由于本章涉及ADC與DAC的內(nèi)容,讀者可以先閱讀后面的章節(jié)再進行本節(jié)的學習。另外,PDB模塊還可以選擇性提供脈沖輸出。PDB模塊包含高達15種輸入觸發(fā)中斷源和

7、軟件觸發(fā)中斷源、8路的可配置用于ADC觸發(fā)的PDB通道、8路的DAC內(nèi)部觸發(fā)源和8路的脈沖輸出。PDB結(jié)構(gòu)框圖如圖6-1所示。在圖中,只顯示了PDB通道n,DAC間隔觸發(fā)器x以及脈沖輸出y (用虛線框表示),沒有顯示PDB使能控制邏輯與時序錯誤中斷邏輯。6.2.2 PDB模塊寄存器介紹PDB的寄存器絕對地址(十六進制)寄存器名稱訪問4003_6000狀態(tài)和控制秒寄存器(PDB0_SC)R/W4003_6004模寄存器(PDB0_MOD)R/W4003_6008計數(shù)寄存器(PDB0_CNT)R4003_600C中斷延時寄存器(PDB0_IDLY)R/W4003_6010通道n控制寄存器1((PD

8、B0_CH0C1)R/W4003_6014通道n狀態(tài)寄存器(PDB0_CH0S)W1c4003_6018通道n延時0寄存器(PDB0_CH0DLY0)R/W4003_601C通道n延時1寄存器(PDB0_ CH0DLY1)R/W4003_6038通道n控制寄存器1( PDB0_CH1C1 )R/W4003_603C通道n狀態(tài)寄存器( PDB0_CH1S )W1c4003_6040通道n延時0寄存器(PDB0_CH1DLY0)R/W4003_6044通道n延時1寄存器(PDB0_ CH1DLY1)R/W4003_6150DAC間隔觸發(fā)n控制寄存器( PDB0_DACINTC0 )R/W4003_

9、6154DAC間隔n寄存器( PDB0_DACINT0 )R/W4003_6158DAC間隔觸發(fā)n控制寄存器( PDB0_DACINTC1)R/W4003_615CDAC間隔n寄存器( PDB0_DACINT1 )R/W4003_6190輸出脈沖n使能寄存器( PDB0_PO0EN)R/W4003_6194輸出脈沖n延時寄存器( PDB0_PO0DLY)R/W1)狀態(tài)和控制寄存器(PDBx_SC)PDBx_SC位描述位描述31-20:預留預留,只讀,值為019-18:LDMOD裝載模式選擇LDOK置位后,此位為MOD、IDLY、ChnDlym、INTx和POyDly寄存器的負載模式選擇位00

10、一旦LDOK置位后,內(nèi)部寄存器立即從緩沖區(qū)裝載值01 PDB計數(shù)器的值與MOD寄存器的值相等且LDOK置位后,內(nèi)部寄存器從緩沖區(qū)裝載值(1)10 LDOK置位后,如果檢測到輸入觸發(fā)事件,內(nèi)部寄存器從緩沖區(qū)裝載值(2)11 當(1)或(2)發(fā)生時,內(nèi)部寄存器從緩沖區(qū)裝載值。17:PDBEIEPDB時序錯誤中斷使能位0 禁止中斷1 使能中斷16:SWTRIG軟件觸發(fā)當使能PDB而且選擇軟件觸發(fā)作觸發(fā)輸入源時,寫1到此位會使計數(shù)器重新計數(shù)。寫0無 效。 讀為015:DMAENDMA使能位0 禁止1 使能14-12:PRESCALER預分頻選擇位000 1倍倍頻001 2倍倍頻010 4倍倍頻011

11、8倍倍頻100 16倍倍頻101 32倍倍頻110 64倍倍頻111 128倍倍頻11-8:TRGSEL輸入觸發(fā)源選擇為PDB選擇輸入觸發(fā)源。輸入觸發(fā)源可以是內(nèi)部或者外部觸發(fā)源,或者軟件觸發(fā)。00001110分別為中斷源0中斷源14,1111為軟件中斷源7:PDBENPDB使能位0 禁止,計數(shù)器關(guān)閉1 使能6:PDBIFPDB中斷標志位當計數(shù)器的值等于IDLY寄存器的值時,此位置位。寫0清該位。5:PDBIEPDB中斷使能這一位使能PDB中斷。當此位被置位且DMAEN被清除時,PDBIF會產(chǎn)生一個中斷0 禁止1 使能4:預留預留,只讀,值為03-2:MULT倍頻因子選擇位00 倍頻因子為101

12、 倍頻因子為1010 倍頻因子為2011 倍頻因子為401:CONT連續(xù)模式使能位0 單次模式1 連續(xù)模式0:LDOK裝載數(shù)據(jù)OK位寫1可以讓緩沖裝載內(nèi)部寄存器MOD、IDLY、ChnDlym、INTx和POyDly的值。MOD、IDLY、ChnDlym、INTx和POyDly可以通過LDMOD發(fā)揮作用。2)模寄存器(PDBx_MOD)PDBx_MOD位寄存器位描述31-16:預留預留,只讀,值為015-0:MODPDB模值這些位確定了計數(shù)器的周期,當計數(shù)器達到這個值時,歸零,如果PDB為連續(xù)模式,重新計數(shù)。3)計數(shù)寄存器(PDBx_CNT)PDBx_CNT位描述位描述31-16:預留預留,只

13、讀,值為015-0:CNTPDB計數(shù)器,只讀4)中斷延時寄存器(PDBc_IDLY)PDBc_IDLY位描述位描述31-16:預留預留,只讀,值為015-0:IDLYPDB中斷延時,這些位確定PDB中斷的延時值5)通道n控制寄存器1(PDBx_CHnC1)每個PDB通道都有一個控制寄存器CHnC1,用來控制每個PDB通道的功能。PDBx_CHnC1位描述位描述31-24:預留預留,只讀,值為023-16:BBPDB通道預觸發(fā)背靠背操作使能位0 禁止1 使能15-8:TOSPDB預觸發(fā)輸出選擇位這些位用來選擇PDB的ADC預觸發(fā)輸出。0 PDB通道響應(yīng)旁路模式的預觸發(fā)。1當在輸入觸發(fā)源檢測到一個

14、上升沿信號后,計數(shù)器的值等于通道延時寄存器的值加一個預分頻周期時,或者選擇軟件觸發(fā)模式且SWTRIG置位,預觸發(fā)器會響應(yīng)7-0:ENPDB通道預觸發(fā)使能位0 禁用PDB通道響應(yīng)預觸發(fā)器1 使能 PDB通道響應(yīng)預觸發(fā)器6)通道n狀態(tài)寄存器(PDBx_CHnS)PDBx_CHnS位描述位描述31-24:預留預留,只讀,值為023-16:CFPDB通道標志當PDB計數(shù)器與CHnDLYm匹配時置位CFm。寫0清除15-8:預留預留,只讀,值為07-0:ERRPDB通道時序錯誤標志0 PDB通道響應(yīng)預觸發(fā)器不檢測時序錯誤1 PDB通道響應(yīng)預觸發(fā)器檢測時序錯誤7)通道n延時0寄存器(PDBx_CHnDLY

15、0)PDBx_CHnDLY0位描述位描述31-16:預留預留,只讀,值為015-0:DLYPDB通道延時值這些位確定通道響應(yīng)預觸發(fā)器的延時值8)通道n延時1寄存器(PDBx_CHnDLY1)功能同通道n延時0寄存器,不再贅述。9)DAC間隔觸發(fā)器n控制寄存器(PDBx_DACINTCn)PDBx_DACINTCn位描述位描述31-2:預留預留,只讀,值為01:EXTDAC外部輸入觸發(fā)使能位0 禁用DAC外部輸入觸發(fā)1 使能DAC外部輸入觸發(fā)0:TOEDAC間隔觸發(fā)使能位0 禁止1 使能10)DAC間隔n寄存器(PDBx_DACINTn)PDBx_DACINTn位描述位描述31-16:預留預留,

16、只讀,值為015-0:INTDAC間隔這些位決定DAC間隔觸發(fā)器的間隔值11)脈沖輸出n使能寄存器(PDBx_POnEN)PDBx_POnEN位描述位描述31-8:預留預留,只讀,值為07-0:POENPDB脈沖輸出使能0 禁止1 使能12)脈沖輸出n延時寄存器(PDBx_POnDLY)PDBx_POnDLY位描述位描述31-16:DLY1PDB脈沖輸出延時1這些位用來確定PDB脈沖輸出延時1的值。當PDB計數(shù)器等于DLY1時,脈沖輸出高。15-0:DLY2PDB脈沖輸出延時2這些位用來確定PDB脈沖輸出延時2的值。當PDB計數(shù)器等于DLY2時,脈沖輸出高。6.2.3 PDB模塊概要與編程要點

17、1.PDB輸入觸發(fā)源選擇PDB有多達15個輸入觸發(fā)源,叫做Trigger-In 014,在圖6-1中可以看到,它們與片上或片下事件源相連。通過PDB狀態(tài)控制寄存器SC的軟件觸發(fā)位(SWTRIG)可以將PDB設(shè)置為軟件觸發(fā),通過SC的輸入觸發(fā)源選擇位域(TRIGSEL)可以使能觸發(fā)輸入源Trigger-In 0到14 中的某一個,或者是軟件觸發(fā)。SCTRIGSEL的取值范圍為00001111,其中00001110對應(yīng) 觸發(fā)源Trigger-In 0到14,1111對應(yīng)軟件觸發(fā)。詳細信息參見本章閱讀材料。2. DAC間隔觸發(fā)器輸出PDB可以產(chǎn)生間歇的觸發(fā),周期性的更新DAC輸出。當產(chǎn)生輸入觸發(fā)事件

18、且DACINTCxEXT 等于零時,復位DAC間隔計數(shù)器x并重新開始計數(shù)。當間隔計數(shù)器x的值等于DACINTx寄存器設(shè)置的值時,DAC間隔觸發(fā)器x會輸出一個脈沖來更新DACx,該脈沖的脈寬等于一個外設(shè)時 鐘周期。如果置位DACINTCxEXT,將旁路DAC間隔計數(shù)器,而且在檢測到DAC外部輸入觸發(fā)有上升沿之后,DAC間隔觸發(fā)器x會輸出一個脈沖。清位DACINTCxTOE將禁止DAC間隔計數(shù)器和DAC間隔觸發(fā)器。當PDB計數(shù)器等于PDB模寄存器MOD的值時,復位DAC間隔計數(shù)器。因此當PDB計數(shù)器歸零時,DAC間隔計數(shù)也會重新開始。在圖6-1可以看到DAC間隔觸 發(fā)輸出框圖。3.脈沖輸出PDB可

19、以輸出寬度可配置的脈沖。當PDB計數(shù)器的值等于PDB脈沖輸出y延時寄存器DLY1的值時,脈沖輸出為高;當計數(shù)器達的值等于PDB脈沖輸出y延時寄存器DLY2的值時,脈沖輸出為低。由圖6-1也可以看到脈沖輸出框圖。圖6-1 PDB結(jié)構(gòu)框圖6.2.3 PDB構(gòu)件設(shè)計及測試實例(省略)6.3 Flex定時器FTM6.3.1 FTM的基礎(chǔ)知識彈性定時器模塊(FlexTimer Module, FTM)是一個支持輸入捕捉、輸出比較、產(chǎn)生可用來 控制電機的PWM信號和電源管理應(yīng)用的通道定時器。它建立在飛思卡爾8位微控制器HCS08 定時器PWM模塊TPM上,并且在低功耗和向后兼容TPM的基礎(chǔ)上進行功能擴展,

20、增加了有符號的加法計數(shù)器、故障控制輸入、增強了觸發(fā)功能和極性控制來滿足電機控制、電源轉(zhuǎn)換等 的需要。所有與TPM模塊相同的特性完全向后兼容,F(xiàn)TM在相同的核心平臺下不需要對代碼做 任何改變就可以實現(xiàn)相同的功能。FTM具有可選的時鐘源,可以是系統(tǒng)時鐘、固定頻率時鐘或者外部時鐘;具有1、2、4、8、16、32、64、128預分頻;一個可以進行無符號或有符號計數(shù)的16位計數(shù)器,為FTM提供定時 參考;每一個通道都可配置為輸入捕捉、輸出比較或者邊緣對齊的PWM模式;每個通道的極性 都可以配置,并產(chǎn)生溢出中斷、通道中斷、故障中斷等中斷。當TOIE=l 且TOF=l時,產(chǎn)生定時 器溢出中斷,當ChnIE=

21、l且CHnF=l時,產(chǎn)生通道(n)中斷,當FAULTIE=1且FAULTF=1時, 產(chǎn)生故障中斷。圖6-2顯示了 FTM模塊結(jié)構(gòu),其中心組件為16位計數(shù)器。6.3.2 FTM模塊寄存器介紹FTM寄存器非常多,我們這里只列舉常用的8個。1)狀態(tài)和控制寄存器(FTMx_SC)SC包含溢出狀態(tài)標志和控制位,用來配置中斷使能、FTM配置、時鐘源和預分頻因子。這些控制和這個模塊的所有通道相關(guān)。FTMx_SC位域描述位域描述31-8保留這個只讀位域被保留,值常為0。7TOF定時器溢出標志位0 FTM計數(shù)器不溢出1 FTM計數(shù)器溢出6TOIE定時器溢出中斷使能0 禁止TOF中斷。使用軟件輪詢1 使能TOF中

22、斷。當TOF等于1時產(chǎn)生中斷5CPWMS中央對齊PWM選擇位0 FTM計數(shù)器向上計數(shù)1 FTM計數(shù)器向上向下計數(shù)4-3CLKS時鐘源選擇00 沒有選擇任何時鐘(實際上是禁止FTM計數(shù)器)01 系統(tǒng)時鐘10 固定頻率時鐘11 外部時鐘2-0PS預分頻因子選擇位000 1分頻001 2分頻010 4分頻011 8分頻100 16分頻101 32分頻110 64分頻111 128分頻2)計數(shù)器(FTMx_CNT)CNT寄存器包含F(xiàn)TM計數(shù)器的值。復位清CNT寄存器,寫任何值到COUNT中會將計數(shù)器更新為它的初始值(CNTIN),當激活BDM時,F(xiàn)TM計數(shù)器凍結(jié)。FTMx_CNT位域描述位域描述31-

23、16保留只讀位域被保留,總是為0。15-0COUNT計數(shù)器值3)模寄存器(FTMx_MOD)模寄存器包含F(xiàn)TM計數(shù)器的模值。FTM計數(shù)器達到模寄存器的值后,在下個時鐘周期置位溢出標志(TOF),F(xiàn)TM計數(shù)器的下一個值取決于所選的計數(shù)方式。寫MOD寄存器會將值鎖存到緩沖區(qū)中,MOD寄存器會根據(jù)寫緩沖區(qū)中的值更新寄存器。如果FTMEN=0,通過寫SC寄存器可能復位寫一致機制,推薦在寫MOD寄存器之前初始化FTM計數(shù)器。FTMx_MOD位域描述位描述31-16:預留預留,只讀,值為015-0:MOD模值4)通道n狀態(tài)和控制寄存器(FTMx_CnSC)CnSC包含了通道中斷狀態(tài)標志和控制位,用于配置中

24、斷使能、通道配置和引腳功能。FTMx_CnSC位描述位描述31-8:預留預留,只讀,值為07:CHF通道標志0 無通道事件發(fā)生1 有通道事件發(fā)生6:CHIE通道中斷使能位0 禁止1 使能5:MSB通道模式選擇位在通道邏輯中,用于進一步的選擇,它的功能取決于通道模式。此位已被寫保護。只有當MODEWPDIS = 1時才可寫。4:MSA通道模式選擇位在通道邏輯中,用于進一步的選擇,它的功能取決于通道模式。此位已被寫保護。只有當MODEWPDIS = 1時才可寫。3:ELSB邊沿或電平選擇位ELSB和ELSA的功能取決于通道模式,此位已被寫保護。僅當MODEWPDIS = 1時才可寫。2:ELSA邊

25、沿或電平選擇位ELSB和ELSA的功能取決于通道模式,此位已被寫保護。僅當MODEWPDIS = 1時才可寫。1:預留預留,只讀,值為00:DMADMA使能位0 禁止1 使能5)通道n值寄存器(FTMx_CnV)這些寄存器包括了輸入捕捉模式下捕捉的FTM計數(shù)器的值或者輸出比較模式下的匹配值。在輸入捕捉、捕捉測試和雙邊沿捕捉模式,寫CnV無效。在輸出比較模式下,寫CnV寄存器將會把寫入的值裝載到緩沖中。FTMx_CnV位描述31-16:預留預留,只讀,值為015-0:VAL通道值捕捉到的FTM計數(shù)器的值或輸出比較輸出匹配值6)計數(shù)器初始值寄存器(FTMx_CNTIN)該寄存器包括FTM計數(shù)器的初

26、始值,寫該寄存器會將值裝載到緩沖區(qū)中。FTMx_CNTIN位描述位描述31-16:預留預留15-0:INITFTM計數(shù)器的初始值7)捕捉和比較狀態(tài)寄存器(FTMx_STATUS)該寄存器包括了對每個FTM通道的狀態(tài)標志CHnF位的副本。通過讀該寄存器可以得到所有通道的CHnF位的值。寫0x00到該寄存器可以清掉所有的CHnF位的值。當通道上有事件發(fā)生時,硬件會使響應(yīng)的通道標志置位。當CHnF被置位時,讀該寄存器可以清CHF。寫1到CHF無效。FTMx_STATUS位描述位描述31-8:預留預留,只讀,值為07-0CHnF通道n標志位0 無事件發(fā)生1 有事件發(fā)生8)特性模式選擇寄存器(FTMx_

27、MODE)這個寄存器包含用來配置出錯中斷和出錯控制的控制位,捕捉測試模式,PWM同步化,寫保護,通道輸出初始化,和使FTM加強的特性。這些控制與該模塊內(nèi)的所有通道有聯(lián)系。FTMx_MODE位描述位描述31-8預留該位為只讀位而且其值總為0。7FAULTIE故障控制中斷使能位0 禁用故障控制中斷1 使能故障控制中斷6-5FAULTM故障控制模式00 對所有的通道禁用故障控制。10 僅對0、2、4、6通道使能故障控制,手動清除故障10 對所有的通道使能故障控制,且手動清除故障11 對所有的通道使能故障控制,且自動清除故障4CAPTEST捕捉測試模式使能位0 禁用捕捉測試模式1 使能捕捉測試模式3P

28、WMSYNCPWM同步模式0 無限制,軟件觸發(fā)和硬件觸發(fā)都可通過MOD、CnV、OUTMASK以及FTM計數(shù)器來同步化1 軟件觸發(fā)僅通過使用MOD和CnV同步化,硬件觸發(fā)僅通過使用OUTMASK和FTM計數(shù)器同步2WAPDIS禁用寫保護0 寫保護允許 1 禁止寫保護1INIT初始化通道輸出寫0到INIT,可以根據(jù)OUTINIT寄存器的相應(yīng)位初始化通道輸出,寫1到INIT,無效。讀INIT總是為00FTMENFTM使能位0 只有TPM兼容寄存器可用,F(xiàn)TM專用寄存器不可用1 所有的寄存器都可用6.3.3 FTM模塊概要與編程要點本小節(jié)具體闡述FTM各個模塊的特征,由于版面有限,這里只列舉了常用的

29、幾個模塊。1.計數(shù)時鐘源與分頻FTM狀態(tài)和控制寄存器(FTMx_SC)的CLKS1:0位用于選擇FTM計數(shù)器的時鐘源,CLKS1:0=00表示沒有選擇任何時鐘,相當于關(guān)閉FTM計數(shù)器,CLKS1:0=01表示系統(tǒng)時鐘源,CLKS1:0=10(固定頻率時鐘),CLKS1:0=11(外部時鐘)。MCU復位后,CLKS1:0=00,關(guān)閉FTM計數(shù)器。選擇的時鐘源的分頻因子由FTM狀態(tài)和控制寄存器(FTMx_SC)的PS2:0位 決定,PS2:0=000 (1分頻),PS2:0=001 (2分頻),PS2:0=010 (4分頻),PS2:0=011 (8分頻),PS2:0=100 (16分頻),PS2

30、:0=101 (32分頻)。2.計數(shù)器FTM有一個16位計數(shù)器,供通道使用,計數(shù)器的操作主要有向上計數(shù)與向上向下計數(shù)。向上計數(shù):當FTM正交解碼控制和狀態(tài)寄存器(FTMx_QDCTRL)的正交解碼模式使能位QUADEN=0且FTM狀態(tài)和控制寄存器(FTMx_SC)的中央對齊PWM選擇位CPWMS=0時向上計數(shù),CNTIN定義了計數(shù)起始值,MOD定義了計數(shù)的最終值。如圖6-2所示,F(xiàn)TM計數(shù)器先加載CNTIN值,然后開始計數(shù),直到達到MOD值,然后計數(shù)器重新加載CNTIN值,重復以上 步驟。如果CNTIN=0x0000,F(xiàn)TM計數(shù)和TPM向上計數(shù)一樣,即向上無符號計數(shù),如果 CNTIN15=1,

31、FTM是向上有符號計數(shù),如果CNTIN (15) =0 且 CNTIN0x0000, FTM也是向上無符號計數(shù)。向上向下計數(shù):當QUADEN=0且CPWMS=1時,向上向下計數(shù)。CNTIN定義了計數(shù)起始值,MOD定義了計數(shù)的最終值。同向上計數(shù)一樣,F(xiàn)TM計數(shù)器先加載CNTIN值,然后開始計數(shù),直到達到MOD值,但是不同于向上計數(shù),此時計數(shù)器執(zhí)行減數(shù)操作,直到它回到CNTIN值,上下計數(shù)重新開始。FTM模塊除了以上操作外還可以有以下三個常用的模塊。輸入捕捉:輸入捕捉功能主要用來監(jiān)測外部的事件和輸入信號。當外部事件發(fā)生或信號發(fā)生 變化時,在指定的輸入捕捉引腳發(fā)生一個指定的沿跳變(由FTMx_CSC

32、寄存器的ELSnB和ELSnA域指定是上升沿還是下降沿,具體內(nèi)容參見本章閱讀資料)。定時器捕捉到特定的沿跳變后,會把計數(shù)寄存器當前的值鎖存到通道寄存器。如果在輸入捕捉控制寄存器中設(shè)定允許輸入捕捉中斷,系統(tǒng)會產(chǎn)生一次輸入捕捉中斷,利用中斷處理軟件可以得到事件發(fā)生的時刻或信號發(fā)生變化 的時刻。輸出比較:輸出比較的功能是用程序的方法在規(guī)定的時刻輸出需要的電平,實現(xiàn)對外部電路 的控制。當定時器的某一通道用做輸出比較功能時,通道寄存器的值和計數(shù)寄存器的值每隔一定時間比較一次。當兩個值相等時,輸出比較模塊置定時器通道n狀態(tài)和控制寄存器(FTMx_CnSC)的CHnF位為1,并且在該通道的引腳上輸出預先規(guī)定

33、的電平。如果輸出比較中斷允許,還會產(chǎn)生一個中斷。PWM:脈寬調(diào)制器(Pulse Width Modulator,PWM)產(chǎn)生一個在高電平和低電平之間重復交替的輸出信號,這個信號被稱為PWM信號,也叫脈寬調(diào)制波。通過指定所需的時鐘周期和占空比來控制高電平和低電平的持續(xù)時間。通常定義占空比為信號處于高電平的時間(或時鐘周期數(shù)) 占整個信號周期的百分比,方波的占空比為50%。脈沖寬度是指脈沖處于高電平的時間;PWM 分為以下三類。(1)邊沿對齊PWM (Edge-Aligned PWM)。所有PWM信號的邊沿在周期的開始對齊,如圖6-3所示。EPWM周期period由MOD寄存器和CNTIN寄存器的

34、值決定(具體計算公式為MOD - CNTIN + 0x0001 ),脈沖寬度pulse width(占空比)由CnV寄存器和CNTIN寄存器的值決定(具體計算格式為CnV-CNTIN)。圖6-3 邊沿對齊PWM(2)中央對齊 PWM (Center-Aligned PWM)。如圖6-4所示,CPWM周期由2*(MOD-CNTIN)決定,脈沖寬度(占空比)由2(CnV-CNTIN)決定,MOD必須在0x0001到0x7FFF內(nèi)。圖6-4 中央對齊PWM(3)通道合并模式。通道n(一個偶數(shù)通道)和通道n+l(相鄰的奇數(shù)通道)合并到通道n輸出一路PWM信號。周期由(MOD-CNTIN+OxOOOl)

35、決定,PWM脈沖寬度(占空比)由(C(n+l)V-C(n)V)的絕對值決定,其中C(n)V為通道n的CV寄存器值。3.信號描述FTM模塊有六種用戶訪問信號線,具體描述見表6-1。表6-1 FTM用戶訪問信號線信 號描 述I/OEXTCLK外部時鐘,用于驅(qū)動FTM計數(shù)器,外部時鐘信號不能超過系統(tǒng)時鐘頻率的1/4ICHnFTM通道n,n為70,每個通道都可被配置為輸入或者輸出,通道的方向由模式?jīng)Q定I/OFAULTj故障輸入j,j為30,如果FTMEN=1,F(xiàn)ALUTM1:00,則使能故障控制。FTM有4種故障輸入, FAULTnEN位使能故障輸入n,F(xiàn)FLTRnEN位使能故障輸入n濾波器,F(xiàn)FVA

36、L3:0位選抒每個故障輸入 的濾波器的值IPH A如果FTMEN=1且QUADEN=1,選擇正交解碼器模式,正交解碼器模式使用輸入信號相A和相B控 制FTM計數(shù)器的增加和減少。通過PHAFLTREN位使能相A輸入過濾器,且這個過濾器的值在FILTER0 寄存器的CH0FVAL3:0位定義IPHB正交解碼器B相輸入,控制FTM計數(shù)器增加或者減少的信號。通過PHBFLTREN位使能相B輸入過 濾器,且這個過濾器的值在FILTER0寄存器的CH1FVAL3:0位定義I6.3.3 FTM構(gòu)件設(shè)計及測試實例省略6.4 周期中斷定時器PIT6.4.1 PIT的基礎(chǔ)知識周期中斷時器模塊(Periodic I

37、nterrupt Timer,PIT)是一組可以用于產(chǎn)生中斷和觸發(fā)DMA通道的定時器。所有的中斷都是可屏蔽的,每個定時器都有獨立的溢出周期,此外,周期中斷定時器模塊沒有外部引腳。圖6-5為PIT模塊的結(jié)構(gòu)框圖。圖6-5 PIT模塊的結(jié)構(gòu)框圖6.4.2 PIT模塊寄存器在介紹可編程中斷定時器PIT模塊的編程方法之前,先簡要介紹用于PIT模塊的編程的幾個寄存器:PIT模塊控制寄存器(PIT_MCR),定時器加載值寄存器(PIT_LDVALn),當前定時器值寄存器(PIT_CVALn),定時器控制寄存器(PIT_TCTRLn)和定時器標志寄存器(PIT_TFLGn)。1)PIT模塊控制寄存器(PIT

38、_MCR)這個寄存器控制定時器時鐘是否使能和定時器是否運行在調(diào)試模式。PIT_MCR域描述域描述31-2預留這個只讀位域是預留的,并且始終為0。1 MDIS模塊禁止0 使能PIT定時器時鐘。1 禁用PIT定時器時鐘。0 FRZ凍結(jié)0 在調(diào)試模式下定時器繼續(xù)運行。1 在調(diào)試模式下定時器停止。2) 定時器加載值寄存器(PIT_LDVALn)這些寄存器選擇定時器中斷的溢出周期。PIT_LDVALn域描述域描述31-0TSV定時器初始值字段這些位設(shè)置定時器開始值。定時器將會倒計數(shù)直到為0,然后產(chǎn)生一個中斷后再加載這個寄存器的值。向這個寄存器寫入新值不會重啟定時器,相反在定時器到期后才會加載新值。為了取

39、消當前周期,以新值開始一個定時器周期,則必須先禁止定時器再使能定時器。3) 當前定時器值寄存器(PIT_CVALn)這些寄存器指示當前定時器的位置。PIT_CVALn域描述域描述31-0TVL當前定時器值如果使能了定時器,這些位就代表了當前定時器的值。如果定時器被禁止了,不要使用這些位域的值,因為這些值是不可靠的。4) 定時器控制寄存器(PIT_TCTRLn)這些寄存器包括了每個定時器的控制位。PIT_TCTRLn域描述域描述31-2預留這個只讀位域是預留的,始終為0。1TIE定時器中斷使能位。0 來自定時器n的中斷請求被禁止1 不論TIF是否被設(shè)置,中斷都會被請求0TEN定時器使能位0 定時

40、器n禁止1 定時器n有效5) 定時器標志寄存器(PIT_TFLGn)這些寄存器占有PIT中斷標志。PIT_TFLGn域描述域描述31-1預留這個只讀位域是預留的,始終為0。0TIF定時器中斷標志0 超時不產(chǎn)生定時器中斷。1 超時發(fā)生定時器中斷。6.4.3 PIT模塊概要與編程要點1.定時器如圖6-5所示,每個定時器都先從PIT寄存器中加載初始值,然后遞減計數(shù)直到為0,接著 再次加載初始值,重復以上步驟。每當定時器遞減計數(shù)到0時,將產(chǎn)生一個脈沖觸發(fā)并且置中斷標志位。通過設(shè)置定時器控制寄存器TCTRL (Timer Control Register)的屮斷使能標志位TIE位,可以開啟或屏蔽定時器通

41、道中斷。只有在舊中斷被清除后,新中斷才會產(chǎn)生。如果需要,可以通過當前定時器值寄存器CVAL讀取定時器的當前計數(shù)器的值。重啟計數(shù)周期時,先關(guān)閉定時器,然后置位TCTRL的定時器使能標志位TEN開啟定時器,見圖6-6。圖6-6 停止和開始定時器如果要修改正在運行的定時器的計數(shù)周期,可以先關(guān)閉定時器,設(shè)置一個新的加載值,然后開啟定時器來修改,見圖6-7。圖6-7 修改運行著的定時器周期此外,也可以不用重啟定時器,而直接向定時器加載值寄存器LDVAL寫入新值來改變計數(shù)周期。這個值將會在下一次觸發(fā)事件后被加載,見圖6-8。圖6-8 動態(tài)設(shè)置新的加載值2.調(diào)試模式在調(diào)試模式中,通過置位PIT控制寄存器中的

42、FRZ位可以凍結(jié)定時器。這是為了在軟件開發(fā)中,允許開發(fā)者停止定時器,查看系統(tǒng)的當前狀態(tài),然后繼續(xù)操作。3.中斷所有的定時器都支持中斷??梢酝ㄟ^設(shè)置TIE位來使能定時器中斷。在相關(guān)的定時器溢出中斷發(fā)生時將置位定時器中斷標志(TIF)。注意,中斷處理除了要開定時器中斷外還需要開對應(yīng)的通道中斷。6.4.3 PIT構(gòu)件設(shè)計及測試實例省略6.5 低功耗定時器LPTMR省略6.6 載波調(diào)制發(fā)射器(CMT)省略6.7 實時時鐘6.7.1 RTC基礎(chǔ)知識1. RTC簡介實時時鐘(Real Time Clock, RTC)模塊是一個獨立供電的模塊,在芯片掉電時由備用電源(VBAT)供電,確保RTC計時器正常運行

43、,保持RTC寄存器狀態(tài)。RTC模塊主要包含一個外部晶體振蕩器、一個POR(Power-On Reset)塊、RTC計時器以及自身的軟件復位控制位。外部晶體振蕩器為RTC計時器或其他外設(shè)提供32.768 kHz的時鐘;POR塊在RTC模塊上電時產(chǎn)生一個上電復位信號,將所有的RTC寄存器初始化為默認狀態(tài);RTC計時器由一個具有報警功能的32位秒寄存器和一個具有補償功能的16位預分頻寄存器組成;RTC自身的軟件復位控制位,也會初始化所有的RTC寄存器。注意,在VBAT掉電或POR中斷時,不允許訪問RTC的任何寄存器(除了控制寄存器),否則將產(chǎn)生總線錯誤。2.操作模式RTC模塊擁有兩種操作模式,即系統(tǒng)

44、掉電和系統(tǒng)上電。在系統(tǒng)掉電期間,RTC由備用電源供電,與其他模塊電氣隔離,此時如果計時器使能,則繼 續(xù)計數(shù),但是在此期間不可訪問RTC寄存器。在系統(tǒng)上電期間,RTC仍然由備用電源供電。在此期間可訪問RTC的所有寄存器,并且可 以為其他模塊提供32.768 kHz的時鐘。3.信號描述RTC模塊共有三根信號線,其中一個作為輸入,兩個作為輸出,具體描述見表6-3。表6-3 RTC信號描述信 號描 述I/OEXTAL3232.768 kHz的振蕩器輸入IXTAL3232.768 kHz的振蕩器輸出ORTCCLKOUT1 Hz方波輸出O6.7.2 RTC模塊寄存器介紹 RTC的寄存器絕對地址(十六進制)

45、寄存器名稱訪問4003_D000RTC定時器秒寄存器(RTC_TSR)R/W4003_D004RTC定時器預分頻寄存器(RTC_TPR)R/W4003_D008RTC定時器報警寄存器(RTC_TAR)R/W4003_D00CRTC定時器補償寄存器(RTC_TCR)R/W4003_D010RTC控制寄存器(RTC_CR)R/W4003_D014RTC狀態(tài)寄存器(RTC_SR)R/W4003_D018RTC鎖寄存器(RTC_LR)R/W4003_D01CRTC中斷使能寄存器(RTC_IER)R/W4003_D800RTC寫訪問寄存器(RTC_WAR)R/W4003_D804RTC讀訪問寄存器(RT

46、C_RAR)R/W1)RTC定時器秒寄存器(RTC_TSR)域描述31-0 TSR如果使能計數(shù)器,只允許讀TSR寄存器,此時只有不置位SRTOF或SRTIF,計時器才能執(zhí)行加操作,如果置位SRTOF或SRTIF時,計數(shù)器為零。如果禁用計數(shù)器,允許讀寫TSR寄存器,寫TSR寄存器將清零SRTOF或SRTIF位,不建議向TSR寄存器寫0。 2) RTC定時器預分頻器寄存器(RTC_TPR)域描述 31-16預留保留位,始終為零 15-0TPR如果使能計數(shù)器,只允許讀訪問TPR寄存器,計數(shù)器每隔32.768kHz個時鐘周期加1,如果置位SRTOF 或SRTIFTPR,計數(shù)器清零。 如果禁用計數(shù)器,允

47、許讀寫TPR寄存器。3) RTC定時器報警寄存器(RTC_TAR)域描述 31-0 TAR如果使能計時器,不管TARTAR是否等于TSRTSR都會置位SRTAF,寫 TAR 將清除 SRTAF。 4)RTC定時器補償寄存器(RTC_TCR)域描述31-24CIC補償間隔計數(shù)器,存放補償間隔計數(shù)器的當前值 23-16TCV定時器補償值,存放秒時間間隔補償邏輯使用的當前值15-8CIR補償間隔寄存器,用來配置補償間隔為1256 7-0 TCR定時器補償寄存器配置32.768kHz時鐘周期的個數(shù)80h 每隔32896個時鐘周期,定時器預分頻寄存器溢出。 FFh 每隔32769個時鐘周期,定時器預分頻

48、寄存器溢出。00h 每隔32768個時鐘周期,定時器預分頻寄存器溢出。01h 每隔32767個時鐘周期,定時器預分頻寄存器溢出。 7Fh 每隔32641個時鐘周期,定時器預分頻寄存器溢出。5) RTC控制寄存器(RTC_CR)域描述31-15預留只讀,始終為零14預留只允許寫零,不允許讀13-10分別為2pF、4pF、8pF、16pF振蕩器的負載配置位,為0時,禁用負載,為1時,使能額外的負載9CLKO時鐘輸出0 32kHz的時鐘輸出到其他外設(shè) 1 32kHz的時鐘不輸出到其他外設(shè)8OSCE32.768kHz振蕩器使能位0 禁用32.768kHz振蕩器 1 使能32.768kHz振蕩器7-4預

49、留只讀,始終為零3UM模式更新位0 在狀態(tài)寄存器被鎖時,允許寫SRTCE寄存器。 1 在狀態(tài)寄存器被鎖,并且置位SRTIF 或SRTOF,或者SRTCE清零時,仍然可以寫SRTCE寄存器。2SUP監(jiān)督訪問0 不支持非監(jiān)督寫操作模式,否則將會產(chǎn)生總線錯誤 1 支持非監(jiān)督寫操作模式1WPE喚醒引腳使能位0 禁用喚醒引腳 1 使能喚醒引腳,如果RTC中斷或者芯片掉電,那么喚醒引腳發(fā)生中斷0SWR軟件復位0 不起作用 1 除了SWR位、RTC_WAR寄存器與RTC_RAR寄存器外,復位所有的RTC寄存器。6) RTC狀態(tài)寄存器(RTC_SR)域描述31-5預留 只讀,始終為零4 TCE計數(shù)器使能位0

50、禁用計數(shù)器 1 使能計數(shù)器3預留 只讀,始終為零2 TAF定時器報警標志位0 定時器不報警 1 定時器報警1 TOF定時器溢出標志0 定時器不會溢出 1 定時器溢出,計數(shù)器清零0 TIF定時器無效標志0 定時器有效 1 定時器無效,計數(shù)器清零7) RTC鎖寄存器(RTC_LR)域描述:位317,位21預留且只允許讀,除位7、位20為1外,其余都為0。位63分別為URL(鎖定寄存器加鎖位)、SRl(狀態(tài)寄存器加鎖位)、CRL(控制寄存器加鎖位)與TCL(定時器補償寄存器加鎖位),為0時,相應(yīng)的寄存器加鎖,不允許對其進行寫操作,為1時,允許對其進行寫操作。8)RTC中斷使能寄存器(RTC_IER)

51、域描述:位331預留用,位02,即TAIE、TOIE、TIIE,分別為定時器報警中斷使能位、定時器溢出中斷使位、定時器無效中斷使能位,都是為0時禁用中斷,為1時使能中斷。9)RTC寫訪問寄存器(RTC_WAR)域描述:位318為預留,只讀且始終為0。位70,即IERW、LRW、SRW、CRW、TCRW、TARW、TPRW、TSRW,分別為中斷使能寄存器的寫操作位、加鎖寄存器的寫操作位、狀態(tài)寄存器的寫操作位、控制寄存器的寫操作位、定時器補償寄存器的寫操作位、報警寄存器的寫操作位、定時器預分頻寄存器的寫操作位、定時器秒寄存器的寫操作位,當它們?yōu)?時,不能進行寫操作,為1時,可以進行寫操作。10)

52、RTC讀訪問寄存器(RTC_RAR)域描述:位318為預留,只讀且始終為0。位70,即IERR、LRR、SRR、CRR、TCRR、TARR、TPRR、TSRR,分別為中斷使能寄存器的讀操作位、加鎖寄存器的讀操作位、狀態(tài)寄存器的讀操作位、控制寄存器的讀操作位、定時器補償寄存器的讀操作位、報警寄存器的讀操作位、定時器預分頻寄存器的讀操作位、定時器秒寄存器的讀操作位,當它們?yōu)?時,不能對寄存器進行讀操作,為1時,可以進行讀操作。6.7.3 RTC模塊概要與編程要點1.電源、時鐘和復位RTC模塊是一個獨立供電的模塊,在芯片掉電時由備用電池(VBAT)供電,確保RTC寄存 器保持狀態(tài)與RTC計時器正常運

53、行。RTC模塊的時鐘頻率為32.768 kHz,該時鐘是由一個外部晶體振蕩器提供的。每當RTC模塊上電時,其自身的模擬POR塊產(chǎn)生一個上電復位信號,將所有的RTC寄存器初始化為默認狀態(tài);RTC自身的軟件復位控制位,也會初始化所有的RTC寄存器。2.RTC振蕩器RTC振蕩器為RTC提供時鐘源,其結(jié)構(gòu)圖如6-11所示。其中EXTAL32為振蕩器輸入信號,XTAL32為振蕩器輸出信號。該模塊包含一個放大器(gm),為RTC振蕩器提供負電阻。振幅探測器(Amplitude Detector)控制放大器的增益,達到優(yōu)化功耗的目的。使用施密特觸發(fā)器將振蕩 器產(chǎn)生的正弦波轉(zhuǎn)化為脈沖時鐘輸出,作為RTC的參考時鐘。在EXTAL32與XTAL32之間連接一個約100的內(nèi)部反饋電阻(Rf)。另外,在RTC 振蕩器中還有兩個可變電容C1與C2 (變化范圍 為030pF), 可以作為振蕩器的負載電容使用。注意,RTC振蕩器沒有復位狀態(tài),也不會產(chǎn)生任何中斷。圖6-11 RTC振蕩器框圖3.計時

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論