單脈沖輸出模式是定時器比較輸出應(yīng)用中的一種特殊情況或者特殊應(yīng)用,是一種特殊的PWM輸出模式。既然這么說,要想了解單脈沖模式話題,我們就有必要先對比較輸出功能,尤其是PWM輸出模式有所了解。
比較輸出【Compare Output】功能:定時器通過對預(yù)設(shè)的比較值與計數(shù)器的值做匹配比較之后,依據(jù)比較結(jié)果結(jié)合相應(yīng)的輸出模式從而實現(xiàn)各類輸出。如PWM輸出、電平翻轉(zhuǎn)、單脈沖輸出、強制輸出等。一般來講,STM32的通用定時期和高級定時器都具有輸入捕獲、比較輸出功能,不同的定時器可能通道數(shù)量上有差異。
這里提到的比較值就是指放在CCR寄存器中的值,計數(shù)器的值當(dāng)然就是CNT寄存器的值。一般來講,在計數(shù)過程中,CNT寄存器的值往往是連續(xù)動態(tài)變化并呈現(xiàn)周期性,其變化規(guī)律跟我們設(shè)置的計數(shù)器的計數(shù)模式有關(guān),比如向上計數(shù)模式、向下計數(shù)模式或者中心對齊計數(shù)模式等。這里的比較結(jié)果無非三種情況:
圖[1]
①CCR = CNT ②CCR > CNT ③CCR < CNT
那輸出模式呢?基本的比較輸出模式有3種:【這里是說的基本的,有些STM32系列的定時器輸出模式已做了拓展】
1、強制輸出模式;
2、匹配輸出模式
3、PMW輸出模式
圖[2]
結(jié)合上表我們不難看出:
強制輸出模式;無視比較結(jié)果,直接根據(jù)配置指令輸出相應(yīng)電平;
匹配輸出模式:只關(guān)注CCR=CNT值的時候,做相應(yīng)電平的輸出;
PWM輸出模式:根據(jù)CCR是小于CNT還是CCR不小于CNT的比較結(jié)果做不同的輸出;
[各種模式輸出特性細(xì)節(jié)可以看看上面表格】
比較輸出的大致流程以及幾個術(shù)語【OCxREF 、OCx 、輸出極性】
圖[3]
上面提到的輸出信號,其中多次提到有效信號,無效信號,是指比較輸出控制器輸出的信號,我們稱之為中間參考信號,即OcxREF信號。該OCxREF源于輸出模式控制器,并硬件約定高電平為有效信號,低電平為無效信號。它經(jīng)過極性選擇后,再經(jīng)輸出控制電路輸出到芯片管腳Ocx端。當(dāng)極性選擇位CCxP=0時,高電平作為Ocx的有效輸出信號,當(dāng)CCxP=1時,低電平作為Ocx的有效輸出。 或者說,當(dāng)極性選擇位CCxP=0時,Ocx輸出與OcxREF信號同相;當(dāng)CCxP=1時,Ocx輸出與OcxREF信號反相;
下圖是當(dāng)CCxP=0時 Ocx 與 OcxRef信號的相位情況【二者同相】
圖[4]
下圖是當(dāng)CCxP=1時 Ocx 與 OcxRef信號的相位情況【二者反相】
圖[5]
也就是說,OCXref信號只是個中間參考信號,并非最終輸出信號。最終輸出端OCX的active state【有效狀態(tài)】/inactive state【無效狀態(tài)】所對應(yīng)的電平取決于極性選擇控制位CCxP/CCxNP。
當(dāng)然,如果是高級定時器的互補輸出,最后的輸出波形形狀除了與極性選擇有關(guān)外,輸出波形還跟插入的死區(qū)有關(guān)。即對于互補輸出時 Ocx =OCxREF + 極性 + 死區(qū)
PWM比較輸出模式實現(xiàn)原理及相應(yīng)波形
前面已經(jīng)說了,單脈沖輸出模式是一種特殊的PWM輸出模式。這里我們重點看看PWM輸出模式的實現(xiàn)原理及相應(yīng)輸出特性。
從前面介紹中我們了解到PWM輸出模式可以分兩種,即PMW模式1與模式2,結(jié)合不同的計數(shù)模式可以實現(xiàn)多種輸出組合。我們不妨以PWM模式1、計數(shù)器向上計數(shù)、極性選擇高有效【CCxP=0】為例來看看比較輸出過程中輸出PWM波形的實現(xiàn)原理。
圖[6]
上面圖【6】由兩部分組成,上面部分是計數(shù)器周期性計數(shù)的示意圖。深紅色斜線表示計數(shù)器從0開始計數(shù),記到ARR后重裝,再重新計數(shù),這樣循環(huán)。下面綠色方波是依據(jù)PWM模式1基于某個CCR值經(jīng)過比較輸出而得到PWM波形。
根據(jù)上面介紹,我們知道在PWM輸出模式1的前提下,當(dāng)計數(shù)器的值小于CCR的值時輸出有效電平,即高電平,當(dāng)計數(shù)器值大于或等于CCR的值時輸出無效電平,即低電平。由于計數(shù)器計數(shù)會發(fā)生周期性地溢出和重裝,使得計數(shù)器的值可以周期性地循環(huán)計數(shù),當(dāng)CCR的值固定的時候,CNT與CCR的值二者的比較結(jié)果也往往呈現(xiàn)出周期性,此時也就輸出規(guī)律性、周期性的PWM波形。
不難理解,當(dāng)我們修改CCR的值,其它不動的時候,PWM輸出波形會相應(yīng)變化。
圖[7]
圖【7】的波形是在圖【6】的基礎(chǔ)上講CCR值往上調(diào)大以后所得到的比較輸出波形。
看到這里,我們不禁會想:既然PWM輸出模式的輸出結(jié)果取決于CCR與CNT的比較結(jié)果的周期性變化,那么,當(dāng)我們把CCR的值設(shè)置為0或者比ARR的值還大的時候,此時CCR與CNT的比較結(jié)果將不再變化,因為這里CNT的值不可能比0還小或比ARR還大。此時,自然就不會有變化的PWM波形輸出,而是輸出固定的電平,具體什么電平取決于CCR與CNT的比較結(jié)果與當(dāng)前所選擇的PWM輸出模式。
不妨用個具體的案例來理解。比如,在PWM模式1的前提下:
當(dāng)CCR=0時,由于計數(shù)器CNT的值永遠(yuǎn)不會小于CCR,此時將始終輸出無效電平。
當(dāng)CCR=ARR+n【N不小于1】時,因CNT的值總小于CCR的值,此時始終輸出有效電平。
上面主要是基于PWM輸出模式1、計數(shù)器向上計數(shù)模式來理解定時器比較輸出中的PWM輸出原理。至于PWM輸出模式1、計數(shù)器向下計數(shù)模式或者PWM輸出模式2等其它情形,我們可以結(jié)合STM32參考手冊自行分析。
結(jié)合上面的分析,我們不難看出,定時器之所以能輸出PWM波形,原因在于定時器的計數(shù)器的計數(shù)的動態(tài)連續(xù)性和周期性,具體到這里,從0開始計數(shù)到ARR,溢出重裝,再從0開始從新計數(shù),循環(huán)往復(fù),導(dǎo)致計數(shù)器與CCR的比較結(jié)果也具有周期性,從而產(chǎn)生周期性的PWM輸出。
根據(jù)定時器時基單元相關(guān)介紹,我們知道計數(shù)器計數(shù)發(fā)生溢出后,可以觸發(fā)更新事件。對于通用定時器,每次溢出都可以產(chǎn)生更新事件;對于高級定時器,每發(fā)生RCR+1次溢出就可以產(chǎn)生更新事件。
如果說,在PWM輸出模式下,當(dāng)定時器發(fā)生溢出產(chǎn)生更新事件時,通過硬件機制令計數(shù)器停止計數(shù),既然計數(shù)器被停止計數(shù)了,計數(shù)器【CNT】的值將不再變化,之后的CNT與CCR的比較結(jié)果將維持不變,自然也就沒有后續(xù)變化的的PWM波形輸出了。這時我們就可以實現(xiàn)單個或幾個PWM脈沖的輸出了。
基于上述原理或應(yīng)用場景,便衍生出了單脈沖輸出模式。所以,我們說單脈沖輸出模式是一種特殊的PWM輸出模式。
單脈沖輸出模式的實現(xiàn)原理:計數(shù)器啟動后,在更新事件來臨之前的時間段內(nèi)實現(xiàn)一定個數(shù)的脈沖輸出,當(dāng)發(fā)生更新事件時計數(shù)器停止計數(shù),導(dǎo)致后續(xù)不再有變化的PWM波形輸出。輸出的脈沖個數(shù)可以一個或幾個。如果是通用計數(shù)器就是1個,如果是高級定時器,脈沖個數(shù)與RCR數(shù)值和計數(shù)模式二者有關(guān)。
圖[8]
圖【8】是個單脈沖輸出實現(xiàn)的示意圖。定時器工作在從模式,在外部觸發(fā)信號【TI2】的作用下開啟計數(shù)器,輸出一個脈沖后發(fā)生更新事件并停止計數(shù)。
關(guān)于單脈沖輸出模式應(yīng)用的提醒:
1、使用單脈沖輸出模式時,計數(shù)器的使能啟動可以通過軟件使能啟動,也可以將定時器配置在觸發(fā)從模式經(jīng)過信號觸發(fā)啟動.
2、單脈沖輸出模式是PWM輸出模式的特例,利用該模式并不一定只是輸出單個脈沖。如果是通用定時器,每次使能計數(shù)器后只輸出一個PWM脈沖,如果是高級定時器,每次使能計數(shù)器后可能輸出多個PWM脈沖,具體多少除了與RCR寄存器的值有關(guān)外,還跟計數(shù)器的計數(shù)模式有關(guān);
3、要用好定時器的單脈沖輸出模式,需了解下面三方面的知識點:
A:了解基本的PMW輸出模式的基本特性;
B:了解定時器的更新事件;
C:了解計數(shù)器的溢出與重裝;
好,下面一起來看看幾個基于單脈沖輸出模式的實例以加深理解。
下面案例都是基于高級定時器的。因為高級定時器可以使用單脈沖輸出模式輸出1到N個脈沖,如果使用通用定時器每次觸發(fā)后就只能產(chǎn)生1個脈沖,產(chǎn)生多個脈沖就不那么方便。
案例一:使用高級定時器,單脈沖輸出模式,借助RCR寄存器實現(xiàn)3個PWM脈沖輸出
條件:UP counting + PWM1, RCR=2; 極性:高有效[CCxP=0]
圖[9]
程序運行,使能計數(shù)器后輸出上述波形。
RCR=2,意味著發(fā)生RCR+1次溢出時產(chǎn)生更新事件,計數(shù)器停止計數(shù),后續(xù)不再輸出PWM波形。從上面來看輸出基本是正確的,不過最后電平停在高電平,結(jié)尾這個地方怎么感覺不符合PWM1的輸出特性呢?
一起來看看,現(xiàn)在計數(shù)器是向上計數(shù)模式,它在第3個周期計到ARR時產(chǎn)生溢出,觸發(fā)更新事件,計數(shù)器停止計數(shù)了,那計數(shù)器的值不是應(yīng)該停留在ARR嗎?如果計數(shù)器的值停在ARR,那此時CNT>CCR的值,按照PWM模式1的輸出特性,輸出應(yīng)該停留在低電平,那怎么是高電平呢?
前面提到過,要用好定時器的單脈沖輸出模式,還得了解計數(shù)器溢出與重裝。
具體到這里,當(dāng)計數(shù)器在第3個周期計到ARR時發(fā)生溢出,產(chǎn)生更新事件,計數(shù)器不再計數(shù)。但計數(shù)器溢出后重裝還是照例執(zhí)行,此時計數(shù)器被重裝為0,因為計數(shù)器被停止,所以該0值保持不變。這樣的話,后續(xù)的比較結(jié)果總是CNT
好,那我們基于上面的條件,換成PWM輸出模式2看看結(jié)果。
案例二:使用高級定時器,單脈沖模式,借助RCR寄存器實現(xiàn)3個PWM脈沖輸出
條件:UP counting + PWM2, RCR=2; 極性高有效[CCxP=0]
圖[10]
這次跟上面的案例1只是PWM模式做了變更,使用PWM輸出模式2。仍然是輸出3個PWM脈沖,跟上面輸出波形相比,第3個脈沖最后停留的電平不一樣,這里是低電平。分析過程跟上面一樣,當(dāng)計數(shù)器發(fā)生第3次溢出時,計數(shù)器依然重裝為0,此時CNT
至于其它不同的組合模式,這里就不一一分析了。我下面再放幾副圖進來,大家可以自行分析。
案例三:使用高級定時器,單脈沖模式,借助RCR寄存器實現(xiàn)3個PWM脈沖輸出。
條件:Down counting + PWM1,RCR=2; 極性選擇高有效 [CCxP=0]
圖[11]
案例四、使用高級定時器,單脈沖模式,借助RCR寄存器實現(xiàn)3個PWM脈沖輸出。
條件:Down counting + PWM2,RCR=2; 極性選擇高有效[CCxP=0]
圖[12]
案例五、使用高級定時器,單脈沖模式,借助RCR寄存器實現(xiàn)PWM脈沖輸出
條件:Center counting / pwm1/ RCR=6 極性選擇:高有效[CCxP=0]
圖[13]
最后小結(jié)下:
在使用定時器單脈沖輸出模式做指定個數(shù)PWM波形輸出時,我們要根據(jù)實際需求來選擇合適的pwm輸出模式、計數(shù)模式以及RCR寄存器的值。比方上面案例1與案例2的輸出波形不能說誰對誰錯,關(guān)鍵看你需要的是哪種輸出結(jié)果。另外,一種輸出結(jié)果可以有多種實現(xiàn)方案,比方上面案例2與案例3雖是不同的方案,但產(chǎn)生了相同的效果,此時我們可以根據(jù)具體的應(yīng)用場景來選擇合適的方案。
好,關(guān)于定時器的單脈沖輸出模式的應(yīng)用就介紹到這里,大致介紹了單脈沖輸出模式的來龍去脈以及實現(xiàn)原理。我們常常使用單脈沖模式是輸出指定個數(shù)的PWM脈沖,當(dāng)然還有別的方式可以靈活使用,比方通過通過統(tǒng)計比較事件或更新事件后修改CCR等。
-
定時器
+關(guān)注
關(guān)注
23文章
3298瀏覽量
119010 -
STM
+關(guān)注
關(guān)注
1文章
557瀏覽量
43218
原文標(biāo)題:STM32定時器單脈沖輸出模式話題
文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
STM32F103高級定時器中,開啟單脈沖模式是不是會立刻清除計數(shù)器使能位?
COMP2在STM32L1上觸發(fā)單脈沖模式
STM32——高級定時器、通用定時器、基本定時器的區(qū)別 精選資料推薦
STM32定時器單脈沖模式的相關(guān)資料分享
請問如何生成可重復(fù)的單脈沖波形?
如何使用MxCube設(shè)置可重觸發(fā)的單脈沖定時器呢?
有什么方法可以在一種脈沖模式下啟動定時器嗎?
stm32之定時器

STM32定時器單脈沖模式及其應(yīng)用

評論