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波形。这个发波原理用程序流程图如下所示。

STM32高速脉冲发波方案_第1张图片

具体程序,可以参考链接:https://blog.csdn.net/qq_21793157/article/details/88798467

你可能感兴趣的:(运动控制)