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/DRV8301-69M-KIT: Reset Fault on DRV8308EVM Board by software

Part Number: DRV8301-69M-KIT
Other Parts Discussed in Thread: DRV8308, DRV8301, MOTORWARE

Tool/software: Code Composer Studio

Dear Sir or Madam,

I'm using a DRV8301-69-kit with proj_lab04a. In some cases when I try to start my motor with a very high acceleration an error occurs and the FAULT LED turns on.

Is there any possibility to reset this error by software?

Yours sincerely

Heinz Mueller

  • Are you using a C2000 device to control the DRV8308? If it's an error with the DRV8308, you may query it's fault registers for some feedback. I haven't worked with the DRV8308 - if this does not involve a C2000 MCU then I will forward this question on to the DRV8308 team

    Sean
  • Hello Sean,

    I'm not using the DRV8308 but I use the DRV8301. The controller board is F2806x ISO controlCARD with an F28069 mcu.

    The error showing up is the Fault LED on the power board.

    When en error occurs the controller card ist stil working, but I have to disconnect power to make the DRV8301 working again.

    This off and on procedure I'd like to solve with a software reset of the DRV8301 if possible.

    Best regards,

    Heinz

  • Hi Heinz,

    Are you able to read the registers after the Fault LED turns on? If so, please read status registers 0 and 1 and report the values.

    There are two known events that could require power cycles to recover. These are described in sections 7.3.4.2 and 7.4.1 of the datasheet. Could one of these be occurring?
  • Hi Rick,

    the status registers are:

    I read the sections you noticed and also section 7.3.4.1. I think it's an over current protection error and I know that this error will occure in the conditions I run the motor. So this is no problem.

    It is just the way I have to reset the board to continue my tests. I already tried to toggle GPIO 51 but couldn't reset the DRV8301.

    Best regards, Heinz

  • Hi Rick,

    sorry the last post didn't show up the register valuse.
    So once again.

    The status registers are:

    Stat_Reg_1 struct _DRV_SPI_8301_Stat1_t_ {...} 0x00801F@Program
    FAULT unsigned int 1024 0x00801F@Program
    GVDD_UV unsigned int 512 0x008020@Program
    PVDD_UV unsigned int 0 0x008021@Program
    OTSD unsigned int 0 0x008022@Program
    OTW unsigned int 0 0x008023@Program
    FETHA_OC unsigned int 0 0x008024@Program
    FETLA_OC unsigned int 0 0x008025@Program
    FETHB_OC unsigned int 0 0x008026@Program
    FETLB_OC unsigned int 0 0x008027@Program
    FETHC_OC unsigned int 0 0x008028@Program
    FETLC_OC unsigned int 0 0x008029@Program
    Stat_Reg_2 struct _DRV_SPI_8301_Stat2_t_ {...} 0x00802A@Program
    GVDD_OV unsigned int 0 0x00802A@Program
    DeviceID unsigned short 0 0x00802B@Program
    Ctrl_Reg_1 struct _DRV_SPI_8301_CTRL1_t_ {...} 0x00802C@Program
    Ctrl_Reg_2 struct _DRV_SPI_8301_CTRL2_t_ {...} 0x008031@Program
    SndCmd unsigned int 0 0x008035@Program
    RcvCmd unsigned int 0 0x008036@Program
    gMotorVars.UserErrorCode enum unknown USER_ErrorCode_NoError 0x00810C@Program
    Add new expression


    I read the sections you noticed and also section 7.3.4.1. I think it's an over current protection error and I know that this error will occure in the conditions I run the motor. So this is no problem.

    It is just the way I have to reset the board to continue my tests. I already tried to toggle GPIO 51 but couldn't reset the DRV8301.

    Best regards, Heinz

    Heinz M.
  • Hi Heinz,

    Sorry for the delay. The fault reported is a GVDD_UV. This fault can appear as the device is being enabled (EN_GATE toggles from low to high) or it could be a real fault.

    Have you confirmed all regulators (GVDD, DVDD, and AVDD) are operating correctly after the fault?

    Have you tried to observe the difference on PVDD during a slow acceleration and a fast acceleration? If you observe a difference, please provide scope captures.
  • Hi Rick,

    when a fault occurs and I switch off an on the device all regulators are working correctly.

    While the fault is on I can't run my motor.

    There is no difference on PVDD during a slow and fast acceleration.

    The problem is not that this fault occurs. My problem is that I have to power off and on the controller when this fault occurs to run my motor again.

    So I can't run a series of tests automatically because I have to observe when that fault occurs.

    My question is whether this fault can be reset by software.

    Best regards, Heinz

  • Hi Heinz,

    You can try setting EN_GATE low for a few ms (5 to 10) to allow the regulators to reset. Then re-enable the device using EN_GATE. Toggling EN_GATE is as close to a power cycle as possible.

    Since we really don't know what is causing the event, this may not work.

    I asked a colleague who is more familiar with the device if he had any reports of this type of behavior. He had not.
  • Hi Rick,

    thanks a lot for your answer. I'll try it and post the result.
    To make you understand how I produce this fault let me explain my test conditions.

    First speed regulated mode to specify maximum acceleration:

    1. Set controller to speed mode
    2. Set velocity to maximum speed of my motor
    3. Set acceleratin to 1000/min*sec
    4. Start motor and aquire speed over time
    5. Stop motor
    6. Increase acceleration by 1000/min*sec and repeat step 3 to 5 until a DRV8301 fault occurs.


    Second torque (current) regulated mode to specify maximum acceleration:

    1. Set controller to torque mode
    2. Set IqRef to 1 A
    3. Start motor and aquire speed over time
    4. Stop motor
    5. Increase IqRef by 1 A and repeat step 2 to 4 until a DRV8301 fault occurs.

    Best regards,
    Heinz
  • Hello Rick,

    I tried to toggle EN_GATE as you proposed but couldn't get a positiv result.

    According to the DRV8301 documentation chapter 7.4.1 I tested with 5 µSec, 30µSec and 8000µSec.

    obj->gpioNumber is 51.

    The result of all cases was no change at all. Is this GPIO write protected?

    As I'm not sure if my code will work this way there's the snippet:

    void DRV8301_restart(DRV8301_Handle handle, unsigned int uiDel)
    {
      DRV8301_Obj *obj = (DRV8301_Obj *)handle;
      static volatile uint16_t enableWaitTimeOut;
      uint16_t n = 0;

      // disable the drv8301
      GPIO_setLow(obj->gpioHandle,obj->gpioNumber);
      DELAY_US((long)uiDel);
      // ensable the drv8301
      GPIO_setHigh(obj->gpioHandle,obj->gpioNumber);

      // Wait for the DRV8301 registers to update
      for(n=0;n<0xffff;n++)
        asm(" NOP");

      return;
    }

    Any idea would be great.

    Best regards, Heinz

  • The GPIO_setLow() and GPIO_setHigh() functions enable protected register write mode, so that shouldn't be an issue here. I don't see any issue with your code - it closely resembles the DRV8301_enable() API that is provided in Motorware

    Sean
  • Hi Heinz,

    What motor are you using?
    What are the motor parameters?
    Is there a method to replicate the fault without using a motor?
    Are there any scope captures that will help replicate the fault?

    Until the fault can be replicated, we cannot determine the cause or a possible workaround.
  • Hi Heinz,

    Since we have not heard back from you, we are assuming your issue was resolved. If it was not please reply to the post, or open a new post if this one has been locked.
  • Hi Rick,

    this problem isn't resolved yet. I had to suspend the project for some weeks. In about 2 weeks I can continue working on it.

    Best regards, Heinz

  • Hi Heinz,

    Thank you for the update. Please let us know when you are ready to continue. As mentioned, the post may be locked. If it is, please open a new post and reference this one.