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: I2C write with no ACK at last byte

Part Number: DRV10987
Other Parts Discussed in Thread: USB2ANY

Dear guys,

I am currently trying to control a BLDC motor using the DRV10987S and TM4C123G (but also tried with arduino - same issues). First, the main problem is that the device does not ACK the last byte for any 2-byte write via I2C. Using oscilloscope I could figure out this strange behaviour.

The picture below shows a communication write to register 0x30 (SpeedCtrl) with value 0x800A (I2C Override and Speed = 10). In the communication you can identify it as LITTLE ENDIAN, but I also tried with BIG ENDIAN as there is no info about it on datasheet: www.ti.com/.../drv10987.pdf section 8.5 Page 47.

The communication is: Start, Addr=0x52, R/W=0, ACK, Reg=0x30, ACK, Data=0x0A, ACK, Data=0x80, NACK, Stop

There is no ACK from device after 2nd byte, although the ACK is seen for any other transfer. This happens with every 2-byte write operation.

Besides this problem, the device ID read is always 0x00FF, confirmed by oscilloscope measurements. Also, the first read to FaultReg returns 0x00FF, and after writing 0xFFFF (or 0xFF ?) to clear register, every other read returns 0xFFFF.

So, simplyfing:

[1] No ACK after 2nd byte during I2C write;

[2] Device ID 0x00FF and Status 0xFFFF;

[3] I2C hardware from TM4C123G may not be the problem, as it works with other sensors at the bus.

Thanks for any kind of help,

Mateus