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.

DRV10987: Sometimes I2C communication is not working. Inquiry about how to recover and recreate a state

Part Number: DRV10987

Hello.

I am developing product using DRV10987D.

Sometimes, I found that I2C's communication was not working.

As a result of checking through the oscilloscope, one of the communication lines (SDA, SCL) of the I2C is maintained as LOW.

As a result, the motor is turned on because the SPEED PIN is HIGH. (Regardless of my will).

Perhaps due to the PowerOnReset of drv10987, the override bit is assumed to be 0, so it is motor driven according to the voltage level of SPEED PIN.

In order to overcome this, I want to reproduce the situation where communication is impossible first. (Maybe DRV10987 IC keeps SDA or SCL line to LOW.)

How can I reproduce the above situation?

 

And to overcome this, the code I wrote is as follows.

1. I2C_PORT_INIT // Set Micom's SCL,SDA Port As GPIO
2. I2C_PORT_SET_BOTH_LOW, //Set both port Output Low (maintain 1ms)
3. I2C_PORT_SET_SCL_HIGH, //Set SCL high and hold (maintain 1ms)
4. I2C_PORT_SET_SDA_HIGH, //Set SDA high and hold (maintain 1ms)
5. I2C_PORT_SET_AS_FUNC, //Set Micom's SCL,SDA Port As I2C ALT Function
6. I2C_PORT_RESET_FINISH

Is anything wrong?

I'm sorry about my many questions.

Thanks

  • Hi Sukwoo,

    Thanks for posting your question in MD forum. I2C lines could go low when the device is in sleep mode. Can you confirm if the I2C lines are pulled up to any regulators on the DRV10987 (VREG or V3P3)? Can you check if the external MCU that is communicating to the device pulling the I2C lines low?  Also, can you check if the SPEED PIN is high always? If SPEED pin goes low then the device will enter sleep mode and I2C lines will be pulled low. 

    Regards,

    Vishnu

  • Thank you for your opinion.

    Vishnu Balaraj said:

    Hi Sukwoo,

    Thanks for posting your question in MD forum.

    I2C lines could go low when the device is in sleep mode. Can you confirm if the I2C lines are pulled up to any regulators on the DRV10987 (VREG or V3P3)?

    Can you check if the external MCU that is communicating to the device pulling the I2C lines low? 

     A) I connected only DRV10987 to I2C line. Only one IC(DRV10987D) is registered in the I2C communication line. Therefore, there is no effect by external devices.

    Also, can you check if the SPEED PIN is high always? If SPEED pin goes low then the device will enter sleep mode and I2C lines will be pulled low. 

     A) SPEED PIN is always in HIGH. Because my program controls the speed by setting the override bit to 1, the micom sets the override bit to 1 When Micom is reset.

    However, since the communication is not occasional (SDA or SCL is LOW), the motor operates by the SPEED PIN when the override bit is 0(DRV10987's POR State), the unintended motor operation is a problem.

     

    and I also check 3.3 LDO is down or not for checking sleep mode, so I am sure I2C Communication failure is not a result of Sleepmode.

    Regards,

    Vishnu

  • Hi Sukwoo,

    Thanks for the information. Can you confirm if the I2C lines are pulled up to any regulators on the DRV10987 (VREG or V3P3)? Can you check if the master device is actually sending I2C command to DRV10987? Also, can you check which I2C line is low?

    Regards,

    Vishnu.

  • Hi Sukwoo,

    I will close this for now, since I haven't heard a response back. If you want a follow-up, please feel free to reply to this thread or create a new thread.

    Regards,

    Vishnu