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: Issue with I2C communication

Part Number: DRV10987
Other Parts Discussed in Thread: DRV10983

Hi,

I am attempting to write something via I2C to DRV10987 but the last byte is not acknowledged. As a first step I want to enable shadow register, so I set the 12th bit of EEPROM programming 5 register (0x35). Pull up resistors are 4k7 per recommendations in datasheet. My supply voltage is 12V and motor is connected. Here are traces measured by oscilloscope.

This is the first byte right after "START". This byte is write address of DRV10987 and it is acknowledged (the device is connected correctly and replying).

The second byte is the EEPROM Programming 5 register (0x35). This byte is acknowledged as well.

The third byte is the first portion of data, where bit 12 is set, all others are cleared. This byte was acknowledged as well.

The fourth byte is the rest of data, what is basically all zeroes. This byte is NOT acknowledged without any reason.

Could somebody help me with this? I spent lot of time with changing the clock frequency or other things without any change. Oscilloscope is used to detect possible noise in the communication. This is the very first portion of data sent to the device after power up. I tried to write to another registers with the same result. I did not try reading anything.

For easier readability of the signals here is the logic analyzer output:

Thanks a lot for help in advance!

  • Sorry for asking before exhausting all the issues what may occur. I checked the connection of device on the PCB and find out that VREG is not 5V but 3V3. This was suspicious to me and was trying to review the schematics. When checking the PCB again I took a closer look to the device and figured out it is DRV10983 not DRV10987. Since DRV10983 has 8 bits registers, second register was NACKed. Since VREG was 3V3, the bit #2 in 0x2A should be set. After reading the byte 0x2A I got the expected value of bit 2. Here is the logic analyzer output:

    So I bought DRV10987 but accidentally received DRV10983. Did not expect this to happen so I didn't check it. Sorry again for asking.