This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DRV8302: Technical Assistance Request for DRV8302 Circuit Issues

Part Number: DRV8302
Other Parts Discussed in Thread: DRV8161EVM

Tool/software:

I am reaching out to request technical assistance with some issues I've encountered while using the DRV8302 circuit. Initially, I faced a problem with the integrated buck converter failing to output 5 volts, which led me to disable it by connecting the EN_BUCK PIN to GND and using an external power source instead.

During the first trial, the motor only vibrated without turning, and shortly afterward, pins 29 and 30 burned out, showing nFAULT and nOCTW errors. In the second trial, I avoided connecting any components to the buck converter and connected pin 55 to ground. Unfortunately, after powering up the system, the card burned out, and pin 55 was also damaged.

I seek your support to understand whether the IC is still operational and undamaged, and to know the required signal to be input into the circuit. I am using a Six Step Commutation algorithm with an STM32F105 to generate the signal. Is this issue related to hardware or software? I have checked all internal power pins, and their values were within the acceptable range.

You can access the project files from here:

https://drive.google.com/drive/folders/1kg5lvlmvnN4wENb28xE1LVQ3SBfBA0m2?usp=sharing

Here is some of the control code used in my experiment:

/****************************** STATE 1 *********************************/
if (HALL_A==1 && HALL_B==0 && HALL_C==1 )
{
//B->A
    set_PWM_duty_cycle(&htim1, TIM_CHANNEL_1, 0.0);	//AH
    set_PWM_duty_cycle(&htim1, TIM_CHANNEL_2, Duty);//BH
    set_PWM_duty_cycle(&htim1, TIM_CHANNEL_3, 0.0);	//CH

    HAL_GPIO_WritePin(INL_A_GPIO_Port, INL_A_Pin, 1 );//AL
	HAL_GPIO_WritePin(INL_B_GPIO_Port, INL_B_Pin, 0 );//BL
	HAL_GPIO_WritePin(INL_C_GPIO_Port, INL_C_Pin, 0 );//CL
}
/****************************** STATE 2 *********************************/
else if (HALL_A==1 && HALL_B==0 && HALL_C==0 )
{
//C->A
	set_PWM_duty_cycle(&htim1, TIM_CHANNEL_1, 0.0); //AH
    set_PWM_duty_cycle(&htim1, TIM_CHANNEL_2, 0.0); //BH
    set_PWM_duty_cycle(&htim1, TIM_CHANNEL_3, Duty); //CH

	HAL_GPIO_WritePin(INL_A_GPIO_Port, INL_A_Pin, 1);//AL
	HAL_GPIO_WritePin(INL_B_GPIO_Port, INL_B_Pin, 0);//BL
	HAL_GPIO_WritePin(INL_C_GPIO_Port, INL_C_Pin, 0);//CL


}
/****************************** STATE 3 *********************************/
else if (HALL_A==1 && HALL_B==1 && HALL_C==0 )
{
	//C->B
    set_PWM_duty_cycle(&htim1, TIM_CHANNEL_1, 0.0); //AH
    set_PWM_duty_cycle(&htim1, TIM_CHANNEL_2, 0.0); //BH
    set_PWM_duty_cycle(&htim1, TIM_CHANNEL_3, Duty); //CH

    HAL_GPIO_WritePin(INL_A_GPIO_Port, INL_A_Pin,0 );//AL
	HAL_GPIO_WritePin(INL_B_GPIO_Port, INL_B_Pin, 1);//BL
	HAL_GPIO_WritePin(INL_C_GPIO_Port, INL_C_Pin, 0);//CL
}
/****************************** STATE 4 *********************************/
else if (HALL_A==0 && HALL_B==1 && HALL_C==0 )
{
    //A->B
    set_PWM_duty_cycle(&htim1, TIM_CHANNEL_1, Duty); //AH
    set_PWM_duty_cycle(&htim1, TIM_CHANNEL_2, 0.0); //BH
    set_PWM_duty_cycle(&htim1, TIM_CHANNEL_3, 0.0); //CH

    HAL_GPIO_WritePin(INL_A_GPIO_Port, INL_A_Pin, 0);//AL
	HAL_GPIO_WritePin(INL_B_GPIO_Port, INL_B_Pin, 1);//BL
	HAL_GPIO_WritePin(INL_C_GPIO_Port, INL_C_Pin, 0);//CL
}
/****************************** STATE 5 *********************************/
else if (HALL_A==0 && HALL_B==1 && HALL_C==1 )
{
    //A->C
    set_PWM_duty_cycle(&htim1, TIM_CHANNEL_1, Duty); //AH
    set_PWM_duty_cycle(&htim1, TIM_CHANNEL_2, 0.0); //BH
    set_PWM_duty_cycle(&htim1, TIM_CHANNEL_3, 0.0); //CH

	HAL_GPIO_WritePin(INL_A_GPIO_Port, INL_A_Pin, 0);//AL
	HAL_GPIO_WritePin(INL_B_GPIO_Port, INL_B_Pin, 0);//BL
	HAL_GPIO_WritePin(INL_C_GPIO_Port, INL_C_Pin, 1);//CL
}
/****************************** STATE 6 *********************************/
else if (HALL_A==0 && HALL_B==0 && HALL_C==1 )
{
    //B->C
    set_PWM_duty_cycle(&htim1, TIM_CHANNEL_1, 0.0); //AH
    set_PWM_duty_cycle(&htim1, TIM_CHANNEL_2, Duty); //BH
    set_PWM_duty_cycle(&htim1, TIM_CHANNEL_3, 0.0); //CH

    HAL_GPIO_WritePin(INL_A_GPIO_Port, INL_A_Pin,0 );//AL
	HAL_GPIO_WritePin(INL_B_GPIO_Port, INL_B_Pin,0 );//BL
	HAL_GPIO_WritePin(INL_C_GPIO_Port, INL_C_Pin,1 );//CL
}
/***********************************************************************/

I hope you can assist me in resolving these issues as soon as possible. Thank you for your attention and assistance.

Best regards,