您好,
我的板子型号是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指的是高精度移相的角度