Other Parts Discussed in Thread: BQ76925
尊敬的电池团队:
我对读出校正因数有一些疑问。
根据数据表,这些系数以2的补码的形式存储为5或6位值。
如数据表的表2和表3所示、MSB 和 LSB 被简单地移位和排列。
sluc581中的示例代码显示以下内容:
//获取偏移的2 MSB 和 VREF 的增益校正的1 MSB
if (i2c_read (VREF_CAL_EXT、&i2c_read_struct)) error_trap ();
// MSB 中移位并符号扩展
offset_corr[0]|=((((i2c_read_struct.data & 0x06)<< 3)^ 0x20)- 0x20;
Gain_corr[0] |=(((i2c_read_struct.data & 0x01)<< 4)^ 0x10)- 0x10;
移位看起来是正确的、但是数据也与 MSB 进行了异或运算、并且在末尾减去了 MSB
对我来说,这似乎没有效果。
示例:
数据:00001
XOR with 10000提供10001
减去10000将得到00001 (与输入数据相同)。
这可能是前一个芯片的代码。
我会继续查看数据表、这样可减少读取校正因数的代码。
是肯定的–您能澄清一下吗?
祝你一切顺利、
Olrik