Stm32实现低CPU占用的高速脉冲输出panasonic.lin@163.com首先,如果是脉冲数量不受控制的话,Stm32完全可以实现0%CPU占用的超高速1Mhz以上的脉冲输出。
所以在此只讨论数量可控制的脉冲。
传统的办法,也是在MCU的功能没那么强大之前,可能会采用在中断中计数的技术,这个办法有几个缺点
:
1.高速脉冲的最高频率可能不是很理想,中断程序需要占用相当的CPU时间,中断处理时间超过脉冲的
周期的话,脉冲的脉宽实际被展开了。
2.当脉冲必须有加减速算法时候,CPU必须每个脉冲或者周期性的计算新的速度曲线,除了计数,CPU的
负担进一步加大。
3.系统除了脉冲的中断外,还有额外的工作要做,例如扫描用户程序,扫描IO,执行数据采集等。
4.当实现多轴处理时,如果要实现直线插补或者其他加减速算法或者多轴联动,CPU其他事情什么也做不
了。
解决的办法是:
1.用更高处理速度的CPU;
2.用专门的脉冲驱动IC,减轻CPU负担,如MCX314,日脉的PCD系列;
3.用CPLD,FPGA自己构建一个纯硬件的脉冲单元。
这些都是根据个人的实际客观条件,选择最合适的解决方案。
在一些经济型系统,如小型PLC,上述办法都会增加系统复杂性。
在性能允许范围内,Stm32强大的定时器功能最适合实现这类应用。
Stm32所有TIMx定时器在内部相连,用于定时器同步或链接。当一个定时器处于主模式时,它可以对
另一个处于从模式的定时器的计数器进行复位、启动、停止或提供时钟等操作
手册上的配置步骤很详细,这里不再啰嗦。
主定时器和从定时器有同步和异步时钟两种,最好选择同步,这样便于计算。
下图是发送1Khz的脉冲10/embed>
最后献上日系的回机械原点的视频,对搞运动控制的朋友或许有帮助:
zajiju_815773237 2011-8-23 23:19