Hello,
I am teaching myself on the bq2084 and bq29312. I am using an old hp laptop battery for the learning phase, as I have one and the circuitry is all there.
I created a board with an AVR processor to do the reading and writing to/from the battery circuitry.
I am using the I2C of the AVR to communicate on the SMBus lines.
I can read from the read only functions, e.g. Voltage (command code: 0x09), Temperature (command code: 0x08), etc. But I am having a problem reading/writing the read and write functions.
For instance: the Manufacturer Access function. When I read SMB command code 0x00, it returns 0x0824 (2084 in decimal). Because I did not write to 0x00 to stipulate the command code to read from, it must have read from command code 0x001, as that is the command code for Device Type. Now if I want to read the Manufacturer Status, I need to first write 0x0004 to 0x00; and then when I read from 0x00, I should get the 2-byte (word) manufacturer status - but it still returns 0x0824.
Key for below: S=START, W=0(for write mode), R=1(for read mode), A=Acknowledge, N=Not-Acknowledge, P=STOP; data in {} is the data read from bq2084
WRITE: S 0001011W A 00000000 A 00000004 A 00000000 A P
one-millisecond delay (should only require >= 4.7microseconds, i.e. T(BUF))
READ: S 0001011W A 00000000 A S(re-start) 0001011R A {00100100} A {00001000} N S
Why is it still reading the Device Type (so it seems) and not the Manufacturer Status?
NOTE: the first time I read from 0x00, it returned 0x0000. I take it because Manufacturer Status cleared when bq2084 sealed (maybe command code is then 0x0000). When I tried writing 0x0001 to 0x00 and then read 0x00, I was still getting 0x0000. But then after a few tries it read 0x0824. So it seems somehow to have written 0x0001 to Manufaturer Status at some point, but now it does not want any other command code to be written to 0x00?!
The bq2084 is also in Permanent Failure Mode, so there is no voltage on PACK+ (there is voltage on BAT+ and 3V3 from bq29312). The bq2084 datasheet mentions that a series of ManufacturerAccess() commands are required to clear the /SAFE output and PF flag register. So I will need to get the Manufacturer Access working.
What is meant by a series of ManufacturerAccess() commands? Is it writing and reading a few times, e.g. Device Type, then Manufacturer Status, etc; OR is it another command code and data for 0x00 not listed in bq2084 datasheet ... if so, what is it/the procedure?
The hp battery is sealed (which makes sense). But when I move onto reading/writing DF - after I am finished with SMBus comms - I will need to unseal the bq2084! Is there an unseal code/s I can use? And what is the procedure (e.g. Manufacturer Access command code/s, etc).
Thank you