We have placed this part on the I2C bus, but I am having weird behavior. If I read register (cmd) 0x00, I have no problem. But if I issue any other command (i.e. read from any other register) I get intermittent correct results. I am looking at the bus with an analyzer and it's clear that a correct Word Read is issued for register 0, but only randomly for any other register.
To read the part I am following the SMB Word Read protocol as follows, and can observe this on the analyzer. Another issue is that there is an extra byte that comes across with the read. I assume it is the PEC, however, we are not purposely enabling PEC within the B120Z65, and I thought the default was no PEC. Also, the byte does not seem conform to the CRC-8 polynomial.
[S] Addr Wr [A] Command [A] [S] Addr Rd [A] Data Low [A] Data High [A] PEC [N] [P]
The following is what is observed as "weird" behavior when reading from other than register 0x00. Note that Data below is always repeat of the Command byte 3 times. If I continue to issue reads for the same command (register) it eventually is successful (maybe one out of 5 or 6 times). Note that what is missing is the repeated start and the Addr Rd byte. I do not know what is happening to that information on the bus.
[S] Addr Wr [A] Command [A] Data [A] Data [A] Data [N] [P]
Please note that we have a Smart Battery configured with this part on both the EV2300 SMB (which works just fine), as well as a seperate I2C bus (which only works intermittently for addresses other than 0x00). As far as I can tell, the communication between the host and the battery seems to be the same for both the EV2300 setup (SMB) as well the I2C configuration.
So the questions are:
1) Is there any reason this part cannot run on I2C? I.e. is the weird behavior because of I2C signalling versus SMB signalling? I thought they were pretty much the same.
2) What is the exact sequence of reads/writes needed to communicate with this part.
3) What is that third byte?
UPDATED INFO
The frequency I set the I2C bus at impacts the results. Nominally, the EV2300 configuration has the SMBus frequency at 64Khz. I have set the I2C bus frequency at 64 Khz, as well as 25Khz, 50Khz and 100 Khz. 100Khz works best, with Register 0 being successfully read about 99% of the time.