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:使用制造商块访问读取操作状态(0x44)

Guru**** 2496595 points
Other Parts Discussed in Thread: BQ78350

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1468612/bq78350-r1-reading-operation-status-using-manufacturer-block-access-0x44

器件型号:BQ78350-R1
主题中讨论的其他器件:BQ78350

工具与软件:

您好!

我正在研究制造商访问命令的实现。 在技术参考中,它提到了读取操作状态或制造商状态,使用制造商块访问(0x44)或制造商数据(0x23) 。 但关于(0x44)或(0x23)的信息不够。 我不使用 Bq Studio。  

我想使用代码执行读写操作。  

有人可以帮助您读取使用0x44和0x23的命令吗?

提前感谢您!

此致、

Kaushalya.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请使用0x44并按照 TRM 17.2 0x00 ManufacturerAccess ()和0x44 ManufacturerBlockAccess ()的指令操作

    如果您希望读取 OperationStatus、则首先必须向0x00或0x44发出 smbus 写入字命令并带有0x0054 (= OperationStatus)、然后向0x00或0x44发出 smbus 读取块命令。

    如果您发出了0x0054 (= OperationStatus)、读取块命令将返回4个字节。 这4个字节的含义在 TRM 17.2.38 ManufacturerAccess () 0x0054 OperationStatus 中进行了说明

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将通过这种方式尝试读取操作状态

    // MAC (0x00)定义

    void Write_Manufacturer (uint16_t MacCmd)

    uint8_t data_length=2;
    uint16_t txbuffer[2]={MacCmd & 0xFF、(MacCmd >> 8)& 0xFF};//小端字节序格式

    I2C_Write_2byte (MANUFACTURERACCESS_subcommand、txbuffer、DATA_LENGTH);

    }

    //将操作状态写入0x00

    Write_Manufacturer (470X0054);

    //读取0x0054

    bms_get_manufacturer_block_access();

    // 0x44的定义

    void BMS_GET_MANUFACTURER_BLOCK_ACCESS (void)


    vHAL_RIIC_RECEIVE (&BQ78350_subcommand[MANUFACTURBERBLOCKACCESS_subcommand].command、BQ78350_subcommand[MANUFACTURBERBLOCKACCESS_subcommand].dataptr、BQ78350_subpath命令[MANUFACTURERBLOCKACCESS_subcommand_len);

    }

    是否 需要修改 BMS_GET_MANUFACTURER_BLOCK_ACCESS、您能否确认可以进行哪些更正?

    此外,在第17.2.1节中,它被写为"读取该命令返回 OperationStatus()数据的最低16位"。 这是什么意思?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Dominik

    我已从代码中粘贴片段。

    为了让我理解这个问题、您是否需要任何其他信息?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Kaushalya,

    我无法评论您的 UC 特定代码(例如 vHAL_RIIC_RECEIVE)。

    我可以就电量计相关问题为您提供支持。

    例如、根据我之前的回复:"如果您要读取 OperationStatus、则必须首先发出 smbus 写入字命令(0x00或0x44)和0x0054 (= OperationStatus)、然后发出 smbus 读取块命令(0x00或0x44)。"

    我再也不能把它分解出来了。 在我看来、主机 UC 上可能没有工作中的 smbus 编写字函数。 SMBus 是由另一个实体(而非 TI)开发和拥有的标准。

    下面是我的句子在伪代码中的版本、使用必须从您的 UC 供应商处获得的 API。

    此 API 必须实现:

    SMBUS_WRITE_WORD (uint8_t 命令、uint16_t 字);
    SMBUS_READ_BLOCK (unit8_t 命令、uint8_t []块);

    OperationStatus():

    SMBus_WRITE_WORD (0x00、0x0054);
    SMBus_READ_BLOCK (0x00、BLOCK_DATA[]);
    OperationStatus =(uint32_t) block_data[0、3];