STM32高速脈衝發波方案

對於步進電機,脈衝頻率一般在幾千Hz到幾十千Hz左右,但是對於伺服電機,由於其轉速高,分辨率高,其要求的脈衝頻率可以高達幾百千Hz甚至高到幾兆Hz。此外對於多軸運動控制器,還需要同時發出多路高頻率的脈衝波形。如何讓單片機發出高頻率的高速脈衝,有以下幾種方法:

1)使用定時器溢出中斷,定時中斷裏翻轉IO口電平來產生方波。

優點:實現簡單,對硬件要求不高。

缺點:不適合高速脈衝波形,而且脈衝分辨率也不高。

2)使用PWM方式,通過改變PWM週期寄存器的值來改變週期,從而發出頻率可變的方波。

優點:可以輸出高速脈衝。

缺點:一個定時器只能輸出一路脈衝,而且脈衝數量不可控制。

3)使用定時器的輸出比較模式,設置輸出比較匹配時翻轉IO口,並開啓輸出比較中斷,

在中斷中裝載下一次比較值。

優點:可以輸出高速脈衝,並且脈衝數量可以控制。

缺點:進入中斷頻繁,增加CPU負擔,一旦電機多,這種方法消耗MCU資源嚴重。

 

由於上述幾種方法都不適合用來產生多路高速脈衝,故本方案使用DMA+PWM結合的方式來產生多路高速脈衝。對於STM32系列MCU,存在多路DMA通道。DMA允許外設和內存之間直接進行數據訪問而不需要CPU的干預。在內存數組裏配置一串設定好的頻率值,然後設定相應的DMA通道,將對應的定時器設置成PWM模式,然後將DMA通道和定時器通道進行關聯。則使能DMA和定時器通道以後,內存數組中的這串頻率值會傳送給定時器通道,控制定時器通道自動產生頻率可變的PWM波形。這個發波原理用程序流程圖如下所示。

具體程序,可以參考鏈接:https://blog.csdn.net/qq_21793157/article/details/88798467

發佈了58 篇原創文章 · 獲贊 42 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章