打印
[STM32F3]

两个定时器里产生出来的PWM不能同步

[复制链接]
2017|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chb_mcu|  楼主 | 2016-4-15 16:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在使用STM32F3的TIM1和TIM8产生8路PWM时,有一个问题,就是最后使能TIM1和TIM8时,由于不能同时使能,所以两个定时器里产生出来的PWM不能同步,有一个相位差。
用库函数使能如下,发现相位差较大。
TIM_Cmd(TIM1,ENABLE);//使能TIM1
TIM_Cmd(TIM8,ENABLE);//使能TIM8
改用寄存器使能如下:
TIM1->CR1|=0x01;     //使能定时器1
TIM8->CR1|=0x01;     //使能定时器8
使用寄存器使能可以减小相位差,但是不能使两个PWM同步,请问有没有人有办法可以帮我解决这个困难?
沙发
xmshao| | 2016-4-15 18:00 | 只看该作者
用外部信号来触发两个定时器。
比方T1 配置为外部输入触发,TS=101(TI1FP1)SMS =110(触发模式),配置T1的MMS= 001,T1的使能信号作为TRGO输出到T8.

配置T8在T1的TRGO触发下开始运行,配置TS=000,SMS=110

使用特权

评论回复
板凳
chb_mcu|  楼主 | 2016-4-15 18:06 | 只看该作者
好的,试试,多谢

使用特权

评论回复
地板
ctsdswk| | 2016-4-15 19:37 | 只看该作者
其中一个定时器的主模式输出设置为使能,即TIMx_CR2的MMS为001。
另外一个设置为从模式,方式选触发。TIMx_SMCR的SMS为110。
这样设置好了后启动第一个定时器时,第二个会自动启动。

使用特权

评论回复
5
chb_mcu|  楼主 | 2016-4-16 08:00 | 只看该作者
  /* 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 ;

使用特权

评论回复
6
chb_mcu|  楼主 | 2016-4-16 08:01 | 只看该作者
波形

无标题.png (260.04 KB )

无标题.png

使用特权

评论回复
7
chb_mcu|  楼主 | 2016-4-16 08:02 | 只看该作者
一样不同步

使用特权

评论回复
8
chb_mcu|  楼主 | 2016-4-16 08:17 | 只看该作者
  改成TIM_SelectSlaveMode(TIM8, TIM_SlaveMode_Gated);,就好了,多谢xmshao ctsdswk 回复

使用特权

评论回复
9
chb_mcu|  楼主 | 2016-4-16 08:19 | 只看该作者
波形

无标题.png (229.53 KB )

无标题.png

使用特权

评论回复
10
icecut| | 2016-4-16 14:29 | 只看该作者
用一个定时器触发2路 pwm

使用特权

评论回复
11
肖胡志| | 2018-11-12 15:21 | 只看该作者
chb_mcu 发表于 2016-4-16 08:17
改成TIM_SelectSlaveMode(TIM8, TIM_SlaveMode_Gated);,就好了,多谢xmshao ctsdswk 回复

能否把配置程序分享一下,谢谢。我现在也是遇到这个问题,改成了门控模式但是TIM8 无输出..

使用特权

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

本版积分规则

1

主题

9

帖子

1

粉丝