Part Number: BQ40Z50-R3-DEVICE-FW
Using the BQ40z50-R3 and controlling it via a msp430 through SMBus, developers are told to use block read/block write commands for manufacturer access. I am using a MSP430FR5949 as single master with broadcasts from the bq40z50-R2 slave (running R3 firmware) turned off.
Without modifying smbus_nwk.c this is not possible for quite a few of the commands. smbus_nwk.c/SMBus_NWK_masterProcessRx(SMBus *smbus,uint8_t data) does a check on the first byte returned, which in the BQ40z50-R3 is the byte count.
Currently there is a limit of 32 bytes as per SMBus standard, however, with ManufacturerBlockAccess 0x44 0x0071 (DAStatus_1) the byte count will always be 34 or higher with PEC, making the check fail and returning an error.
There is no documentation of this anywhere (at least that I could locate). This discrepancy should at least addressed in the bq40z50-R3 technical manual as it would lead you to believe the proper method of reading from Man.BlockAccess is to perform this process to read DAStatus1 0x0071 (as example)
1.block write 0x44 (0x71, 0x00)
2. block read 0x44.
However, in practice despite the fact that the register itself only contains 32 bytes of data the first byte returns 34 which includes the data and the 2 byte address.