主题中讨论的其他器件: EV2400、 BQSTUDIO、 GPCCHEM、 GPCRB
您好!
我在包含 TI MSP43053359的定制设计中使用 Bq34z100-G1电池电量监测计。
我是第一次尝试使用 MSP430 I2C 配置监测计、但没有成功。
下面是配置两个值的步骤:设计容量和设计能耗。 这些条目位于 ID 为48的子类中。
读取监测计时、我希望获得所有默认值、因为我以前从未配置过它。
不过、正如您将看到的、这并不是我的结果。
首先、我启用块数据、将0x61和0x00写入 I2C 地址。
然后、我将目标子类作为块数据:WR 0x3E 0x30 (48 <=>0x30)
然后、我给出我的条目的偏移量(这里是0):WR 0x3F 0x00
然后、我从块数据地址(0x40)读取32个字节
以下是我获得的32个字节:
0x10 0x00 0x00 0x00 0x01 0x00 0x03 0x84 0x64 0x03 0xE8 0x15 0x18 0xFE 0x70 0x10 0x68 0x10 0x68 0x04 0x0A 0x32 0x1E 0x00 0x2D 0x37 0x01 0x0B 0x97
根据电池电量监测计的文档、以下是预期的32字节
0xxx 0xxx 0x00 0x00 0x00 0x01 0x00 0x03 0x84 0x64 0x03 0xE8 0x15 0x18 0xFE 0x70 0x10 0x68 0x10 0x04 0x0A 0x32 0x1E 0xF6 0x0A 0x2D 0x37 0x01 0x62
我注意到预期结果和我得到的结果之间发生了变化。
无论如何、由于设计容量和设计能的默认值易于识别、我可以在字节流中找到它们的位置。
因此、我更新字节流中的相应值并写入它们:
设计容量:bytes_stream[10]= 0xa0;byte_stream[11]= 0x28;
WR (0x40 + 10) 0xa0 0x28
设计能量:bytes_stream[12]= 0x4b;byte_stream[13]= 0x28;
WR (0x40 + 12) 0x4b 0x28
然后、我计算校验和:
0x10 + 0x00 + 0x00 + 0x00 + 0x0I1 + 0x00 + 0x00 + 0x03 + 0x84 + 0x64 + 0x03 + 0xE8 + 0x15 + 0x18 + 0xFE + 0x70 + 0x10 + 0x68 + 0x10 + 0x68 + 0x10 + 0x04 + 0x0A + 0x32 + 0x1E + 0x00 + 0x0A + 0x2D + 0x37 + 0x01 + 0x0B + 0x97 = 0x74
校验和= 0xFF - 0x74 = 0x8b
然后编写:
WR 0x60 0x8b
然后我重置量表:
WR 0x00 0x41 0x00
然后等待300毫秒。
但是、当我读回条目时、我 再次得到默认值:
0x10 0x00 0x00 0x00 0x01 0x00 0x03 0x84 0x64 0x03 0xE8 0x15 0x18 0xFE 0x70 0x10 0x68 0x10 0x68 0x04 0x0A 0x32 0x1E 0x00 0x2D 0x37 0x01 0x0B 0x97
我出了什么问题?
