S3C2410中的脈寬調(diào)制定時(shí)器(PWM)
定時(shí)器0-1共用一個(gè)8bit prescaler,定時(shí)器2-4共用另外一個(gè)。每個(gè)定時(shí)器有一個(gè)時(shí)鐘分頻器,可以選擇5種分頻方法。每個(gè)定時(shí)器從各自的時(shí)鐘分頻器獲取時(shí)鐘信號(hào)。prescaler是可編程的,并依據(jù)TCFG0-1寄存器數(shù)值對(duì)PCLK進(jìn)行分頻。
當(dāng)定時(shí)器被使能之后,定時(shí)器計(jì)數(shù)緩沖寄存器(TCNTBn)中初始的數(shù)值就被加載到遞減計(jì)數(shù)器中。定時(shí)器比較緩沖寄存器(TCMPBn)中的初始數(shù)值被加 載到比較寄存器中,以備與遞減計(jì)數(shù)器數(shù)值進(jìn)行比較。這種雙緩沖特點(diǎn)可以讓定時(shí)器在頻率和占空比變化時(shí)輸出的信號(hào)更加穩(wěn)定。
每個(gè)定時(shí)器都有一個(gè)各自時(shí)鐘驅(qū)動(dòng)的16bit遞減計(jì)數(shù)器,當(dāng)計(jì)數(shù)器數(shù)值為0時(shí),產(chǎn)生一個(gè)定時(shí)中斷,同時(shí)TCNTBn中的數(shù)值被再次載入遞減計(jì)數(shù)器中再次開(kāi) 始計(jì)數(shù)。只有關(guān)閉定時(shí)器才不會(huì)重載。TCMPBn的數(shù)值用于PWM,當(dāng)遞減計(jì)數(shù)器的數(shù)值和比較寄存器數(shù)值一樣時(shí),定時(shí)器改變輸出電平,因此,比較寄存器決 定了PWM輸出的開(kāi)啟和關(guān)閉。
S3C2410的PWM定時(shí)器采用雙buffer機(jī)制,可以不停止當(dāng)前定時(shí)器的情況下設(shè)置下一輪定時(shí)操作。定時(shí)器值可以寫(xiě)到TCNTBn,而當(dāng)前定時(shí)的計(jì)數(shù)值可以從TCNTOn獲得,即,從TCNTBn獲得的不是當(dāng)前數(shù)值而是下一次計(jì)數(shù)的初始值。
自動(dòng)加載功能被打開(kāi)后,當(dāng)TCNTn數(shù)值遞減到0時(shí),芯片自動(dòng)將TCNTBn的數(shù)值拷貝到TCNTn,從而開(kāi)始下一次循環(huán),若TCNTBn數(shù)值為0,則不會(huì)有遞減操作,定時(shí)器停止。
第一次啟動(dòng)定時(shí)器的過(guò)程如下:
- 同時(shí),由上面的工作過(guò)程可以看出,通過(guò)ISR或別的方法寫(xiě)入不同的TCMPBn的數(shù)值,就可以調(diào)節(jié)輸出信號(hào)的占空比,實(shí)現(xiàn)脈寬調(diào)制(PWM)。
Dead Zone主要用在控制外設(shè)的使能,其功能主要是在關(guān)閉一個(gè)設(shè)備和開(kāi)啟另一個(gè)設(shè)備之間,插入一個(gè)時(shí)間間隙,以防止兩個(gè)設(shè)備同時(shí)改變狀態(tài)。(有利于減小系統(tǒng)干擾?)
定時(shí)器可以通過(guò)TCFG1寄存器的DMA模式位配置為DMA請(qǐng)求源信號(hào)(nDMA_REQ)發(fā)生器,當(dāng)定時(shí)器被這樣配置后,它將nDMA_REQ信號(hào)一直 置低,直到接收到ACK信號(hào)。當(dāng)定時(shí)器收到ACK信號(hào),它將nDMA_REQ信號(hào)置高(無(wú)效)。當(dāng)定時(shí)器被設(shè)置為DMA請(qǐng)求模式時(shí),不會(huì)產(chǎn)生中斷請(qǐng)求。只 能有一個(gè)定時(shí)器被配置為DMA請(qǐng)求源。
- 同時(shí),由上面的工作過(guò)程可以看出,通過(guò)ISR或別的方法寫(xiě)入不同的TCMPBn的數(shù)值,就可以調(diào)節(jié)輸出信號(hào)的占空比,實(shí)現(xiàn)脈寬調(diào)制(PWM)。
評(píng)論