Some SMBus communication via I2C object gets NAK from device

Device is a bq4050. Attempting to use ManufacturerBlockRead (0x44) does not work while pretty much everything else does.


Above is a successful read from a single byte command.


Above is a failed read – it looks like I2C stops writing after the first byte.

data[0] = 0x44; data[1] = 0x54; data[2] = 0x00;
i2c.write(addr, data, 3, true);
i2c.read( addr, data, 12);

This device expects the start/stop bits so I must use that argument in i2c.write. But this seems like a separate issue. It does not clock out the third byte due to receiving a NAK. Would this be a device side issue?

What is not included in the picture is the device clocking out 54 00 before many zeros. I get no data from the command, but it seems to echo back the ManufacturerBlockRead command I gave it.

(In this case the command 0x54 and 0x44 54 00 are basically equivalent, save the 44 version starts 54 00 … as opposed to a normal block read.)

HI I think you would need to provide more of your code for anyone to be able to help you :slight_smile: