Other Parts Discussed in Thread: BQSTUDIO, EV2400
Follow up on the previous thread, the manual SLUA801 is examined and the recommended workflows for the extended commands are implemented.
Situations mentioned in the previous thread persist with additional observations.
1. Offset from full block read
Instead of reading two bytes from specific block offset, a new implementation has been tried to read full block.
The write command is 0x40 and 32 bytes were read.
Abnormal format of return data is received. Read data is coherent with the manual but the read byte offset is incorrect. For example, when subclass STATE with id of 0x52 was read, the Q Invalid Max V was read in offset 5 instead of 6. All data are shifted one byte forward. And hence i am not sure which byte is omitted.
In addition, the last byte(byte 31) of the transaction is the checksum value. I am not sure whether it is mentioned in the manual.
2. Unresponsive BlockData() access command
Similar as the setup in above, the the write command is changed into 0x46 to access block value with offset 6 to access the Q invalid Max V value directly. However the return read data is identical to the previous command. BlockData() of 0x40 and 0x46 return the same data, which is unexpected.
3. Requirement of checksum write in prior of BlockData()
I am not sure if my understanding is correct, but the checksum value of the pending write block data had to be transfer before setting new blockData value to avoid a NACK situation.
The manual SLUA801 seems to perform checksum write after the write block data, which might not be coherent to the suggestion in manual SLUUAS7B.
I might be wrong in this observation. Despite the NACK situation is resolved, I do not think the write procedure is accepted as the register values after BlockData() write did not change. I am still working on that.
Thanks again for your attention.