DRV8308 偶发无法启动问题

Other Parts Discussed in Thread: DRV8308

现在用的DRV8308驱动一个23W的带霍尔的BLDC电机做的速度控制,应用为Clock Frequency Mode,速度反馈通过马达上的一个512线的增量编码器输入给DRV8308

根据应用要求fclk的控制频率为13KHz。大部分的情况下,马达运行没有问题。但是会有小概率(1%的概率吧)情况下马达不能转动,并发出振鸣声。

附件是drv8308寄存器的配置情况,请TI的工程师或热心的小伙伴帮看下。多谢了

drv8308 setting.txt
 G_CTRL1_REG.Address       = 0x00;
  G_CTRL1_REG.AG_SETPT      = 0x0D;
  G_CTRL1_REG.ENPOL         = 0x0;
  G_CTRL1_REG.DIRPOL        = 0x0;
  G_CTRL1_REG.BRKPOL        = 0x0;
  G_CTRL1_REG.SYNRECT       = 0x1;
  G_CTRL1_REG.PWMF          = 0x1;
  G_CTRL1_REG.SPDMODE       = 0x0;  //clock frequency mode
  G_CTRL1_REG.FGSEL         = 0x3;  //use TACH input signal
  G_CTRL1_REG.BRKMOD        = 0x0;  //brake upon disable
  G_CTRL1_REG.RETRY         = 0x1;

  // ADVANCE Register
  G_ADVANCE_REG.Address     = 0x01;
  G_ADVANCE_REG.ADVANCE     = 0x00;

  // COMCTRL1 Register
  G_COMCTRL1_REG.Address    = 0x02;
  G_COMCTRL1_REG.SPDREVS    = 0x03;
  G_COMCTRL1_REG.MINSPD     = 0xB4;

  // MOD120 Register
  G_MOD120_REG.Address      = 0x03;
  G_MOD120_REG.BASIC        = 0x0;
  G_MOD120_REG.SPEEDTH      = 0x6;
  G_MOD120_REG.MOD120       = 0xF82;

  // DRIVE Register
  G_DRIVE_REG.Address       = 0x04;
  G_DRIVE_REG.LRTIME        = 0x0;
  G_DRIVE_REG.HALLRST       = 0x0;
  G_DRIVE_REG.DELAY         = 0x0;
  G_DRIVE_REG.AUTOADV       = 0x1;
  G_DRIVE_REG.AUTOGN        = 0x0;
  G_DRIVE_REG.ENSINE        = 0x0;
  G_DRIVE_REG.TDRIVE        = 0x1;
  G_DRIVE_REG.DTIME         = 0x0;
  G_DRIVE_REG.IDRIVE        = 0x0;

  // SPDGAIN Register
  G_SPDGAIN_REG.Address     = 0x05;
  G_SPDGAIN_REG.INTCLK      = 0x3;
  G_SPDGAIN_REG.SPDGAIN     = 0x32; //100

  // FILK1 Register
  G_FILK1_REG.Address       = 0x06;
  G_FILK1_REG.HALLPOL       = 0x1;
  G_FILK1_REG.BYPFILT       = 0x0;
  G_FILK1_REG.FILK1         = 0x3E8; //1000

  // FILK2 Register
  G_FILK2_REG.Address       = 0x07;
  G_FILK2_REG.FILK2         = 0x190; //400

  // COMPK1 Register
  G_COMPK1_REG.Address      = 0x08;
  G_COMPK1_REG.BYPCOMP      = 0x0;
  G_COMPK1_REG.COMPK1       = 0x12C; //300

  // COMPK2 Register
  G_COMPK2_REG.Address      = 0x09;
  G_COMPK2_REG.AA_SETPT     = 0x0;
  G_COMPK2_REG.COMPK2       = 0x258;//600

  // LOOPGN Register
  G_LOOPGN_REG.Address      = 0x0A;
  G_LOOPGN_REG.OCPDEG       = 0x3;
  G_LOOPGN_REG.OCPTH        = 0x3;
  G_LOOPGN_REG.OVTH         = 0x0;
  G_LOOPGN_REG.VREF_EN      = 0x0;
  G_LOOPGN_REG.LOOPGN         = 0x3E8; //1000

  // SPEED Register
  G_SPEED_REG.Address       = 0x0B;
  G_SPEED_REG.SPEED         = 0xFA0;  //4000

  // FAULT Register
  G_FAULT_REG.Address       = 0x0C;
  G_FAULT_REG.RLOCK         = 0x0;
  G_FAULT_REG.VMOV          = 0x0;
  G_FAULT_REG.CPFAIL        = 0x0;
  G_FAULT_REG.UVLO          = 0x0;
  G_FAULT_REG.OTS           = 0x0;
  G_FAULT_REG.CPOC          = 0x0;
  G_FAULT_REG.OCP           = 0x0;
}