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.

CCS/TMS320F28069M: Program interpretation

Part Number: TMS320F28069M
Other Parts Discussed in Thread: CONTROLSUITE

Tool/software: Code Composer Studio

Hello,everyone.I don't understand the procedure.Please help me!

void HALLBLDC_State_Check(void)
{
// Hall_A, Hall_B, Hall_C
 gHall_GpioData  = (~HAL_readGpio(halHandle, (GPIO_Number_e)HAL_HallGpio_C) & 0x1) << 2;   //CAP1->J10/J4_1->green
 gHall_GpioData += (~HAL_readGpio(halHandle, (GPIO_Number_e)HAL_HallGpio_B) & 0x1) << 1;   //CAP2->J10/J4_2->green&white
 gHall_GpioData += (~HAL_readGpio(halHandle, (GPIO_Number_e)HAL_HallGpio_A) & 0x1);        //CAP3->J10/J4_3->gray&white
 gHall_State = gHall_GpioData;
 if(gHall_State != gHall_PrevState)
 {
  gHall_timer_now = HAL_readTimerCnt(halHandle,2);
  gHall_time_delta_now = gHall_timer_prev - gHall_timer_now;
  gHall_timer_prev = gHall_timer_now;
  gHall_time_delta = (gHall_time_delta_now + gHall_time_delta_prev)>>1;
  gHall_time_delta_prev = gHall_time_delta_now;
  gHall_speed_fdb_0p01Hz = gHall_speed_scale/gHall_time_delta;
  gHall_speed_fdb_pu = gHall_speed_fdb_0p01Hz*gHall_Speed_0p01hz_to_pu_sf;
//     if(TRAJ_getIntValue(trajHandle_spd) < _IQ(0.0))
//  {
//   gHall_speed_fdb_pu = -gHall_speed_fdb_pu;
//  }
     //direction check
  gHall_State_delta = gHall_PwmIndex[gHall_State] - gHall_PwmIndex[gHall_PrevState];
  if((gHall_State_delta == -1) || (gHall_State_delta == 5))
  {
   gHall_dir = 1;   // positive direction
  }
     else if((gHall_State_delta == 1) || (gHall_State_delta == -5))
  {
   gHall_dir = 2;   // negative direction
   gHall_speed_fdb_pu = -gHall_speed_fdb_pu;
  }
  else
  {
   gHall_dir = 0;   // direction change
  }
  //check if dirction is chagned.
  //if direction is changed, speed feedback is reset.
  if(gHall_dir != gHall_dir_prev)
  {
   gHall_speed_fdb_pu = _IQ(0.0);
   gHall_dir_change = 1;
  }
  gHall_LastState = gHall_PrevState;
  gHall_PrevState = gHall_State;
  gHall_dir_prev = gHall_dir;
  gHall_Flag_State_Change = true;
  gHall_PwmCnt = 0;
 }
 else
 {
  gHall_PwmCnt++;
  if(gHall_PwmCnt > gHall_PwmCntMax)
  {
   gHall_speed_fdb_pu = _IQ(0.0);
   gHall_PwmCnt = 0;
  }
 }
 return;
}
  • As replied to you in another post, the PWM state is defined by on the GPIO state of the Hall input signal.

    You might have a look at the example in controlSUITE about BLDC drive using the hall sensor. The controlSUITE can be downloaded from the following link.

    https://www.ti.com/tool/controlsuite

    To find the related document and example project in the below folder if you install the s/w by default.

    C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVBLDC_Sensored\~Docs