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.

[参考译文] BQ27545-G1:BQ27545 I2C 命令格式

Guru**** 1664790 points
Other Parts Discussed in Thread: BQ27545-G1, BQ25619
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1388569/bq27545-g1-bq27545-i2c-command-formatting

器件型号:BQ27545-G1
主题中讨论的其他器件: BQ25619

工具与软件:

我希望这不是很愚蠢的一个问题,但:

我正在尝试使用 I2C 接口访问 BQ27545芯片(嵌入在 LiPo Battery Pack 中)、但我不太明白命令格式。 数据表(第26页)中显示"bq27545-G1使用一系列2字节标准命令来启用系统读取和写入电池信息"、然后继续为每条指定的命令(例如 Voltage () 0x08/0x09)列出2个命令代码。

我究竟如何发出这两个命令字节? 第8.5.1.2节中 I2C 命令序列的信息仅显示一个 CMD[7:0] 字、因此:

1) 1)我是否要为0x08然后为0x09发出两个完整的命令事务("START/ADDR/CMD/DATA/DATA/STOP")

或者

2) 2)两个 CMD 字节以某种方式组合成一个事务、数据表中未显示(或我错过了该事务)

我已经尝试使用 Control()命令、我使用了0x00、后跟两个字节的数据0x00 0x01用于设备类型。 这似乎可行(所有 I2C 字节均已正确确认)、但我在命令之后(从地址0x00开始)读取的2个字节的数据是0x05和0x42、而不是数据表中指定的0x05 0x45。

谁能告诉我哪里出了问题,我将最感激,因为我是一个相当紧张的时间为这个项目.

此致

PhilipJ

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

    标准命令与"寄存器"具有相同的含义。

    如果您要读取 Voltage ()命令0x08/0x09、则从寄存器0x08读取一个字节、从寄存器0x09读取一个字节、然后将其组合成一个16位整数、即以 mV 为单位的电压。 您可以在两个单独的 I2C 事务中读取此值、也可以在一个 I2C 事务中按顺序执行两个寄存器的增量读取。

    由于 I2C 寄存器的数量有限,因此电量监测计只有几个标准命令和使用 Control()标准命令的间接寻址模式。

    您可以将包含2个字节的扩展命令写入 Control()、然后按照 Control()标准命令的 TRM 中的说明读取结果。

    在示例中、似乎看到 DeviceType 显示为0x0542、即 bq27542。 这意味着监测计被编程为 bq27542。

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

    您好!

    感谢您的答复、这一切都很有意义。

    您说的芯片类型正确、我因为下载错误的数据表而感到困惑。

    另外、我的电压和温度读数完全错误、因为我读的 I2C 芯片错误!! (哎呀!!!)。

    我们在母板上还有一个 BQ25619充电器芯片、我的代码中有一个错误、读取的是那个芯片的8/9、因此对电池电压来说、这个值是完全愚蠢的。

    感谢您的帮助

    PhilipJ