打印
[STM32F1]

STM32F103产生数量可控的脉冲

[复制链接]
5453|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yygkqzh|  楼主 | 2014-3-31 17:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
最近在写一个STM32控制步进电机的程序。

看过不少资料,方法各种各样。但是我做的比较特殊,频率100K左右,共做6路,而且6路脉冲频率独立可调。
有很多人建议IO口翻转,但是经过实验,频率不能达到预想的结果。
频率独立可调,就是得使用不同的定时器,TIM1~TIM5和TIM8。

求助各位大神 and 香主!!!
评论
adssee 2023-5-6 10:00 回复TA
楼主,请问问题解决没,最近也遇到了和您类似的问题 
沙发
yygkqzh|  楼主 | 2014-4-1 10:52 | 只看该作者
不能沉了啊

使用特权

评论回复
板凳
_编程浪子| | 2014-4-1 11:57 | 只看该作者
频率也是独立的话  好像只能一个定时器一路了。
ST库的例程中好像有一个是用同一个定时器产生不同频率的,但比较麻烦  局限也多。

使用特权

评论回复
地板
yygkqzh|  楼主 | 2014-4-1 16:13 | 只看该作者
_编程浪子 发表于 2014-4-1 11:57
频率也是独立的话  好像只能一个定时器一路了。
ST库的例程中好像有一个是用同一个定时器产生不同频率的, ...

使用一个定时器产生1路脉冲,当到达需要的频率时,第六路PWM没有输出,是不是速度不能太快???

使用特权

评论回复
5
mmuuss586| | 2014-4-1 17:04 | 只看该作者

加减速的算法,挺占时间的。
另外6路同步的话有点困难

使用特权

评论回复
6
_编程浪子| | 2014-4-1 18:26 | 只看该作者
yygkqzh 发表于 2014-4-1 16:13
使用一个定时器产生1路脉冲,当到达需要的频率时,第六路PWM没有输出,是不是速度不能太快???
...

我没用过  只做过几个实验
不能乱给意见:lol

使用特权

评论回复
7
yygkqzh|  楼主 | 2014-4-1 20:35 | 只看该作者
mmuuss586 发表于 2014-4-1 17:04
加减速的算法,挺占时间的。
另外6路同步的话有点困难

我暂时还不需要加减速的算法,只是单纯的生成脉冲。
这个能不能实现呢?

使用特权

评论回复
8
yygkqzh|  楼主 | 2014-4-1 20:36 | 只看该作者
_编程浪子 发表于 2014-4-1 18:26
我没用过  只做过几个实验
不能乱给意见

那您最多几个定时器同时工作呢?

使用特权

评论回复
9
_编程浪子| | 2014-4-2 09:09 | 只看该作者
yygkqzh 发表于 2014-4-1 20:36
那您最多几个定时器同时工作呢?

好像是四路   当初出来波形之后,用示波器测了下就没继续了

使用特权

评论回复
10
香水城| | 2014-4-2 11:39 | 只看该作者
mmuuss586 发表于 2014-4-1 17:04
加减速的算法,挺占时间的。
另外6路同步的话有点困难

可以用2个定时器,一个4路一个2路信号。

置于两个定时器的同步,可以考虑用timer的主从模式

使用特权

评论回复
11
yygkqzh|  楼主 | 2014-4-2 15:41 | 只看该作者
香水城 发表于 2014-4-2 11:39
可以用2个定时器,一个4路一个2路信号。

置于两个定时器的同步,可以考虑用timer的主从模式 ...

香主,你好。
使用两个定时器能不能产生6路频率不同的PWM呢?

使用特权

评论回复
12
yygkqzh|  楼主 | 2014-4-3 19:08 | 只看该作者
怎么没人说话了?

使用特权

评论回复
13
yuanquanquan| | 2014-4-3 21:30 | 只看该作者
帮顶!学习!楼主加油!

使用特权

评论回复
14
香水城| | 2014-4-8 16:32 | 只看该作者
yygkqzh 发表于 2014-4-2 15:41
香主,你好。
使用两个定时器能不能产生6路频率不同的PWM呢?

如果使用timer的PWM1或PWM2模式,因为每个timer只有一个ARR,是不能做到一个timer输出4路不同频率的PWM波的。但是如果使用Toggle模式,则每个通道的OCx可以随时改变,被CPU或被DMA。这样输出的每一路波形就是完全可控的。当然这个模式下,就没有像PWM模式那么方便,配置好以后,一旦使能就硬件输出预先设置好频率和占空比的PWM了。

使用特权

评论回复
15
huzi2099| | 2014-4-8 20:13 | 只看该作者
步进电机的控制不需要每一路都独立调整频率吧,至少一台电机的2或3相是同一个频率呀

使用特权

评论回复
16
290399937| | 2014-4-9 07:21 | 只看该作者
systick 定时器中断里做6个变量i1,i2,i3,....自减!if到0软件重赋值该变量!并翻转对应io口……
比如40M的cpu  ……systick 重装值100……这样i1=1;最快做到每400k一次翻转!就是200k.的脉冲!要多慢看你i1的值

使用特权

评论回复
17
liuts| | 2014-4-9 08:43 | 只看该作者
我有成熟的步进电机控制方案,已经大量使用,带加减速。缓停,急停 QQ 125096005

使用特权

评论回复
18
yygkqzh|  楼主 | 2014-4-9 16:23 | 只看该作者
huzi2099 发表于 2014-4-8 20:13
步进电机的控制不需要每一路都独立调整频率吧,至少一台电机的2或3相是同一个频率呀 ...

虽说不需要,但是能够独立调节岂不是更好?

使用特权

评论回复
19
yygkqzh|  楼主 | 2014-4-9 16:24 | 只看该作者
290399937 发表于 2014-4-9 07:21
systick 定时器中断里做6个变量i1,i2,i3,....自减!if到0软件重赋值该变量!并翻转对应io口……
比如40M的c ...

如果这样,那岂不是只能时时进入中断,没有办法干其他事情了?

使用特权

评论回复
20
yygkqzh|  楼主 | 2014-4-9 16:27 | 只看该作者
香水城 发表于 2014-4-8 16:32
如果使用timer的PWM1或PWM2模式,因为每个timer只有一个ARR,是不能做到一个timer输出4路不同频率的PWM波 ...

这个例程我试过了,频率不能太高的,否则波形不是很好。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

28

帖子

0

粉丝