1. 程式人生 > >F28335 ePWM計數模組(CC)與 動作模組(AC)及其暫存器配置 ————TMS320F28335學習筆記(六)

F28335 ePWM計數模組(CC)與 動作模組(AC)及其暫存器配置 ————TMS320F28335學習筆記(六)

1 計數比較模組
1.1 計數比較模組作用

計數比較模組是以時基計數器的值作為輸入,與比較暫存器CMPA和CMPB不斷進行比較的,當時基計數器的值等於其中之一時,就會產生相應的事件。
F28335就是通過對比這些值,來產生事件,與動作模組AC相配合來調節PWM的佔空比以及頻率。

補充:採用影子暫存器來更新比較值CMPA和CMPB 能夠有效的防止在PWM週期內出現故障以及毛刺。

1.2 計數比較模組的關鍵訊號

  • CTR=CMPA 時基計數器的值等於CMPA的值
  • CTR=CMPB 時基計數器的值等於CMPB的值
  • CTR=0 時基計數器的值等於0
  • CTR=TBPRD 時基計數器的值等於週期暫存器的值

1.3 計數比較模組的特點

  • 計數比較模組需要產生兩個獨立的比較事件,才能產生PWM波

對於向上遞增或者向下遞減計數模式來說,在一個PWM週期內,CTR和CMPA和CMPB比較事件只發生一次,所以就需要和0或PRD相對比。而增減模式,CTR和CMPA和CMPB比較事件發生兩次,更加靈活。

  • 計數比較模組需要與動作模組AC相互配合

以上每個關鍵訊號的到來,都可以產生一個動作訊號,這個動作訊號可以是置高和置低,我們在設定的時候,靈活運用就可以產生不同的PWM。

1.4 計數比較器暫存器配置

計數比較暫存器 A與計數比較器B
在這裡插入圖片描述
在這裡插入圖片描述
配置方式:直接賦值

     EPwm1Regs.CMPA.half.CMPA = 500;
     EPwm1Regs.CMPB = 0;

計數比較控制暫存器

在這裡插入圖片描述

在這裡插入圖片描述

採用影子暫存器來更新比較值CMPA和CMPB 能夠有效的防止在PWM週期內出現故障以及毛刺。
一般對計數控制暫存器的配置主要是配置好影子暫存器。
配置方式:

EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;    //CMPA影子裝載模式
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;    //CMPB影子裝載模式
EPwm1Regs.CMPCTL.bit.
LOADAMODE = CC_CTR_ZERO; //CTR=0 影子暫存器A裝載 EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; //CTR=0 影子暫存器B裝載

2 動作模組 AC
2.1 動作模組的作用
動作模組在PWM波形形成過程中起到關鍵作用,它決定了相應事件發生時間時應該輸出什麼電平。

  1. 根據計數比較器模組的關鍵訊號(CTR=0,CMPA,CMPB和PRD)產生動作(置高,拉低,翻轉)
  2. 管理以上事件發生後PWM的輸出極性
  3. 針對時基計數器遞增或者遞減時提供獨立的動作控制。

2.2 動作模組的關鍵訊號
動作模組的關鍵訊號就是計數比較暫存器和時基暫存器的比較結果,還有軟體的強制訊號software forced event

  • CTR=CMPA 時基計數器的值等於CMPA的值
  • CTR=CMPB 時基計數器的值等於CMPB的值
  • CTR=0 時基計數器的值等於0
  • CTR=TBPRD 時基計數器的值等於週期暫存器的值
  • 軟體強制訊號 由AQSFRC和 AQCSF兩個暫存器處理。

2.3 動作模組事件的優先順序
動作模組區別於其他模組的一個很大特性就是它具有優先順序。
這是因為動作模組在同一時刻有可能會收到2個到2個以上的事件,這個就需要優先順序控制他的動作順序。
增減模式下優先順序表
在這裡插入圖片描述
增計數模式下優先順序表
在這裡插入圖片描述
減計數模式下優先順序表
在這裡插入圖片描述

2.4 動作模組暫存器的配置

動作控制暫存器
在這裡插入圖片描述
在這裡插入圖片描述
**配置方式:**根據不同的計數比較器的訊號來輸出動作

如下是一個增計數模式下,AQCTL的配置

EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;                 // CTR上升至CMPA值 置1 ePWMA輸出高
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;               // CTR下降至CMPA值 置0 ePWMA輸出低
EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;                 // CTR上升至CMPB值 置1 ePWMB輸出高
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;               // CTR下降至CMPB值 置0 ePWMB輸出低

3 典型的波形配置例子
以下的程式內只包括計數模式暫存器,計數比較器暫存器和動作控制暫存器這三個關鍵點的程式碼
3.1 單邊不對稱波形

EPwm1Regs.TBCTL.bit.CTRMODE=TB_UP;           //計數模式

EPwm1Regs.TBPRD = 1000;
EPwm1Regs.CMPA.half.CMPA = 500;
EPwm1Regs.CMPB = 200;

EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR;                 // CTR=0 置0 ePWMA輸出低
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;               // CTR上升至CMPA值 置1 ePWMA輸出高
EPwm1Regs.AQCTLB.bit.ZRO = AQ_CLEAR;                 // CTR=0 置0 ePWMB輸出低
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;               // CTR上升至CMPB值 置1 ePWMB輸出高

在這裡插入圖片描述

3.2 雙邊對稱波形


EPwm1Regs.TBCTL.bit.CTRMODE=TB_UP_DOWN;           //計數模式

EPwm1Regs.TBPRD = 1000;
EPwm1Regs.CMPA.half.CMPA = 200;
EPwm1Regs.CMPB = 500;

EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;                 // CTR上升至CMPA值 置1 ePWMA輸出高
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;               // CTR減少至CMPA值 置0 ePWMA輸出低
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;                 // CTR上升至CMPB值 置1 ePWMB輸出高
EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR;               // CTR減少至CMPB值 置1 ePWMB輸出低

在這裡插入圖片描述

3.3 雙邊沿不對成波形

EPwm1Regs.TBCTL.bit.CTRMODE=TB_UP_DOWN;           //計數模式

EPwm1Regs.TBPRD = 1000;
EPwm1Regs.CMPA.half.CMPA = 400;
EPwm1Regs.CMPB = 800;

EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;               // CTR上升至CMPA值 置1 ePWMA輸出高
EPwm1Regs.AQCTLA.bit.CBD = AQ_CLEAR;             // CTR減少至CMPB值 置0 ePWMA輸出低
EPwm1Regs.AQCTLB.bit.ZRO = AQ_CLEAR;             // CTR=0  置0 ePWMB輸出低
EPwm1Regs.AQCTLB.bit.PRD = AQ_SET;               // CTR=PRD值 置1 ePWMB輸出高

在這裡插入圖片描述