(1)、簡介
在某些應(yīng)用場合中,需要使用占空比從0%~100%變化的PWM波形來進(jìn)行控制。PICCOLO系列中TMS320X2802X具有強(qiáng)大的PWM控制模塊,利用它可以產(chǎn)生任意占空比的PWM波形。EPWM模塊有三種計數(shù)方式,分別為增計數(shù)方式、增減計數(shù)方式、減計數(shù)方式,下面將詳細(xì)講解如何利用前面兩種計數(shù)方式產(chǎn)生占空比任意變換的PWM波形。
(2)、具體描述
增計數(shù)模式
增計數(shù)模式下,當(dāng)TBCTR計數(shù)值等于TBPRD的時候,CMPA陰影寄存器中的值賦值到CMPA活動寄存器中,同時計數(shù)值等于0的時候置位PWM波形,增計數(shù)等于CMPA值的時候清除復(fù)位PWM波形。在這種情況下,當(dāng)CMPA值大于周期值時產(chǎn)生占空比為100%的波形;當(dāng)CMPA值等于0的時候產(chǎn)生占空比為0%的波形。下面將對兩個臨界點(diǎn)做一下詳細(xì)的說明。
產(chǎn)生100%的占空比,CMPA值需要大于周期值。在增計數(shù)模式下,等于0的時候置位PWM波形,開始時,置位PWM波形,波形只有在計數(shù)值等于CMPA的時候才會清除,由于計數(shù)值不可能等于CMPA,所以PWM波形將一直都是高電平,即產(chǎn)生100%占空比波形。為什么計數(shù)值到達(dá)不了CMPA時,PWM波形就不會有變換,在EPWM模塊的應(yīng)用手冊中有說,增計數(shù)模式下,當(dāng)CMPA值大于周期值的時候,PWM波形將不會有任何變化;而CMPA值小于等于周期值的時候,PWM波形將隨著CMPA所設(shè)定的變化而改變,這里就解釋了為什么產(chǎn)生100%的占空比的波形CMPA值要大于周期值,而不能大于等于周期值。
產(chǎn)生0%的占空比,CMPA值需要等于0。開始計數(shù)時,同時產(chǎn)生兩種事件,計數(shù)值等于0的事件,置位PWM波形;計數(shù)值等于CMPA值的事件,復(fù)位PWM波形。兩種事件同時產(chǎn)生,但是由于計數(shù)值等于CMPA值事件的優(yōu)先級要高,所以開始的時候PWM波形是低電平,而計數(shù)下去,計數(shù)值永遠(yuǎn)都是在0的位置比較,而比較事件的優(yōu)先級要高于CTR=0的事件,所以PWM波形將一直都是低電平。
程序如下所示:
EPwm1Regs.TBPRD = 600; // 定時器周期601
EPwm1Regs.TBPHS.half.TBPHS = 0x0000; // 同步值
EPwm1Regs.TBCTR = 0; // 清除定時器計數(shù)
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // 定時器增減模式
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 同步脈沖裝載不使能
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; // 從鏡像裝載
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; // 關(guān)閉同步輸出
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // TB時鐘等于SYSCLK
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // 鏡像模式
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD; // 當(dāng)CTR=prd的時候裝載鏡像數(shù)據(jù)
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR; // 增計數(shù)下PWM波形清零
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; // 等于零的時候置位
EPwm1Regs.CMPA.half.CMPA = cnt; // 通過改變cnt的值來產(chǎn)生占空比變換的PWM波形
(3)、增減計數(shù)模式
占空比0%~100%
增減計數(shù)模式主要是用來產(chǎn)生對稱的PWM波形,如果在增計數(shù)模式下,產(chǎn)生占空比0%~100%變換的PWM波形,需要有如下設(shè)置:如果計數(shù)值在增計數(shù)時等于CMPA,置位PWM波形,如果在減計數(shù)時等于CMPA,復(fù)位PWM波形。當(dāng)計數(shù)值等于0的時候,CMPA陰影寄存器中的值賦值到活動寄存器中。CMPA等于0的時候產(chǎn)生占空比為100%的波形,CMPA等于或大于PRD的時候產(chǎn)生占空比為0%的波形。下面將對產(chǎn)生100%和0%的占空比做詳細(xì)的說明。
產(chǎn)生100%的占空比,CMPA等于0。計數(shù)值在增計數(shù)方向下,如果等于CMPA,置位PWM波形。開始計數(shù)時,計數(shù)值等于0,產(chǎn)生計數(shù)值等于CMPA事件,置位PWM波形,而且減計數(shù)下最后計數(shù)值等于1,不能和CMPA =0產(chǎn)生比較事件,也就不能清除PWM波形。所以產(chǎn)生100%占空比波形。
產(chǎn)生0%的占空比,CMPA等于或大于周期值。當(dāng)然開始計數(shù)時,PWM波形需要是低電平。計數(shù)值等于或大于PRD的時候,PWM波形按照CTR=RPD設(shè)置事件變化,而CTR=PRD沒有設(shè)置事件,所以PWM波形沒有任何變化,依然為低電平,即0%的占空比。
占空比0%~50%
使用增減計數(shù)模式產(chǎn)生占空比從50%~0%變化的不對稱PWM波形。CMPA陰影寄存器值在計數(shù)值等于周期值的時候賦值到活動CMPA寄存器。在計數(shù)值等于周期值的時候,復(fù)位PWM波形;增計數(shù)下,計數(shù)值和CMPA相等時,置位PWM波形。CMPA值等于0時,產(chǎn)生50%占空比波形,CMPA值等于PRD時,產(chǎn)生0%占空比波形。下面將對產(chǎn)生50%和0%的占空比做詳細(xì)的說明。
產(chǎn)生50%占空比,CMPA值等于0。開始計數(shù)為增計數(shù)方向,此時計數(shù)值0等于CMPA寄存器值0,置位PWM波形,繼續(xù)計數(shù),當(dāng)計數(shù)值等于周期值PRD的時候復(fù)位PWM波形,產(chǎn)生占空比為50%的波形。
產(chǎn)生0%占空比,CMPA值等于PRD。開始計數(shù)在0點(diǎn)沒有產(chǎn)生任何的事件,繼續(xù)計數(shù)當(dāng)計數(shù)值等于PRD的時候,根據(jù)EPWM用戶手冊中說到。當(dāng)CMPA值大于或者等于PRD的時候,產(chǎn)生計數(shù)值等于PRD的事件,即為清除PWM波形,PWM波形一直都為低電平,為0%占空比波形。
程序例程如下所示:
EPwm1Regs.TBPRD = 600; // 定時器周期601
EPwm1Regs.TBPHS.half.TBPHS = 0x0000; // 同步值
EPwm1Regs.TBCTR = 0; // 清除定時器計數(shù)
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // 定時器增減模式
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 同步脈沖裝載不使能
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; // 從鏡像裝載
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; // 關(guān)閉同步輸出
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // TB時鐘等于SYSCLK
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // 鏡像模式
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD; // 當(dāng)CTR=prd的時候裝載鏡像數(shù)據(jù)
EPwm1Regs.AQCTLA.bit.PRD = AQ_CLEAR; // 計數(shù)值等于PRD時清除PWM
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // 增計數(shù)下計數(shù)值等于CMPA置位PWM
EPwm1Regs.CMPA.half.CMPA = cnt; // 改變cnt的值,產(chǎn)生占空比50%~0%變化的波形
賦值方式
通過以上的敘述可以知道,CMPA有兩種賦值方式,1、計數(shù)值等于0的時候賦值;2、計數(shù)值等于PRD的時候賦值。兩種不同的賦值方式得到的效果也不同,但是只要掌握了變化要點(diǎn),就能解釋任何的PWM波形的變化。如果為增減計數(shù)模式下,產(chǎn)生對稱的PWM波形,不同的賦值方式,對CMPA值也有不同的要求。
如果CMPA在CTR等于0的時候賦值,那么CMPA的值必須大于或者等于1,否則不可能產(chǎn)生對稱的PWM波形。
如果CMPA在CTR等于RPD的時候賦值,那么CMPA的值必須小于或者等于PRD-1,否則不能產(chǎn)生對稱的PWM波形。
(4)、總結(jié)
由此可見,賦值方式的不同,會得到不同的效果,但是有一點(diǎn)可以理解的,不管什么樣的賦值方式,什么樣的置位復(fù)位模式,都必須要掌握EPWM模塊的特性,如事件優(yōu)先級,對稱不對稱PWM波形的產(chǎn)生方式等,只有這樣才能理解任意的PWM波形產(chǎn)生方法。
評論
查看更多