This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

BQ78350-R1: Reading Operation Status Using Manufacturer Block Access (0x44)

Part Number: BQ78350-R1
Other Parts Discussed in Thread: BQ78350

Tool/software:

Hello,

I am working on Manufacturer Access command implementation. In the technical reference it has mentioned to read Operation status or Manufacturer status , using Manufacturer block access(0x44) or manufacturer data (0x23) . But there is not enough information about (0x44) or (0x23). I am not using Bq studio. 

I want to perform read write operation using code. 

Can anyone please help with reading commands using 0x44 and 0x23?

Thank you in advance!

Regards,

Kaushalya

  • Please use 0x44 and follow the instruction from the TRM, 17.2 0x00 ManufacturerAccess() and 0x44 ManufacturerBlockAccess()

    If you want to read OperationStatus, you'll first have to issue an smbus write word command to 0x00 or 0x44 with 0x0054 (=OperationStatus), followed by an smbus read block command to 0x00 or 0x44.

    The read block command will return 4 bytes if you issued 0x0054 (=OperationStatus). The meaning of these 4 bytes is explained in the TRM, 17.2.38 ManufacturerAccess() 0x0054 OperationStatus

  • This way I am trying to read Operation status

    // MAC (0x00) definition

    void Write_ManufacturerAccess(uint16_t MacCmd)
    {
    uint8_t data_length=2;
    uint16_t txbuffer[2] = {MacCmd & 0xFF, (MacCmd >> 8) & 0xFF}; //Little Endian Format

    I2C_Write_2byte(MANUFACTURERACCESS_SUBCOMMAND,txbuffer,data_length);

    }

    // writing Operation status on 0x00

    Write_ManufacturerAccess(0X0054);

    //read 0x0054

    BMS_GET_MANUFACTURER_BLOCK_ACCESS();

    // definition of 0x44

    void BMS_GET_MANUFACTURER_BLOCK_ACCESS(void)
    {

    vHAL_RIIC_Receive(&BQ78350_SubCommand[MANUFACTURERBLOCKACCESS_SUBCOMMAND].command,BQ78350_SubCommand[MANUFACTURERBLOCKACCESS_SUBCOMMAND].dataptr,BQ78350_SubCommand[MANUFACTURERBLOCKACCESS_SUBCOMMAND].command_len);

    }

    Does BMS_GET_MANUFACTURER_BLOCK_ACCESS needs to be modified, can you please confirm what is possible correction?

    Also, in section 17.2.1 it's written as "A read on this command returns the lowest 16-bit of the OperationStatus() data". what does this mean?

  • Hi Dominik

    I have pasted the snippet from my code.

    Do you need any other information for my end to understand this issue?

  • Kaushalya,

    I can't comment on your uC specific code (e.g. vHAL_RIIC_Receive).

    I can support you with gauge related questions.

    For example, from my previous reply: "If you want to read OperationStatus, you'll first have to issue an smbus write word command to 0x00 or 0x44 with 0x0054 (=OperationStatus), followed by an smbus read block command to 0x00 or 0x44."

    I can't really break this down any further. It appears to me that you may not have a working smbus write word function on your host uC. smbus is a standard developed and owned by another entity, not TI.

    Here is a version of my sentence in pseudo code, using an API that must be obtained from your uC vendor.

    This API must implement:

    smbus_write_word(uint8_t command, uint16_t word);
    smbus_read_block(unit8_t command, uint8_t [] block);

    OperationStatus():

    smbus_write_word(0x00, 0x0054);
    smbus_read_block(0x00, block_data[]);
    OperationStatus = (uint32_t) block_data[0, 3];