找回密码
 注册
关于网站域名变更的通知
查看: 206|回复: 2
打印 上一主题 下一主题

定时器PWM——多个定时器的PWM频率不一致问题

  [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-6-30 09:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
平台:STM32
" a3 X# a* L' \4 `, l# E功能:多个定时器输出多路PWM波。
2 O( ^  L0 f2 `& k现象:相同ARR及CCR,输出PWM波频率不同。
; E5 ^0 Y5 I" S, Z8 ]+ v8 Q% i
分析:这类问题通常涉及到定时器时钟源的问题,STM32F4的tiM1与其他定时器不同,不在同一条总线上,所以要注意总线频率的问题。
1、例如如果定时器1的输出频率是其他定时器的两倍,那么主要检查设置分频的时候,TIM1的分频要是否其他定时器的两倍。
2、例如如果定时器1的输出频率与其他定时器有差距,但是差距很小,那么检查,是不是分频参数是其他定时器的参数简单乘以2了。例如主频168,普通定时器分频83(168/2-1),定时器时钟频率1M,那么如果定时器1简单乘以2的话,参数就错了,应该是167,而不是83*2=166

# V; U9 V3 p5 s
% ~0 u5 w: Y! C, w% i! U/ q
发现F7开发板(至少是我买的这块)在配置同一定时器多路PWM波输出的时候,各个通道之间存在相互影响,具体表现为TIM3和TIM4两个定时器的CH1和CH2,CH3和CH4之间并不相互独立。
8 J% ~& K% `& y; |9 r  H. V解决思路: 怀疑过是自己修改CCRx值的方式的问题,于是参照正点原子给的方式,单独对通道进行配置,未能解决。' W4 z/ D) u$ E0 Y$ ?. J1 M1 j
然后考虑是串口通信影响了,就是先关闭在main中使用 USART1_PWM() 函数,不使用串口修改占空比,而是直接在程序中修改占空比。在测试之后发现问题仍然存在。
3 M' j# p$ {1 p/ @% E最后是单独调试一个定时器,我首先把其他3路的PWM波都给关闭了,仅剩下一条通道输出,此时关键来了!发现在这种情况下是可以通过串口进行控制的,也可以在程序内部直接进行修改,也就是说可以在1.5ms以下进行调节。0 S, B9 s* m0 f' g: {
直到后来猜想到,如果CH1和CH2之间是会相互影响的话,那么CH3和CH4呢?然后一顿操作之后惊奇地发现:CH1和CH2之间是相互影响的,CH3和CH4之间也是相互影响。/ J% _$ G* V8 C; p
具体表现为,当你在使用SetCompare这种方式初始化配置完同一个定时器的四个通道的时候(假定均为1.5ms),那么CH1的脉宽变化会受到另一条通道CH2的影响,哪条通道的脉宽较大,那么另一条通道脉宽就不能小于这条通道的脉宽,假定CH2脉宽被配置到了2ms,那么CH1也会跟着变化到2ms,并且只能在≥2ms范围内进行调节。CH3和CH4之间也是如此。当然,也有可能是我自身缘故导致的问题,欢迎大佬批评指正。

. o$ E0 S; f9 N1 g+ J. w

该用户从未签到

2#
发表于 2022-6-30 10:32 | 只看该作者
见识见识,学习||ヽ(* ̄▽ ̄*)ノミ|Ю

该用户从未签到

3#
发表于 2022-6-30 13:30 | 只看该作者
单片机控制固态继电器控制电源通断
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-8 23:05 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表