1. 程式人生 > >鬆翰微控制器--SN8F5702學習筆記(五)PWM

鬆翰微控制器--SN8F5702學習筆記(五)PWM

PW1定時器包括一個16位二進位制上升4通道PWM和一個脈衝PWM功能。由計數器達到上限值(PW1Y),清除其計數器並觸發中斷訊號。PWM的佔空比由PW1D暫存器控制。PWM還支援一個脈衝輸出訊號,該訊號可在第一個PWM結束時自行禁用週期。因此,在這種情況下只能產生一個脈衝。 PWM有四個可程式設計通道與GPIO引腳共用,由PW1CH暫存器控制。輸出操作必須是通過使能PW1CH暫存器的每個位/通道。啟用的PWM通道交換GPIO到PWM輸出。當PW1CH暫存器禁用時,PWM通道返回上一狀態GPIO模式。如果中斷使能,則PWM內建空閒模式喚醒功能。當PWM時發生定時器溢位(從PW1Y-1到PW1Y計數),PWM1F將立即發出可以通過韌體讀/寫。 PWM時鐘源為fosc,除以1至128倍由PW1R [2:0]位控制。 PW1中斷功能由EPWM1​​控制。

在這裡插入圖片描述

普通PWM

 PW1定時器內建PWM功能,由PW1EN和PW1CH暫存器控制。 PWM10,PWM11,PWM20,PWM21是輸出引腳(與P0.5,P0.6,P1.4和P1.5共用)。 那些輸出引腳是與PW1CH暫存器控制的GPIO引腳共用。 輸出PWM功能時,必須設定PW1EN = 1。 當PWM輸出訊號同步完成時,PWM通道交換GPIO到PWM輸出。 當PW1EN = 0時,PWM通道返回GPIO模式並返回上一個狀態。

 從PW1Y和PW1D比較組合的結果產生PWM訊號。 當PW1C從0x0000開始計數,PWM輸出高電平狀態,即PWM初始狀態。 PW1C是從PW1Y暫存器載入新資料以確定PWM週期和解析度。 PW1C繼續計數,並且系統比較PW1C和PW1D。 當PW1C = PW1D時,PWM輸出狀態交換到低PW1C繼續計數。 當PW1定時器溢位時(PW1Y-1至0x0000),並且PWM訊號的一個週期結束。 PW1C自動從0x0000重新載入,並且PWM
輸出狀態在下一個週期交換為高電平。 PW1D決定高佔空比和PW1Y決定PWM的解析度和週期。 PW1D不能大於PW1Y,否則PWM訊號將是錯誤的。

在這裡插入圖片描述

單脈衝PWM

 當PW1PO = 0時,PW1為PWM功能模式。 當PW1PO = 1且PW1EN = 1時,PW1將輸出PW1計數器溢位時,發出單脈衝PWM功能和PWM1F。 PW1EN位清零自動和脈衝輸出引腳返回空閒狀態。 輸出下一個脈衝是設定PW1EN位按程式再次。 由PW1CH暫存器選擇的一個脈衝PWM通道。 當輸出一個脈衝PWM功能時,我們必須設定PW1PO = 1和PW1EN = 1。 當一個脈衝PWM輸出訊號同步完成後,PWM通道從GPIO切換到PWM輸出。 當一個脈衝PWM輸出結束,PW1EN = 0,PWM通道返回GPIO模式和上一個狀態。

在這裡插入圖片描述

反轉和死區

 PWM建立反向輸出功能。 當PWNVn = 1時,PWM具有一個反向PWM訊號。當PWNVn = 1時,PW1輸出PWM1的反向PWM訊號。 當PWNVn = 0時,PW1輸出PWM1的非反向PWM訊號。反向PWM輸出波形如下圖。

在這裡插入圖片描述
 PWM死區出現在PWM高脈衝寬度,死區週期可程式設計來自PW1A和PW1D-PW1B暫存器。 死區週期在左右終端是對稱的PWM脈衝寬度與否。 如果死區週期長於PWM佔空比,則PWM不輸出。

PWM暫存器

在這裡插入圖片描述
1、PWM輸出引腳控制:PW1CH

暫存器 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
PW1CH - - PWCH21 PWCH20 - - PWCH11 PWCH10
引腳對應 - - P1.5 P0.6 - - P1.4 P0.5
解釋 - - 設定為0則為普通引腳,設定為1則作為PWM輸出引腳 同左 - - 同左 同左

2、PWM功能模式配置:PW1M

暫存器 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
PW1M PW1EN PW1R2 PW1R1 PW1R0 PWNV2 PWNV1 - PW1PO
解釋 PWM使能:1開啟,0關閉 時鐘源選擇2位 時鐘源選擇1位 時鐘源選擇0位 PWM20/21輸出控制:1可反轉,0不可反轉 PWM10/11輸出控制:1可反轉,0不可反轉 - 單脈衝功能:1開啟,0關閉

時鐘源選擇位:

分頻
000 fosc / 128
001 fosc / 64
010 fosc / 32
011 fosc / 16
100 fosc / 8
101 fosc / 4
110 fosc / 2
111 fosc / 1

3、PWM週期控制:PW1YH,PW1YL

16位

4、PWM佔空比控制:PW1DH,PW1DL

16位

5、PWM死區控制B點PW1BH,PW1BL

16位

6、PWM死區控制A點PW1A

8位

注意:在死區控制配置中,B必須要大於A

    PW1M |= 0x70;           	// PW1 rate is Fhosc/1     PWMÊä³öƵÂÊΣ(32/1)/256 = 125KHZ   PWMÖÜÆÚΪ8uS

    PW1M |= 0x08;           	// enable PWM20/21 output
    PW1M |= 0x04;           	// enable PWM10/11 output

//    PW1M |= 0x01;        		// enable PW1 pulse output function (PW1PO)

    PW1YH = 0x00;
    PW1YL = 0xFF;        			// set PW1 cycle control    256

    PW1DH = 0x00;
    PW1DL = 0x40;           	// set PWM duty control   64     佔空比為25%(低電平的佔空比)