總結一下28027的PWM模塊。
28027包含PWM1,PWM2,PWM3,PWM4四個PWM模塊,所有的PWM模塊的寄存器結構都一樣,唯一的區別就是同步時的操作順序不一樣。
PWM模塊可以分為時基(Timer base),計數器比較(Counter Compare),PWM波形發生器(Action Qualifer),死區設置(Dead Band),高頻PWM斬波(PWM chopper),錯誤處理(Trip Zone) , 事件觸發及中斷(Event Trigger and Interrupt)等子模塊組成,基本框圖如下。
下面按照文檔SPRUGE9E的順序逐個來看這些子模塊:
1. 時間基准
這個模塊的作用就是產生三個信號,
CTR=PRD 計數寄存器的值等於周期寄存器時,產生的脈沖序列
CTR=0 計數寄存器的值等於0時,產生的脈沖序列
CTR-DIR 表示計數方向,計數器向上計數時常為1;向下計數時常為0,向上計數到Period后向下到0(up-down)則為1-0交替。
另外這個模塊能接受上個PWM模塊發來的同步信號,並向下一個PWM模塊發送同步信號。
TBCTL設置項如下:
計數模式(up,down,up-down),
同步使能(收到同步信號時是否加載相位寄存器的值到計數寄存器),
周期寄存器的操作方式(直接讀寫 或先寫入 shadow寄存器然后在某時刻加載到周期寄存器)
同步信號輸出觸發方式
軟件同步
分頻系數(設置PWM模塊的時鍾頻率)
同步后計數方向設置(在up-down計數模式時,設置同步后的計數方向,其他模式下,該設置無效)
仿真時PWM計數設置
TBSTS PWM狀態寄存器
TBPHS 相位寄存器 (僅在同步時用到)
TBCTR 計數寄存器
TBPRD 周期寄存器
其他寄存器在高分辨率的PWM時才用到,現在先不管
PWM模塊同步可以理解為 多個周期相等的PWM模塊發出PWM信號時,計數器的值相等或保持固定的差值。這個在做空間矢量電壓時很重要。
28027的同步過程如下圖:
PWM1可以接受外部的同步信號,然后發出一個同步信號給PWM2,同樣PWM2生成一個同步信號給PWM3 。。。
只有PWM1可以接受外部的同步信號(引腳名 EPWM1SYNCI),其他PWM模塊可以接受上一個模塊的同步信號。
每個PWM模塊都能發出同步信號給下一個模塊,具體設置在TBCTL寄存器(SYNCOSEL)。(00 - 輸入同步信號觸發; 01- CTR=0 觸發; 10 -CTRCMPB 觸發;11- 禁止發出同步信號)
時間基准模塊有幾個設置實例的時序圖,這里選了一個。其中在PWM模塊收到同步信號時,計數寄存器將加載相位寄存器的值。
2. 計數比較模塊
這個模塊的作用就是將比較寄存器CMPA,CMPB的值與前面的計數寄存器TBCTR 進行比較,生成CTR=CMPA和CTR=CMPB兩個脈沖序列信號。
這個模塊的相關寄存器如下
CMPCTL 可以設置CMPA,CMPB的從shadow加載
CMPA,CPMB 16位數值寄存器
3. PWM波形發生器 (Action Qualifier)
該模塊產生兩路PWM波 :PWMA,PWMB。
前面生成的 CTR=CMPA, CTR=CMPB CTR=PRD,CTR=0,來決定PWMA和PWMB,什么時候是1,什么時候是0,或者什么時候翻轉
相關寄存器如下:
AQCTLA 設置PWMA在 CTR=CMPA(上升沿,下降沿), CTR=CMPB(上升沿,下降沿), CTR=PRD,CTR=0時分別進行什么操作(清0;置1;翻轉 或 Do nothing)
AQCTLB 設置PWMB在 CTR=CMPA(上升沿,下降沿), CTR=CMPB(上升沿,下降沿), CTR=PRD,CTR=0時分別進行什么操作(清0;置1;翻轉 或 Do nothing)
AQSFRC 設置單次軟件觸發,以及軟件觸發對 PWMA PWMB的影響。
AQCSFRC 連續軟件觸發對PWMA PWMB的影響。(編者注:不知道連續軟件觸發是怎么產生的,單次軟件觸發可以在AQSFRC里面設置。)
4. 死區設置
設置死區,可以方便地生成兩路互補或一樣的PWM波形。
相關寄存如下圖
DBCTL設置上圖中的六個開關,在s0,s1都為0時,死區設置無效;s0,s1 = 1,1,s4,s5=0,0,則EPWMxB無效,可以由EPWMxA生成兩路一樣或互補的PWM。
DBRED,DBFED設置上升沿和下降沿的滯后時間。
5. PWM斬波
斬波部分只有一個控制寄存器,就不多說,反正我用不到,也不知道哪里會需要用到這個。
大致的功能如下圖,將輸入的PWM波形的與高頻信號PCLK(接近於時間頻率,該信號的占空比可在([1,7]/8)范圍內調整)疊加。
、
6.錯誤處理(Trip-zone)
按照文檔上的說明,這個模塊是根據TZ1-6信號(可以是外部信號,也可以在內部產生)來控制PWM的行為。可以用來做過流保護,電流限制等等
TZSEL 選擇TZ信號(DCAEVT1/2, DCBEVT1/2 , TZ1-6) (One shot 和 cycle by cycle兩種模式 )
TZDCTL 設置TZ信號對應的操作 (置1,清零, 高阻,Do nothing)
TZDCSEL 設置產生數字比較器事件的條件
TZEINT 對應信號的中斷使能
TZFLG TZ 觸發標志
TZCLR TZ觸發標志清零
TZFRC 軟件觸發TZ事件
7.事件觸發(Event-Trigger)
事件觸發模塊產生 EPWMxINT EPWMxSOCA EPWMxSOCB 三個信號,可以用來觸發AD轉換
ETSEL 使能並選擇事情觸發源
ETPS 選擇分頻系數(1;1/2;1/3)
ETFLG 事件觸發狀態標識
ETCLR 清除狀態標識
ETFRC 軟件觸發對應是事件