Hi,
I 've designed a PCB which has a BQ40Z60 and I'm having problems trying to communicate with it from a MSP430G2553 using AlternateManufacturerAccess().
When sending SBS Command 0x57, ManufacturingStatus, I get 0x0002 as data(I assume it is correct).
When sending MAC 0x0057, ManufacturingStatus(), using ManufacturerAccess() and ManufacturerData(), I get a ACK to each byte of SMBus block write and I get 0x0002 as data .
When sending MAC 0x0057, ManufacturingStatus(), using AlternateManufacturerAccess(), I get a NACK as a response to the first byte of SMBus block write. So I don't transmit the second byte of the command and I get 0x5704 and 0x0000 as data(which isn't correct, should be 0x0057 0x0002)
I also tried to send the command in big endian (which obviously doesn't work) and I got exactly the same situation as before.
If I try to send another command, 0x0006, (Chemical ID()) as in the example in page 106 of SLUUA04, I get:
Using ManufacturerAccess(), I receive ACK's for the data sent (0x0006) and 0x1002 as data received, which I suppose is correct.
Using AlternateManufacturerAccess() I receive ACK's for the data sent (0x0006) and as data received 0x0604 and 0x1000 (should be 0x0006 and 0x1002?)
Furthermore, if I write the command with ManufacturerAccess() and read the data with AlternateManufacturerAccess(), the response is the same, 0x0604 0x1000.
If I do the opposite, write the command with AlternateManufacturerAccess() and read the data with ManufacturerData(), I get 0x1002 (although I suspect the output buffer doesn't get correctly updated).
Trying with other MAC's, such as 0x0050 (SafetyAlert), 0x0051 (SafetyStatus) or 0x0064 (Lifetime Data Block 5) gives me the same result of 0x0057, a NACK.
If I understood correctly (page 106 of SLUUA04) in order to get data from the BQ40Z60 using AlternateManufacturerAccess(), I have to send a SMBus block write with command 0x44 and MAC. Then I have to send a SMBus block read with command 0x44 and read the data.
So, having said all this, do you know what am I doing wrong?
Thanks,
Ildefonso