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