Part Number: TMS320F28379D
Other Parts Discussed in Thread: DRV8323
Hi,
I am using a TMS320f28379D microcontroller with DRV8323 for encoder based PMSM control. I have made my custom code by taking "MonoMtrServo_377s_v1_00_00_00". I am able to run the motor in both direction in FOC and with speed control. But I am about to speed above 1000RPM, the motor makes some weird "tick" noise. The rated speed of motor is 12000RPM.
I am using 6xPWM mode in DRV8323. Since i suspect the PWM configuration, i included PWM config as below.
Switching frequency - 20KHz
void init_pwm(PWMGEN *l_pwm_gen, volatile struct EPWM_REGS * PwmRegs)
{
/* Init Timer-Base Period Register for EPWM1-EPWM3*/
PwmRegs->TBPRD = (l_pwm_gen->PeriodMax/2);
/* Init Timer-Base Phase Register for EPWM1-EPWM3*/
PwmRegs->TBPHS.bit.TBPHS = 0;
PwmRegs->TBCTR = 0;
PwmRegs->TBCTL.bit.CLKDIV = TB_DIV1 ;
PwmRegs->TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
PwmRegs->TBCTL.bit.HSPCLKDIV = TB_DIV1;
PwmRegs->TBCTL.bit.PHSEN = TB_DISABLE;
PwmRegs->TBCTL.bit.PRDLD = TB_IMMEDIATE;
PwmRegs->TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
PwmRegs->CMPA.bit.CMPA = 0;
PwmRegs->CMPCTL.bit.SHDWAMODE = CC_SHADOW;
PwmRegs->CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
// Action Qualifier SubModule Registers
PwmRegs->AQCTLA.bit.CAU = AQ_CLEAR;
PwmRegs->AQCTLA.bit.CAD = AQ_SET;
/* Init Dead-Band Generator Control Register for EPWM1-EPWM3*/
PwmRegs->DBCTL.all = BLDCPWM_DBCTL_CLEAR_STATE;
/* Init PWM Chopper Control Register for EPWM1-EPWM3*/
PwmRegs->PCCTL.all = BLDCPWM_PCCTL_INIT_STATE;
}
void init_pwm_deadband(PWMGEN *l_pwm_gen, volatile struct EPWM_REGS * PwmRegs)
{
/* Init Dead-Band Generator Control Register for EPWM1-EPWM3*/
PwmRegs->DBCTL.all = BLDCPWM_DBCTL_INIT_STATE;
PwmRegs->DBRED.bit.DBRED = 100;
PwmRegs->DBFED.bit.DBFED = 100;
}
Regards,
kaarthi