<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 使用HRPWM的注意事項

使用HRPWM的注意事項

作者:Ke, Shaoxing 時(shí)間:2023-10-20 來(lái)源:TI 收藏

摘要

本文引用地址:http://dyxdggzs.com/article/202310/451841.htm

隨著(zhù)新能源領(lǐng)域的發(fā)展, 在數字電源控制系統中要求功率密度高且轉換效率高。其中,整機功率密度的提升,就需要提高開(kāi)關(guān)頻率, 大部分現有產(chǎn)品的開(kāi)關(guān)頻率在50k~200kHz。然而, 由于SiC/GaN器件的大面積推廣與使用, 開(kāi)關(guān)頻率已經(jīng)提升到500kHz,甚至1MHz。當系統的開(kāi)關(guān)頻率超過(guò)200kHz時(shí),此時(shí)PWM脈寬的調節精度會(huì )變低, 這就需要使用高精度模式的PWM調制。我們把用于擴展傳統ePWM模塊的時(shí)間精度的模塊, 稱(chēng)之為高精度PWM(High resolution PWM)。本文將對C2000

片上模塊的工作原理、使用方法和注意事項進(jìn)行詳細討論,并以實(shí)際案例進(jìn)行展示。此外,模塊也可以作DAC輸出用來(lái)實(shí)現模擬信號的觀(guān)測。

1.高精度PWM的工作原理 ()

1.1 高精度PWM的MEP技術(shù)

C2000支持占空比、相移、死區和周期的高精度控制。HRPWM是在普通PWM模塊上采用微邊沿定位 (MEP, micro-edge positioner) 技術(shù)實(shí)現的。簡(jiǎn)單來(lái)說(shuō), 就是將一個(gè)計數周期再拆分為很多個(gè)小的MEP步長(cháng), 如下圖所示。 其中,MEP最小步長(cháng)是150ps。

pastedimage1678694396068v1.png-640x480.png

圖1 HRPWM的微邊沿定位MEP示意圖

計算舉例:如下圖所示(開(kāi)關(guān)頻率為1MHz),控制精度是由PWM的“計數器值”和“比較值”的來(lái)決定。F280013x的CPU頻率為120MHz,假設EPWM模塊時(shí)鐘為120MHz, 此時(shí)EPWM單個(gè)計數周期為8.3 ns,MEP步長(cháng)為150 ps。如此, 可將每一個(gè)計數周期再細分為8.3 ns / 150 ps = 55. 56份。如圖中單邊向上計數模式下, 開(kāi)關(guān)頻率為1MHz,則三角波載波周期為1 us, 計數周期TBPRD等于120。如果想實(shí)現10.15%的占空比,則邊沿時(shí)間的控制應當是 10.15 * 8.3 ns = 84.245 ns。此時(shí), 設定CMPA = 10 (83 ns),剩下的1.245ns(不足單個(gè)計數周期)應當由HRPWM模塊來(lái)實(shí)現, 也就是CMPA上再加上1.245 ns = 1245 ps = 150 ps * 8.3 ? 8個(gè)MEP步長(cháng)。

pastedimage1678694436770v2.png-640x480.png

圖2 單邊計數模式下的載波波形

其中,PWM分辨率的計算公式,如圖3所示。

pastedimage1678694447496v3.png-640x480.png

圖3 PWM的分辨率計算公式

圖4為不同開(kāi)關(guān)頻率下的PWM和HRPWM的分辨率。如下圖,當開(kāi)關(guān)頻率>250k,或者所要求的PWM分辨率>(9-10 bit)時(shí),系統則需要使用HRPWM模塊。

pastedimage1678694459330v4.png-640x480.png

圖4 PWM和HRPWM的分辨率算例表

1.2 高精度PWM的相關(guān)寄存器

高精度PWM相關(guān)的寄存器,如CMPAHR/CMPBHR、TBPHSHR、TBPRDHR、DBREDHR和DBFEDHR,以及HRPWM的時(shí)鐘輸入與配置,如圖5和圖6所示。HRPWM高精度寄存器作用位置是在A(yíng)Q子模塊之后,由此不會(huì )影響AQ執行邊沿動(dòng)作。

pastedimage1678694473706v5.png-640x480.png

圖5 HRPWM的相關(guān)的寄存器

pastedimage1678694488991v6.png-640x480.png

圖6 HRPWM的相關(guān)的寄存器作用位置

pastedimage1678694503338v7.png-640x480.png

圖7 HRPWM的時(shí)鐘輸入與配置

其中,需要注意的是CMPAHR寄存器只會(huì )影響Channel A,它跟CMPA沒(méi)有任何必然關(guān)系;CMPBHR寄存器只會(huì )影響Channel B,它跟CMPB沒(méi)有任何必然關(guān)系。同時(shí), CMPAHR和CMPBHR分別可以作用在上升沿、下降沿和上升/下降沿。如下圖寄存器的說(shuō)明可知, 如果僅配置CMPAHR寄存器值, 而Channel B上通過(guò)死區模塊由PWMxA極性翻轉而來(lái), Channel B 上則不會(huì )產(chǎn)生高精度的PWM波形。若需要Channel A和Channel B都需要高精度模式, 此時(shí)需要將CMPAHR 與CMPBHR賦予相同的值,從而產(chǎn)生正確的PWM波形,如圖8所示。

pastedimage1678694519448v8.png-640x480.png

圖8 HRPWM的CMPAHR/CMPBHR寄存器說(shuō)明

1.3 高精度PWM的CMPAHR/CMPBHR寄存器計算

以F28004x/F28003x為例,CMPAHR的算例及計算過(guò)程如下圖9所示。分別針對不同CMPAHR和CMPBHR上升沿REP (Rising Edge Position) 、下降沿FEP (Falling Edge Position) 和上升/下降沿BEP (Both Edge Position) 的作用示例。

