打印
[STM32F1]

关于STM32定时器发送脉冲

[复制链接]
1060|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
关于STM32定时器发送脉冲,STM32如何才能同时发送4路不同频率,不同数目的脉冲呢?我用定时器+DMA这种方法控制4个步进电机时,第一个电机和第四个电机之间还是有时间间隔,跑个2分钟位置就乱了,做不到同步啊

223.jpg (280.51 KB )

223.jpg

224.jpg (313.35 KB )

224.jpg

使用特权

评论回复
沙发
ADZ2016| | 2021-2-22 11:33 | 只看该作者
这是开环的PWM吗?没有编码器是吗?

使用特权

评论回复
板凳
ADZ2016| | 2021-2-22 11:34 | 只看该作者
我感觉,如果是需要确切的PWM的个数的话,可能就需要多个定时器来进行级联了。

对于这种应用,远不如搞一个FPGA CPLD来方便啊!

使用特权

评论回复
地板
白纸扇00|  楼主 | 2021-2-22 12:06 | 只看该作者
ADZ2016 发表于 2021-2-22 11:34
我感觉,如果是需要确切的PWM的个数的话,可能就需要多个定时器来进行级联了。

对于这种应用,远不如搞一 ...

感谢回复了,定时器级联 可以用定时器1作为主定时器。控制定时器234从定时器同步输出不同频率不同个数的脉冲吗?FPGA我不会用啊

使用特权

评论回复
5
ADZ2016| | 2021-2-22 12:51 | 只看该作者
对于你说的这个功能,其实STM32可能有点复杂,但是,如果你用新唐M480,几乎瞬间解决。EPWM

使用特权

评论回复
6
ADZ2016| | 2021-2-22 12:54 | 只看该作者
如果搞不定的话,就直接选择使用总线模式的驱动器吧。

使用特权

评论回复
7
白纸扇00|  楼主 | 2021-2-22 13:55 | 只看该作者
ADZ2016 发表于 2021-2-22 12:51
对于你说的这个功能,其实STM32可能有点复杂,但是,如果你用新唐M480,几乎瞬间解决。EPWM ...

好的,感谢大佬指点了!

使用特权

评论回复
8
gdszzyq| | 2021-2-22 15:08 | 只看该作者
用输出比较模式一个定时器就可以输出4路不同频率的脉冲

使用特权

评论回复
9
白纸扇00|  楼主 | 2021-2-22 19:13 | 只看该作者
gdszzyq 发表于 2021-2-22 15:08
用输出比较模式一个定时器就可以输出4路不同频率的脉冲

脉冲数目也是有要求的

使用特权

评论回复
10
香水城| | 2021-2-22 20:19 | 只看该作者
用定时器加DMA应该是可以实现的。
一个定时器稍微辛苦点,多个定时器同步后来实现比较简单点。
一个定时器输出4路不同频率波形的应用示

使用特权

评论回复
11
白纸扇00|  楼主 | 2021-2-23 09:03 | 只看该作者
香水城 发表于 2021-2-22 20:19
用定时器加DMA应该是可以实现的。
一个定时器稍微辛苦点,多个定时器同步后来实现比较简单点。
一个定时器 ...

感谢坛友的回复了,一个定时器的比较输出功能对4个通道的PWM输出频率是有个公倍数还是公约数限制的,我这里是无规律的频率,比较输出可能是不行的。
4个定时器怎么做才能同步输出呢?

使用特权

评论回复
12
gdszzyq| | 2021-2-23 10:52 | 只看该作者
本帖最后由 gdszzyq 于 2021-2-23 11:49 编辑
白纸扇00 发表于 2021-2-23 09:03
感谢坛友的回复了,一个定时器的比较输出功能对4个通道的PWM输出频率是有个公倍数还是公约数限制的,我这 ...


没有什么公倍数这回事,4个通道采用同一个计数器,有4个比较寄存器,当计数器的值与比较寄存器的值相同时触发中断,这个CCR寄存器可以修改的,这样就实现频率实时可调,达到你所需要的脉冲数量关断该通道中断就行了,也不存在一个定时器输出4路就吃力这回事,我一直都是这样用的

使用特权

评论回复
13
白纸扇00|  楼主 | 2021-2-23 14:01 | 只看该作者
gdszzyq 发表于 2021-2-23 10:52
没有什么公倍数这回事,4个通道采用同一个计数器,有4个比较寄存器,当计数器的值与比较寄存器的值相同时 ...

我在网上搜的资料是这样讲的,难道他是错误的吗?我这也没有示波器看到波形

225.jpg (75.67 KB )

225.jpg

使用特权

评论回复
14
gdszzyq| | 2021-2-23 15:45 | 只看该作者
白纸扇00 发表于 2021-2-23 14:01
我在网上搜的资料是这样讲的,难道他是错误的吗?我这也没有示波器看到波形 ...

我定时器的重载值为65535,计数器和比较寄存器也是16位的,不管你的定时周期是多少个计数单位,超过65535就溢出了,所以不存在重加载时波形会混乱,假如重载值是12345,每次累加不管是什么数也没问题,只要加到超过12345时作下处理就行了,也不存在重加载时波形会混乱

使用特权

评论回复
15
白纸扇00|  楼主 | 2021-2-23 20:11 | 只看该作者
gdszzyq 发表于 2021-2-23 15:45
我定时器的重载值为65535,计数器和比较寄存器也是16位的,不管你的定时周期是多少个计数单位,超过65535 ...

感谢您的指点了,我自己先试试,碰到问题了再来麻烦您

使用特权

评论回复
16
tfqi| | 2021-3-3 19:54 | 只看该作者
一个定时器处理起来有些麻烦啊

使用特权

评论回复
17
wiba| | 2021-3-3 20:23 | 只看该作者
这样做 对实时性要求就不能高

使用特权

评论回复
18
zljiu| | 2021-3-3 20:23 | 只看该作者
极难做到同步的

使用特权

评论回复
19
coshi| | 2021-3-3 20:27 | 只看该作者
不能超过65535这个值

使用特权

评论回复
20
aoyi| | 2021-3-3 20:28 | 只看该作者
建议还是跑一下系统

使用特权

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

本版积分规则

9

主题

65

帖子

1

粉丝