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.

DRV2605L: Overcurrent Detection blocking use

Part Number: DRV2605L

Tool/software:

I am working on a small wearable device and am using the DRV2605L as motor driver IC for a Vybronics-VC0720B088L haptic feedback motor.

I followed the Initialization Procedure in the datasheet:
- Waiting 250 μs before asserting EN or sending I2C commands
- Assert EN pin to HIGH
- Write MODE 0x00 to remove from standby mode
- Select library B
- Set control registers to use Open Loop ERM mode
- Set device to Standby

So far everything goes smoothly. But asserting the GO bit, no matter the MODE, causes the OC_DETECT flag to be set.

The same code has worked on the DRV2605L Devkit before, through the I2C peripheral on that board. Yet it does not work here.

I have tried connecting the motor, leaving the outputs open, connecting a load resistor of 120 Ohms, probing with Oscilloscope between the outputs and shorting the outputs to eachother.
All result in the same: OC_DETECT.

According to the datasheet, the driver should periodically re-monitor the short and set the flag to 0 if it is resolved. This has never happened, the driver always has to be powercycled to clear it.

This is how the IC is connected on the board:

I have tested the output pins, they are not shorted to eachother, ground, V_SYS or anything else I thought of.

Am I missing something?
Any and all suggestions are appreciated.

  • Hi Stein,

    You verified this motor work with the DRV2605L-EVM, correct? We've seen issues with some Vybronic motors in the past, but typically only LRAs.

    If you see an OC Detect error even with not motor connected, then it kind of eliminates the motor being the issue. It points to either a short in the layout from manufacturing or possibly from soldering the part onto the board (BGA packages are tough). From what you wrote, it sounds like you turn on the part and it acknowledges I2C transactions, but anytime you try to turn the output on it will detect an OC event, which is never cleared. And there is no short on the output when you probe them... This is tough. It seems like you have done all the right debug steps. 

    Is this across multiple boards/parts? 

  • Hi Kelly,
    Thank you for the quick response.

    The Devkit for testing the driver software was indeed the DRV2605L-EVM. Both motors on the board and my Vybronic motor worked as expected.

    About the OC Detect error, I have tried two boards with the same setup. Both boards give the same error, but I can not find the source of the short on either.

    Is it 100% certain to be a short between the OUT+ and OUT- channels? Or are there more things that can cause the OC Detect flag to be set?

  • Hi Stein,

    Yes, that single bit is only for OC detection.. Nothing else behind it. One suggestion would be to de-solder the part on your board and put it on an EVM and see if it works. It's kind of tough with these BGA's, but that would be the next thing I would try.

  • I found the issue. Apparently there was a typo in the code that calls the setting of the EN pin to high.

    So all the behaviour is caused by the driver never exiting the Shutdown power state:
     

    So the DRV2605L sets the OC_DETECT flag when you change the mode and set the GO bit but never set the EN pin.

  • Interesting.. Yes, the device may act strangely if EN is low, and you're writing I2C commands. From the datasheet: "The EN pin must be high to write I2C device registers. However, if the EN pin is low the DRV2605L device can still acknowledge (ACK) during an I2C transaction, however, no read or write is possible."

    As long as you solved your issue - sounds good!