嵌入式學(xué)習(xí)筆記(37) S5PV210的PWM定時器

7.3.1為什么叫PWM定時器

(1)叫定時器說明它本質(zhì)上的原理是定時器。

(2)叫PWM定時器,是因為這個定時器天然是用來產(chǎn)生PWM波形的。

7.3.2 PWM定時器介紹

(1)S5PV210有5個PWM定時器。其中0、1、2、3各自對應(yīng)一個外部GPIO,可以通過這些對應(yīng)的GPIO產(chǎn)生PWM波形信號并輸出;timer4沒有對應(yīng)的外部GPIO(因此不是為了產(chǎn)生PWM波形,而是為了產(chǎn)生內(nèi)部定時器中斷而生的)。

(2)S5PV210的5個PWM定時器的時鐘源為PCLK_PSYS,timer0和timer1共同使用一個預(yù)分頻器,timer2、3、4共同使用一個預(yù)分頻器;每個timer有一個專用的獨立的分頻器;預(yù)分頻器和分頻器構(gòu)成了2級分頻系統(tǒng),將PCLK_PSYS兩級分頻后生成的時鐘供給timer模塊作為時鐘周期。

7.3.3 S5PV210的PWM定時器框圖簡介

關(guān)鍵點:時鐘源、預(yù)分頻器、分頻器、TCMPB & TCNTB、dead zone

7.3.4預(yù)分頻器和分頻器

(1)兩級分頻是串聯(lián)(級聯(lián))的,所以兩級分頻的分頻數(shù)是相乘的。

(2)兩級分頻的分頻系數(shù)分別在TCFG0和TCFG1兩個寄存器中設(shè)置。

(3)預(yù)分頻器有2個,prescaler0為timer0和timer1共用;prescaler1為timer2、3、4共用;兩個prescaler都是8bit的,因此prescaler value范圍為0~255;所以預(yù)分頻器的分頻值范圍為1~256(注意實際分頻值為prescaler value + 1)。

(4)分頻器實質(zhì)上是一個MUX開關(guān),多選一開關(guān)決定了走哪個分頻系數(shù)路線。可以選擇的有1/1、1/2、1/4、1/8、1/16等。

(5)計算一下,兩級分頻下來,分頻最小為1/2,最大分頻為1/(256*16)

(6)在PCLK_PSYS為66MHz的情況下(默認(rèn)時鐘設(shè)置就是66MHz的),此時兩級分頻后的時鐘周期范圍為0.03us到62.061us;再結(jié)合TCNTB的值的設(shè)置(范圍為1~2exp32),可知能定出來的時間最長為266548.27s(74h多)

7.3.5 TCNT&TCMP、TCNTB&TCMPB、TCNTO

(1)TCNT和TCNTB是相對應(yīng)的,TCNTB是有地址的寄存器,供程序員操作;TCNT在內(nèi)部和TCNTB相對應(yīng),它沒有寄存器地址,程序員不能編程訪問這個寄存器。

(2)TCNT寄存器功能就是用來減1的,它是內(nèi)部的不能讀寫;我們想TCNT中寫要通過TCNTB往進(jìn)寫;讀取TCNT寄存器中的值要通過讀取相對應(yīng)的TCNTO寄存器。

(3)工作流程就是:我們事先算好TCNT寄存器中開始減的那個數(shù)(譬如300),然后將之寫入TCNTB寄存器中,在啟動timer前,將TCNTB中的值刷到TCNT寄存器中(有一位寄存器專門用來操作刷數(shù)據(jù)過去的),刷過去后就可以啟動定時器開始計時;在計時過程中如果想知道TCNT寄存器中的值減到多少了,可以讀取相應(yīng)的TCNT0寄存器來得知。

(4)定時功能只需要TCNT、TCNTB兩個即可;TCNTO寄存器用來做一些捕獲計時;TCMPB用來生成PWM波形。

嵌入式物聯(lián)網(wǎng)的學(xué)習(xí)之路非常漫長,不少人因為學(xué)習(xí)路線不對或者學(xué)習(xí)內(nèi)容不夠?qū)I(yè)而錯失高薪offer。不過別擔(dān)心,我為大家整理了一份150多G的學(xué)習(xí)資源,基本上涵蓋了嵌入式物聯(lián)網(wǎng)學(xué)習(xí)的所有內(nèi)容。在評論區(qū)輸入“嵌入式”,即可0元領(lǐng)取學(xué)習(xí)資源,讓你的學(xué)習(xí)之路更加順暢!記得點贊、關(guān)注、收藏、轉(zhuǎn)發(fā)哦!


the end

評論(0)