你好,我采用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度,如何解决