pastedimage1678694534186v9.png-640x480.png

圖9 HRPWM的CMPAHR算例

CMPAHR和CMPBHR上升沿REP作用示例, 如圖10:

pastedimage1678694548775v10.png-640x480.png

圖10

CMPAHR和CMPBHR下降沿FEP作用示例,如圖11:

pastedimage1678694561155v11.png-640x480.png

圖11

CMPAHR和CMPBHR上升/下降沿BEP作用示例,如圖12:

pastedimage1678694574082v12.png-640x480.png

圖12

1.4 創(chuàng )建和配置高精度PWM的工程項目

1)創(chuàng )建Driverlib的工程項目

Step1:添加 "Include" Files: #include "sfo_v8.h" 以及所對應的庫文件SFO_lib

Step2:聲明Variable Declarations:

        uint16_t status = SFO_INCOMPLETE;

        uint32_t MEP_ScaleFactor = 0; //scale factor value

        volatile uint32_t ePWM[(PWM_CH + 1)] = {0, EPWM1_BASE, EPWM2_BASE};

Step3:縮放因子初始化MEP_ScaleFactor Initialization:

while(status == SFO_INCOMPLETE)

    {

        status = SFO();

        if(status == SFO_ERROR)

        {

            //

            // SFO function returns 2 if an error occurs & # of MEP

            // steps/coarse step exceeds maximum of 255.

            //

            error();

        }

    }

Step4:增加用戶(hù)代碼并配置對應的寄存器如CMPAHR

void main ()

   {

    int status;

    // User code

    // ePWM1, 2, 3, 4 are running in HRPWM mode

    // The status variable returns 1 once a new MEP_ScaleFactor has been

    // calculated by the MEP Calibration Module running SFO

    // diagnostics.

status = SFO ();

for(;;)

{

    if(test_ctr < 256)
        {
            HRPWM_setCounterCompareValue(ePWM[1], HRPWM_COUNTER_COMPARE_A, (0x2000 + test_ctr));
            test_ctr++;

        }
        else
        {
            test_ctr = 0;
        }

    if(status == SFO_ERROR)

    {

     //

     // SFO function returns 2 if an error occurs & # of

     // MEP steps/coarse step exceeds maximum of 255.

     //

     error();

}

}

   }

2)Bit-field按寄存器創(chuàng )建的工程

Step1:添加 "Include" Files: #include "sfo_v8.h"以及所對應的庫文件SFO_lib

Step2:聲明Variable Declarations:

        Uint16 status = SFO_INCOMPLETE;

        int MEP_ScaleFactor = 0; //scale factor value

        volatile struct EPWM_REGS *ePWM[] = {0, &EPwm1Regs, &EPwm2Regs};

Step3:縮放因子初始化MEP_ScaleFactor Initialization:

同上。

Step4:增加用戶(hù)代碼并配置對應的寄存器如CMPAHR

同上。

1.5 測試工程與PWM波形

pastedimage1678694603020v13.png-640x480.png


pastedimage1678694608421v14.png-640x480.png

2. 高精度PWM的注意事項

2.1 高精度PWM的Dead Band半個(gè)TBCLK計數周期生效

如下Note提示, 死區的高精度模式控制僅在半個(gè)TBCLK計數周期生效, 如下計算公式可知, 若CPU主頻直接分頻給到EPWM時(shí)鐘,即TBCLK 為100MHz,也就是10ns, 此時(shí)DBREDHR和DBFEDHR寄存器僅在5ns計數周期生效, 這也是為了進(jìn)一步保證高精度死區的生成。

pastedimage1678694624089v15.png-640x480.png

pastedimage1678694628258v16.png-640x480.png



pastedimage1678694633147v17.png-640x480.png


pastedimage1678694717354v21.png-640x480.png

2.2 高精度PWM的Dead Band高精度僅在雙邊計數Up-Down模式生效

如下Note提示, 死區的高精度模式控制僅在Up-Down計數模式下生效, 這主要是由于HRPWM的Duty占空比高精度模式控制限制所造成的。HRPWM在前三拍和后三拍是無(wú)效的,此時(shí)若想生成0%占空比可由普通PWM生成。硬件上不允許單邊計數模式下實(shí)現占空比的高精度模式控制。

pastedimage1678694740023v23.png-640x480.png

2.3 Up-Down模式下高精度PWM的寄存器加載時(shí)刻僅Zero-Period生效

如下Note提示, 雙邊計數Up-Down模式下高精度控制影子寄存器加載僅在ZERO AND PERIOD生效, HRPWM模塊在過(guò)周期處用于內部特殊邏輯計算而不進(jìn)行加載。單邊計數Up模式無(wú)此限制要求。此外單邊Down模式下是不支持高精度HRPWM操作。

pastedimage1678694757001v24.png-640x480.png

3.結論

高精度模式的控制實(shí)現與普通PWM配置有差異,總結來(lái)說(shuō)有以下幾點(diǎn):1.CMPAHR負責Channel A上的高精度控制, CMPBHR負責Channel B上的高精度控制;2. HRPWM寄存器的生效時(shí)刻需要注意;3. 死區和占空比高精度實(shí)現的模式會(huì )對計數方式有要求;4. 單獨某一個(gè)Channel A上實(shí)現高精度會(huì )造成另外Channel B上的影響,不過(guò)僅±1 TBCLK;5. HRPWM高精度模式控制最高分辨率150ps, 可實(shí)現占空比Duty、死區DBREDHR和DBFEDHR、相移TBPHSHR和周期值TBPRDHR的高精度模式控制。以上不限于為高精度模式的使用與注意事項。



關(guān)鍵詞: HRPWM TI

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>