你的位置:首頁 > 電源管理 > 正文

                                        使用HRPWM的注意事項

                                        發布時間:2023-04-12 來源:TI 責任編輯:wenwei

                                        【導讀】隨著新能源領域的發展, 在數字電源控制系統中要求功率密度高且轉換效率高。其中,整機功率密度的提升,就需要提高開關頻率, 大部分現有產品的開關頻率在50k~200kHz。然而, 由于SiC/GaN器件的大面積推廣與使用, 開關頻率已經提升到500kHz,甚至1MHz。當系統的開關頻率超過200kHz時,此時PWM脈寬的調節精度會變低, 這就需要使用高精度模式的PWM調制。我們把用于擴展傳統ePWM模塊的時間精度的模塊, 稱之為高精度PWM(High resolution PWM)。本文將對C2000TM片上HRPWM模塊的工作原理、使用方法和注意事項進行詳細討論,并以實際案例進行展示。此外,HRPWM模塊也可以作DAC輸出用來實現模擬信號的觀測。


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


                                        1.1 高精度PWM的MEP技術


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


                                        1678783452768339.png

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


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


                                        19.png

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


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


                                        1678783429848401.png

                                        圖3 PWM的分辨率計算公式


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


                                        1678783414487719.png

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


                                        1.2 高精度PWM的相關寄存器


                                        高精度PWM相關的寄存器,如CMPAHR/CMPBHR、TBPHSHR、TBPRDHR、DBREDHR和DBFEDHR,以及HRPWM的時鐘輸入與配置,如圖5和圖6所示。HRPWM高精度寄存器作用位置是在AQ子模塊之后,由此不會影響AQ執行邊沿動作。


                                        1678783399537454.png

                                        圖5 HRPWM的相關的寄存器


                                        1678783388617348.png

                                        圖6 HRPWM的相關的寄存器作用位置


                                        23.png

                                        圖7 HRPWM的時鐘輸入與配置


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


                                        1678783364939693.png

                                        圖8 HRPWM的CMPAHR/CMPBHR寄存器說明


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


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


                                        1678783345281769.png

                                        圖9 HRPWM的CMPAHR算例


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


                                        1678783330277070.png

                                        圖10


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


                                        1678783316748691.png

                                        圖11


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


                                        1678783301664195.png圖12


                                        1.4 創建和配置高精度PWM的工程項目


                                        1)創建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:增加用戶代碼并配置對應的寄存器如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按寄存器創建的工程


                                        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:增加用戶代碼并配置對應的寄存器如CMPAHR


                                        同上。


                                        1.5 測試工程與PWM波形


                                        1678783279955127.png

                                        30.png


                                        2. 高精度PWM的注意事項


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


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


                                        1678783258252742.png

                                        1678783247880272.png

                                        1678783236119528.png

                                        1678783224298581.png


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


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


                                        1678783206133328.png

                                        1678783194557553.png


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


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


                                        1678783175102484.png


                                        3.結論


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


                                        參考文獻


                                        [1] TMS320x280x, 2801x, 2804x High Resolution Pulse Width Modulator HRPWM


                                        [2] High Resolution PWM (HRPWM) Extension to ePWM Reference Guide


                                        [3] TMS320F280013x Real-Time Microcontrollers Technical Reference Manual. -spruix1


                                        [4] TMS320F28003x Real-Time Microcontrollers Technical Reference Manual. - spruiw9a


                                        [5] TMS320F28004x Real-Time Microcontrollers Technical Reference Manual. -SPRUI33D


                                        來源:TI

                                        作者:Ke, Shaoxing



                                        免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯系小編進行處理。


                                        推薦閱讀:


                                        使用C2000內部比較器替外部比較器

                                        一種用于戶外電源電池管理系統的冗余設計

                                        TJA1043收發器信息梳理

                                        電源模塊的本手與應用妙手

                                        無刷直流電機及其驅動:設計考慮因素和挑戰

                                        特別推薦
                                        技術文章更多>>
                                        技術白皮書下載更多>>
                                        熱門搜索
                                        ?

                                        關閉

                                        ?

                                        關閉

                                        国产精品亚洲АV无码播放|久久青青|老熟妇仑乱视频一区二区|国产精品经典三级一区|亚洲 校园 春色 另类 激情