TI中文支持网
TI专业的中文技术问题搜集分享网站

关于PWM的相位差问题

你好,我采用PWM1A和PWM2A产生2个有相位差的方波,占空比50%,代码如下,其余代码都一样

if(OffsetPhase)
{
    PwmRegPoint->TBPHS.half.TBPHS=OffsetPhase;
    PwmRegPoint->TBCTL.Bits.PHSEN=TB_ENABLE;
    PwmRegPoint->TBCTL.Bits.PHSDIR=TB_DOWN; //598
    PwmRegPoint->TBCTL.Bits.PRDLD=TB_SHADOW;
    PwmRegPoint->TBCTL.Bits.SYNCOSEL=TB_SYNC_IN;

}

else
{
    PwmRegPoint->TBPHS.half.TBPHS=0;
    PwmRegPoint->TBCTL.Bits.PHSEN=TB_DISABLE;
    PwmRegPoint->TBCTL.Bits.PRDLD=TB_SHADOW;
    PwmRegPoint->TBCTL.Bits.SYNCOSEL=TB_CTR_ZERO;
}

当把PWM1A的OffsetPhase=0,PWM1B的OffsetPhase=TBTR时可以产生相位差,但是反过来

当把PWM1A的OffsetPhase=TBTR,PWM1B的OffsetPhase=0时产生不了相位,,波形是重叠的

1、这是什么原因?

2、如果把PWM1A的OffsetPhase=1  PWM1B的OffsetPhase=TBTR也不能产生相位差,波形是重叠的,这是什么原因

JunJie Qu:

PwmRegPoint->TBPHS.half.TBPHS=OffsetPhase; PwmRegPoint->TBCTL.Bits.PHSEN=TB_ENABLE; PwmRegPoint->TBCTL.Bits.PHSDIR=TB_DOWN; //598 PwmRegPoint->TBCTL.Bits.PRDLD=TB_SHADOW; PwmRegPoint->TBCTL.Bits.SYNCOSEL=TB_SYNC_IN; 我把PWM1A,PW2A都设置成如上程序,PWM1A OffsetPhase=0 PWM1B OffsetPhase=TBPR ,不能产生TBPR的相位差 按照道理,在TBCLKSYNC=1时应该把TBPHS1A转入TBCTR1A,TBPH2A装入TBCTR2A这样他们就产生了相位差了,但现在产生的2个方波相位还是0,即重叠的,急等回答啊

你好,我采用PWM1A和PWM2A产生2个有相位差的方波,占空比50%,代码如下,其余代码都一样

if(OffsetPhase)
{
    PwmRegPoint->TBPHS.half.TBPHS=OffsetPhase;
    PwmRegPoint->TBCTL.Bits.PHSEN=TB_ENABLE;
    PwmRegPoint->TBCTL.Bits.PHSDIR=TB_DOWN; //598
    PwmRegPoint->TBCTL.Bits.PRDLD=TB_SHADOW;
    PwmRegPoint->TBCTL.Bits.SYNCOSEL=TB_SYNC_IN;

}

else
{
    PwmRegPoint->TBPHS.half.TBPHS=0;
    PwmRegPoint->TBCTL.Bits.PHSEN=TB_DISABLE;
    PwmRegPoint->TBCTL.Bits.PRDLD=TB_SHADOW;
    PwmRegPoint->TBCTL.Bits.SYNCOSEL=TB_CTR_ZERO;
}

当把PWM1A的OffsetPhase=0,PWM1B的OffsetPhase=TBTR时可以产生相位差,但是反过来

当把PWM1A的OffsetPhase=TBTR,PWM1B的OffsetPhase=0时产生不了相位,,波形是重叠的

1、这是什么原因?

2、如果把PWM1A的OffsetPhase=1  PWM1B的OffsetPhase=TBTR也不能产生相位差,波形是重叠的,这是什么原因

囧:

OffserPhase = 0的时候,PHSEN = 0,PWM1和PWM2是不会有相差的,只有PHSEN =1 才会有相差。TBTR是什么值?

  PwmRegPoint->TBPHS.half.TBPHS=0;    PwmRegPoint->TBCTL.Bits.PHSEN=TB_DISABLE;    PwmRegPoint->TBCTL.Bits.PRDLD=TB_SHADOW;    PwmRegPoint->TBCTL.Bits.SYNCOSEL=TB_CTR_ZERO;

你好,我采用PWM1A和PWM2A产生2个有相位差的方波,占空比50%,代码如下,其余代码都一样

if(OffsetPhase)
{
    PwmRegPoint->TBPHS.half.TBPHS=OffsetPhase;
    PwmRegPoint->TBCTL.Bits.PHSEN=TB_ENABLE;
    PwmRegPoint->TBCTL.Bits.PHSDIR=TB_DOWN; //598
    PwmRegPoint->TBCTL.Bits.PRDLD=TB_SHADOW;
    PwmRegPoint->TBCTL.Bits.SYNCOSEL=TB_SYNC_IN;

}

else
{
    PwmRegPoint->TBPHS.half.TBPHS=0;
    PwmRegPoint->TBCTL.Bits.PHSEN=TB_DISABLE;
    PwmRegPoint->TBCTL.Bits.PRDLD=TB_SHADOW;
    PwmRegPoint->TBCTL.Bits.SYNCOSEL=TB_CTR_ZERO;
}

当把PWM1A的OffsetPhase=0,PWM1B的OffsetPhase=TBTR时可以产生相位差,但是反过来

当把PWM1A的OffsetPhase=TBTR,PWM1B的OffsetPhase=0时产生不了相位,,波形是重叠的

1、这是什么原因?

2、如果把PWM1A的OffsetPhase=1  PWM1B的OffsetPhase=TBTR也不能产生相位差,波形是重叠的,这是什么原因

JunJie Qu:

回复 囧:

//相位移相配置 PwmRegPoint->TBPHS.half.TBPHS=OffsetPhase;//TimeCount重新装载寄存器,当条件成立时把该值装载到TimeCount中,具体看 PHSEN PwmRegPoint->TBCTL.Bits.PHSDIR=TB_DOWN; //598 PwmRegPoint->TBCTL.Bits.PRDLD=TB_SHADOW; PwmRegPoint->TBCTL.Bits.PHSEN=TB_ENABLE; PwmRegPoint->TBCTL.Bits.SYNCOSEL=TB_CTR_ZERO;

这种方式能够实现PWM1A,PWM2A的相移,但现在相移角度只能从0~269度,TBPRD是PwmRegPoint->TBPRD的值TBPRD=276

也就是说,我设定PWM1A的OffsetPhase=0,PWM2A的OffsetPhase=X  X=0~414对应0~269,而达到270度时PWM2A输出为低电平

按理说TBPHS只能取0~276,现在超过了也可以移相,但差后面90度,如何解决

赞(0)
未经允许不得转载:TI中文支持网 » 关于PWM的相位差问题
分享到: 更多 (0)