數(shù)字控制芯片dsPIC33C的PWM運(yùn)行模式簡(jiǎn)析
掃描二維碼
隨時(shí)隨地手機(jī)看文章
dsPIC33C系列芯片的PWM功能較以往更復(fù)雜,功能更加靈活,PWM的工作模式上和以往芯片也有一些不同之處,由于篇幅所限,本文側(cè)重分析一下PWM模塊運(yùn)行模式的分類及特性。
一.PWM運(yùn)行模式概述
圖1 PWM的運(yùn)行模式分類
從圖1上看,PWM的工作模式主要有幾種,如獨(dú)立邊沿PWM模式,這也是默認(rèn)設(shè)置的工作模式,變相位PWM模式,獨(dú)立邊沿PWM雙輸出模式,中心對(duì)齊模式,雙更新中心對(duì)齊模式,雙邊沿中心對(duì)齊模式等六種,其中后三種都是和中心對(duì)齊模式有關(guān)的模式。在這些PWM工作模式中,值得注意的是,有些模式采用多個(gè)PWM的計(jì)數(shù)器周期去產(chǎn)生單個(gè)PWM周期。
圖2 PWM控制寄存器Low
圖3 PWM控制寄存器Low中的模式選擇位
在配置PWM的工作模式中,首先通過圖2,3所示的寄存器配置PWM運(yùn)行模式。
二.獨(dú)立邊沿PWM模式
獨(dú)立邊沿的PWM模式,用于產(chǎn)生邊沿對(duì)齊的PWM信號(hào),或者產(chǎn)生任意相位偏移的PWM信號(hào),需要兩個(gè)獨(dú)立的寄存器去定義PWM波形的上升沿和下降沿位置。具體來說,通過PGxPHASE去定義PWM信號(hào)的上升沿位置相對(duì)于PWM周期計(jì)數(shù)器的起點(diǎn)的位置,而PGxDC用于定義相對(duì)于PWM周期計(jì)數(shù)器起點(diǎn),到PWM波形下降沿的位置。PGxPER用于確定PWM計(jì)數(shù)器的周期。
另外,除了可以設(shè)定單個(gè)的PWM波形為獨(dú)立邊沿模式,還可以通過PGxPHASE寄存器來設(shè)定多個(gè)PWM信號(hào)之間同步,只要將PGxPHASE值設(shè)為相同值即可。
另外,還有一些特殊情況,比如當(dāng)PGxPHASE=PGxDC時(shí),則PWM脈沖占空比為0,而當(dāng)設(shè)為PGxDC>PGxPER時(shí),則PWM脈沖的占空比為100%。
圖4 獨(dú)立邊沿PWM模式的波形示例
通過圖4所示的獨(dú)立邊沿PWM模式波形示例,可以看出PGxPHASE和PGxDC都是基于同一個(gè)起點(diǎn)開始計(jì)算,就是PWM周期計(jì)數(shù)器的起點(diǎn),所以PHASE設(shè)置會(huì)占用脈寬大小的部分。
三.變相位PWM模式
變相位PWM模式,它和獨(dú)立邊沿PWM模式不同,其中一個(gè)寄存器決定從PWM周期計(jì)數(shù)器起點(diǎn)開始計(jì)算的相位偏移的寬度,另一個(gè)寄存器決定從相位偏移開始計(jì)算的脈沖寬度。
圖5 變相位模式的SFR和波形關(guān)系
這種模式下,PGxPHASE決定相位偏移寬度,而PGxDC決定脈沖寬度,PGxPER決定PWM的周期。當(dāng)用戶希望固定脈寬,來調(diào)制相位偏移時(shí),或者固定相位偏移,來調(diào)制脈寬時(shí),則這種模式比較有用。
圖6 變相位的PWM模式波形示例
從圖6的變相位PWM模式的波形示例來看,PGxPHASE對(duì)相位偏移的設(shè)定并不占用PGxDC對(duì)脈寬的設(shè)定部分,二者是獨(dú)立的。
在使用變相位模式時(shí),可以通過MDC去對(duì)所有PWM的脈寬進(jìn)行統(tǒng)一設(shè)定。但是也要注意一個(gè)問題,就是變相位PWM模式并不支持跨周期運(yùn)行的情況,也就是說PGxPHASE+PGxDC一定要小于PGxPER這樣的關(guān)系。
圖7 多個(gè)PWM使用變相位模式波形示例
在圖7中,PWM1-4都是用變相位模式,四個(gè)PWM設(shè)置相同的脈寬值,但是設(shè)定為了不同的相位偏移,注意此處是滿足PGxPHASE+PGxDC小于PGxPER這個(gè)關(guān)系的。
四.雙PWM輸出模式
雙PWM輸出模式,即在PWMxH和PWMxL上都輸出獨(dú)立的PWM波形。PWM雙輸出模式和PWM獨(dú)立邊沿模式不同,它允許在第二個(gè)PWM pin上輸出波形,且在獨(dú)立模式下。
第二個(gè)PWM的輸出信號(hào)的上升沿寬度是由PGxTRIGA決定,而下降沿寬度由PGxTRIGB決定,另外一點(diǎn)需要注意的是,在高分辨率模式下,PWM雙輸出模式不能和PWM互補(bǔ)輸出模式一起使用。(關(guān)于PWM的I/O輸出模式,我們后面進(jìn)一步討論)。
圖8 PWM雙輸出模式波形示例
在PWM雙輸出模式中,注意PGxTRIGA和PGxTRIGB都是基于PWM周期計(jì)數(shù)器起點(diǎn)開始計(jì)算寬度的。
值得注意的是,在雙輸出模式下,PGxTRIGA,PGxTRIGB作為正常的事件輸出信號(hào)還是正常工作的,比如相位偏移觸發(fā),或者ADC觸發(fā)信號(hào)等,如果需要一個(gè)純粹的信號(hào)去做觸發(fā)功能,可以選擇PGxTRIGC來使用。
五.中心對(duì)齊PWM模式
中心對(duì)齊PWM模式,和邊沿對(duì)齊模式PWM不同,它可以避免PWM占空比不同時(shí),上升沿或者下降沿重疊,因此導(dǎo)致紋波或者濾波的需求,因此,在一些場(chǎng)合如逆變器中有所用途。
中心對(duì)齊模式PWM的脈寬是對(duì)稱于兩個(gè)PWM周期計(jì)數(shù)器的,當(dāng)占空比增加時(shí),則上升沿和下降沿部分都在增加,以保持對(duì)稱。基于這個(gè)概念,中心對(duì)齊模式PWM脈沖波形是由兩個(gè)PWM周期計(jì)數(shù)周期組成。
圖9 中心對(duì)齊PWM模式的SFR和波形的關(guān)系
中心對(duì)齊PWM模式采用PGxDC決定從兩個(gè)PWM周期中間開始計(jì)算的脈沖寬度,即真實(shí)脈寬的一半,而PGxPER決定每一個(gè)PWM周期計(jì)數(shù)器的周期。
圖10 中心對(duì)齊PWM模式的波形示例
中心對(duì)齊PWM的上升沿位置在PGxPER-PGxDC+1處,而下降沿位置在PGxDC處。值得注意的是更新PWM的buffer寄存器,如PGxDC或者PGxPER等,只能在第一個(gè)PWM周期計(jì)數(shù)器開始處更新,這一點(diǎn)可以通過判斷CAHALF位來判定是否處于第一個(gè)PWM計(jì)數(shù)周期處,當(dāng)CAHALF為0時(shí)為第一個(gè)PWM計(jì)數(shù)周期,CAHALF為1時(shí)為第二個(gè)PWM計(jì)數(shù)周期。
另外一點(diǎn),從圖上可以看出,EOC中斷事件,是在兩個(gè)PWM計(jì)數(shù)周期結(jié)束后才產(chǎn)生的。
六.雙更新中心對(duì)齊PWM模式
雙更新中心對(duì)齊模式,和普通的中心對(duì)齊模式是類似的,只不過有兩次EOC中斷,和兩次PWM數(shù)據(jù)寄存器更新。雙更新的好處是減小的環(huán)路處理延時(shí),但是有可能造成脈寬波形不對(duì)稱。
圖11 雙更新中心對(duì)齊PWM模式
七.雙邊沿的中心對(duì)齊PWM模式
雙邊沿的中心對(duì)齊PWM模式,和雙更新的PWM中心對(duì)齊模式類似,在雙邊沿中心對(duì)齊模式中,允許對(duì)上升沿寬度和下降沿部分寬度做相應(yīng)控制,這同樣會(huì)造成波形的不對(duì)稱性。
這個(gè)模式的特點(diǎn)就是,給預(yù)用戶足夠的靈活性,增加了對(duì)兩個(gè)邊沿的控制之外,還可以減小中斷事件的頻率。
圖12 雙邊沿的中心對(duì)齊PWM模式寄存器和波形關(guān)系
具體來說,通過PGxPHASE來實(shí)現(xiàn)對(duì)上升沿部分脈沖寬度的控制,通過PGxDC來實(shí)現(xiàn)對(duì)下降沿部分脈沖寬度的控制。
有一個(gè)非常靈活之處,就是在雙邊沿中心對(duì)齊PWM模式中,用戶可以設(shè)置為單更新模式,也可以設(shè)置為雙更新模式。單更新模式就是說,用戶隨時(shí)在允許改寫寬度的階段去改寫PGxPHASE或者PGxDC,而在下一個(gè)完整PWM周期初始處去更新之。
圖13 雙邊沿中心對(duì)齊PWM模式---單更新模式
如圖13所示,我們可以看出,在PWM周期中改寫了PGxDC和PGxPHASE的值,然后在下一個(gè)周期中才進(jìn)行更新數(shù)據(jù)Buffer。同時(shí),EOC中斷事件也是每一個(gè)完整PWM信號(hào)周期中斷一次。
和單更新對(duì)應(yīng)的,就是雙更新模式,在這個(gè)模式中,對(duì)應(yīng)每一個(gè)PWM計(jì)數(shù)周期都有一個(gè)EOC事件中斷,也有一個(gè)PWM數(shù)據(jù)更新。
圖14 雙邊沿中心對(duì)齊PWM模式---雙更新模式
在雙更新的模式中,注意改寫和更新的時(shí)刻,在上升沿PWM計(jì)數(shù)周期初始時(shí)刻,只能更新PGxPHASE的值,而在下降沿PWM計(jì)數(shù)周期初始時(shí)刻,只能更新PGxDC的值,用戶可以用CAHALF來決定合適的寄存器改寫時(shí)刻,比如,在CAHALF=0時(shí),前面的一個(gè)PWM計(jì)數(shù)周期中,只能改寫PGxDC的值,然后在后面的一個(gè)PWM計(jì)數(shù)周期初始時(shí)刻更新。而在CAHALF=1時(shí),后面的一個(gè)PWM計(jì)數(shù)周期中,只能改寫PGxPHASE的值,然后在第一個(gè)PWM計(jì)數(shù)周期初始時(shí)刻更新。每一個(gè)PWM計(jì)數(shù)周期結(jié)束后,都會(huì)進(jìn)行EOC中斷??偟恼f來,就是說先寫入,然后在下一個(gè)PWM計(jì)數(shù)周期初始更新。
總結(jié),主要分析和總結(jié)dsPIC33C系列的PWM工作模式的一些細(xì)節(jié),后續(xù)我們會(huì)進(jìn)一步討論與運(yùn)行模式相關(guān)的PWM的I/O輸出模式的配置。





