輸出互爲180度的PWM

輸出互爲180度的PWM? 如下圖:

pwm180.JPG

考慮了一下,使用STM32 的任意一個定時器都可以實現樓主的要求。

基本設置如下:
1)配置定時器的計數器爲中間對齊計數,即先向上計數再向下計數。
2)在該定時器上選擇2個通道,並分別配置爲輸出比較模式,並配置在比較成功時翻轉對應的引腳輸出。
3)配置自動重裝載寄存器TIMx_ARR爲要求輸出頻率的一半。
4)假定CC1爲第一個輸出信號的通道,再假定第一個信號的正脈衝寬度對應爲W1,則配置TIMx_CCR1爲TIMx_ARR-W1/2。
5) 同4),假定CC2爲第二個輸出信號的通道,正脈衝寬度對應爲W2,配置TIMx_CCR2爲W2/2。

----------------------------------------------
下面以一個例子說明:

假設要求輸出的信號頻率爲10kHz,佔空比爲1:3。
再假設定時器的輸入時鐘爲72MHz。

輸出信號的頻率10kHz,換算爲計數器的數值爲7200。
按照上述3),設置TIMx_ARR=3600

輸出信號1的高電平時間W1,換算爲計數器的數值爲W1=7200/4=1800
按照上述4),設置TIMx_CC1=3600 - W1/2=2700

輸出信號2的高電平時間W2,換算爲計數器的數值爲W2=7200/4=1800
按照上述5),設置TIMx_CC2=2/2=450

參照下圖,圖中紅線表示計數器的數值變化:
①當計數器的數值從0向上計數,達到TIMx_CC1時,CC1匹配成功,CC1的輸出電平翻轉;
②計數器繼續向上計數,達到TIMx_ARR時開始調頭向下計數;當計數器的數值下降到TIMx_CC1時,CC1再次匹配成功,CC1的輸出電平再次翻轉;
③計數器繼續向下計數,達到到TIMx_CC2時,CC2匹配成功,CC2的輸出電平翻轉;
④計數器繼續向下計數,減到0時開始調頭向上計數;當計數器的數值上升到TIMx_CC2時,CC2再次匹配成功,CC2的輸出電平再次翻轉;

如此循環,得到連續的相位互爲180度的兩路輸出波形。

注意:上述描述是一個原理性的說明,但能夠輸出要求的波形並且佔空比可調,實際編程計算中需要可能需要對某些數值加1或者減1,以達到準確地輸出。

STM32_Outout_180degree.gif


再來一個佔空比大於50%的示意圖:

STM32_Outout_180degree1.gif


參考網址:http://bbs.21ic.com/icview-150646-1-1.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章