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

HRPEM 移相

您好,

   我的板子型号是28377D,我在用HRPWM实现高精度移相,但是出来的波形没有实现,是不是我的寄存器配置有问题,

void InitEPwm3Example()
{
//
// Setup TBCLK
//
EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up
EPwm3Regs.TBPRD = EPWM3_TBPRD; // Set timer period
EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Disable phase loading
EPwm3Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm3Regs.TBCTL.bit.SYNCOSEL =TB_SYNC_IN;
EPwm3Regs.TBPHS.bit.TBPHS= EPWM3_TBPRD-D2; // Phase is 0
EPwm3Regs.TBPHS.bit.TBPHSHR= (1<<8);
EPwm3Regs.TBCTR = 0x0000; // Clear counter
EPwm3Regs.TBCTL.bit.HSPCLKDIV = TB_DIV2; // Clock ratio to SYSCLKOUT
EPwm3Regs.TBCTL.bit.CLKDIV = TB_DIV1;

//
// Setup shadow register load on ZERO
//
EPwm3Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm3Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm3Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm3Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

//
// Set Compare values
//
EPwm3Regs.CMPA.bit.CMPA = EPWM3_CMPA; // Set compare A value

//
// Set actions
//
EPwm3Regs.AQCTLA.bit.PRD =AQ_SET; // Clear PWM2A on Period
EPwm3Regs.AQCTLA.bit.CAU = AQ_CLEAR; // Set PWM2A on event A,

//
// Interrupt where we will change the Compare Values
//
EPwm3Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero event
EPwm3Regs.ETSEL.bit.INTEN = 1; // Enable INT
EPwm3Regs.ETPS.bit.INTPRD = ET_3RD; // Generate INT on 3rd event

EALLOW;
EPwm3Regs.HRCNFG.all = 0x0;
EPwm3Regs.HRCNFG.bit.EDGMODE = HR_REP; //MEP control on Rising edge
EPwm3Regs.HRCNFG.bit.CTLMODE =HR_PHS;
EPwm3Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO;

EDIS;
return;
}

在main函数中EPwm3Regs.TBPHS.bit.TBPHSHR=EPWM3_TBPRD-D2_hr; D2_hr指的是高精度移相的角度

Green Deng:

你好,你可以参考一下这个例程的代码:
C:\ti\c2000\C2000Ware_3_02_00_00\device_support\f2837xd\examples\cpu1\hrpwm_duty_sfo_v8

赞(0)
未经允许不得转载:TI中文支持网 » HRPEM 移相
分享到: 更多 (0)