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

280049配置为高分辨率HRPWM, 变频时多路PWM怎么同步?

以PWM1为主,PWM2为辅,PWM2的周期、CMPA、CMPB都是跟随PMW1。更新都是在周期计数器等于0时更新。而且周期、CMPA、CMPB计算已避开周期计数器等于0附近

EPwm2Regs.EPWMXLINK.bit.TBPRDLINK = 0;
EPwm2Regs.EPWMXLINK.bit.CMPALINK = 0;
EPwm2Regs.EPWMXLINK.bit.CMPBLINK = 0;

当EPwm1Regs.CMPA.bit.CMPAHR为固定值时,变频没问题。

当EPwm1Regs.CMPA.bit.CMPAHR跟着频率变化时,变频的第一个周期会有异常,第二个周期就正常。

Green Deng:

看一下这个帖子的回复能否对你的问题有所帮助:
e2e.ti.com/…/764414

user6299106:

回复 Green Deng:

您好,问题不一样,我这个在HRPWM为固定值时,4路PWM1、PWM2、PWM3、PWM4 4路都能同步。

手册里写:SYNCOSEL   不能配置为1

情况1:在高分辨率下如下配置会导致变频的第一周期异常,但后面周期就同步

EPwm1Regs.TBCTL.bit.SYNCOSEL   = TB_CTR_ZERO;

EPwm2Regs.TBCTL.bit.SYNCOSEL   = TB_SYNC_IN;

EALLOW; EPwm2Regs.EPWMXLINK.bit.TBPRDLINK = 0; EPwm2Regs.EPWMXLINK.bit.CMPALINK = 0; EPwm2Regs.EPWMXLINK.bit.CMPBLINK = 0;

//EPwm2Regs.GLDCTL.bit.GLDPRD=2;

EPwm2Regs.GLDCTL.bit.OSHTMODE =1; EPwm2Regs.GLDCTL.bit.GLDMODE = 0;//0010: Load on either Counter = 0, or Counter = Period EPwm2Regs.GLDCTL.bit.GLD = 1; EPwm2Regs.GLDCFG.all =0x001F; EPwm2Regs.EPWMXLINK.bit.GLDCTL2LINK = 0;//0000: ePWM1 EPwm2Regs.GLDCTL2.bit.OSHTLD =1; EDIS;

EPwm3Regs.TBCTL.bit.SYNCOSEL   = TB_SYNC_IN;

EALLOW; SyncSocRegs.SYNCSELECT.bit.EPWM4SYNCIN = 0; EDIS;

EPwm4Regs.TBCTL.bit.SYNCOSEL   = TB_SYNC_IN; 

情况2:在高分辨率下如下配置会导致变频时  正常,但是有相位差,不同步

EPwm1Regs.TBCTL.bit.SYNCOSEL   = TB_SYNC_DISABLE;

EPwm2Regs.TBCTL.bit.SYNCOSEL   = TB_SYNC_IN;

EPwm3Regs.TBCTL.bit.SYNCOSEL   = TB_SYNC_IN;

EALLOW;SyncSocRegs.SYNCSELECT.bit.EPWM4SYNCIN = 0;EDIS;

EPwm4Regs.TBCTL.bit.SYNCOSEL   = TB_SYNC_IN; 

user6299106:

回复 Green Deng:

我看了跟您发的链接有两个不一样
1、周期寄存器更新我是这么写的EPwm1Regs.TBPRD= FrePrd;EPwm1Regs.TBPRDHR= FrePrdHR;
2、PWM模式时up-down

Green Deng:

回复 user6299106:

你好,我看了一下你的图片,图中的粉色波形是HRPWM1,黄色是HRPWM2吗?然后变频之后的第一个周期HRPWM会出现缺省一个周期的现象?

user6299106:

回复 Green Deng:

是的,低频变高频也会出现。

LLCDuty_HR = (Uint16) ((0.4)*65536); fLLCPrd = 50000/fLLCFreq + 0.5f; LLCPrd = (Uint16)(fLLCPrd); LLCPrd_HR = (Uint16)((fLLCPrd-LLCPrd)*65536);

EPwm1Regs.TBPRD = LLCPrd; EPwm1Regs.TBPRDHR =LLCPrd_HR;

EPwm1Regs.CMPA.bit.CMPA = LLCPrd/2-LLCDuty; EPwm1Regs.CMPA.bit.CMPAHR =65536-LLCDuty_HR ; EPwm1Regs.CMPB.bit.CMPB = LLCPrd/2+LLCDuty; EPwm1Regs.CMPB.bit.CMPBHR = LLCDuty_HR ;

Green Deng:

回复 user6299106:

周一(9月7日)是美国劳动节,美国工程师周一放假,E2E的回复会有推迟。

user6299106:

回复 Green Deng:

您好

我把这行注释掉  从示波器上看频率有改变。但是手册上写配置为updown 模式这个寄存器要配置为1,这个我比较困惑

//EPwm1Regs.HRPCTL.bit.TBPHSHRLOADE = 1;

但是占空比没法实现高分辨率, 是不是高分辨率两个边沿不能同时使用CMPA 和CMPB

EPwm2Regs.AQCTLA.bit.CAU = AQ_SET; /* Set PWM1A on Zero */ EPwm2Regs.AQCTLA.bit.CBD = AQ_CLEAR; /* Clear PWM1A on event A, up count */ EPwm2Regs.AQCTLB.bit.CAU = AQ_SET; /* Set PWM1B on Zero */ EPwm2Regs.AQCTLB.bit.CBD = AQ_CLEAR; /* Clear PWM1B on event B, up count */

赞(0)
未经允许不得转载:TI中文支持网 » 280049配置为高分辨率HRPWM, 变频时多路PWM怎么同步?
分享到: 更多 (0)