[STM32F3] PWM不能同步

[复制链接]
 楼主| xxmmi 发表于 2020-8-27 22:45 | 显示全部楼层 |阅读模式
在使用STM32F3的TIM1和TIM8产生8路PWM时,有一个问题,就是最后使能TIM1和TIM8时,由于不能同时使能,所以两个定时器里产生出来的PWM不能同步,有一个相位差。
juventus9554 发表于 2020-8-27 22:50 | 显示全部楼层

楼主详细说说怎么回事啊,这么说太笼统了
 楼主| xxmmi 发表于 2020-8-27 22:54 | 显示全部楼层
用库函数使能如下,发现相位差较大。
TIM_Cmd(TIM1,ENABLE);//使能TIM1
TIM_Cmd(TIM8,ENABLE);//使能TIM8
改用寄存器使能如下:
TIM1->CR1|=0x01;     //使能定时器1
TIM8->CR1|=0x01;     //使能定时器8
使用寄存器使能可以减小相位差,但是不能使两个PWM同步,请问有没有人有办法可以帮我解决这个困难?
renyaq 发表于 2020-8-27 22:59 | 显示全部楼层
用外部信号来触发两个定时器。
ousj 发表于 2020-8-27 23:04 | 显示全部楼层
比方T1 配置为外部输入触发,TS=101(TI1FP1)SMS =110(触发模式),配置T1的MMS= 001,T1的使能信号作为TRGO输出到T8.
kangzj 发表于 2020-8-27 23:10 | 显示全部楼层
配置T8在T1的TRGO触发下开始运行,配置TS=000,SMS=110
zhuww 发表于 2020-8-27 23:14 | 显示全部楼层
其中一个定时器的主模式输出设置为使能,即TIMx_CR2的MMS为001。
tian111 发表于 2020-8-27 23:18 | 显示全部楼层
另外一个设置为从模式,方式选触发。TIMx_SMCR的SMS为110。
dingy 发表于 2020-8-27 23:22 | 显示全部楼层
这样设置好了后启动第一个定时器时,第二个会自动启动。
香水城 发表于 2020-8-28 13:35 | 显示全部楼层
 楼主| xxmmi 发表于 2020-8-28 22:19 | 显示全部楼层
/* Select the Master Slave Mode */
  TIM_SelectMasterSlaveMode(TIM1, TIM_MasterSlaveMode_Enable);
  /* Master Mode selection */
  TIM_SelectOutputTrigger(TIM1, TIM_TRGOSource_Enable);

  TIM_SelectSlaveMode(TIM8, TIM_SlaveMode_Trigger);
  TIM_SelectInputTrigger(TIM8, TIM_TS_ITR0);

运行后T1 MMS=001    T8 SMS=0X06 ;
llljh 发表于 2020-8-28 22:25 | 显示全部楼层
波形看看
 楼主| xxmmi 发表于 2020-8-28 22:28 | 显示全部楼层
 楼主| xxmmi 发表于 2020-8-28 22:32 | 显示全部楼层
一样不同步
 楼主| xxmmi 发表于 2020-8-28 22:37 | 显示全部楼层
改成TIM_SelectSlaveMode(TIM8, TIM_SlaveMode_Gated);,就好了
wangzsa 发表于 2020-8-28 22:43 | 显示全部楼层
用一个定时器触发2路 pwm
wenfen 发表于 2020-8-28 22:47 | 显示全部楼层
能否把配置程序分享一下,谢谢。我现在也是遇到这个问题,改成了门控模式但是TIM8 无输出..
 楼主| xxmmi 发表于 2020-8-28 22:52 | 显示全部楼层

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先
香水城 发表于 2020-8-31 23:16 | 显示全部楼层
xxmmi 发表于 2020-8-28 22:52
其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

其实基本原理就是 主定时器的计数器使能信号作为 从定时器的触发输出, 从定时器配置在 触发从模式。
这样就可以保证同步启动,不会产生相差。
天意无罪 发表于 2020-9-1 08:12 | 显示全部楼层
STM32的两个Timer定时器同步模式和两个ADC同步采样模式的工作原理类似,就是一主一从,主的使能信号同时作为从的使能信号,继而实现同步运行功能。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

369

主题

4278

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部