ccOffset ,boardOffset 根据读 0X79 读到的数据再根据以下运算。
int ccOffset = (((uint16_t) block[8] << 8) + (uint16_t) block[9]);
signed char boardOffset = block[10];
float ccGain = (float) (校准值/ (float) ((int) 平均值- ((ccOffset + boardOffset) / 16)));
按这个计算无法校准电流,数据是100%写进去了。为什么 floating2Byte 也是根据官网的例子转换的 ,但是Battery Management Studio得到的值跟我自己计算的不一致,例如:我计算得到的ccGain的值是 5.13,通过官网文档提供的计算方法 floating2Byte(ccGain)后,得到rawData[0] is 80、rawData[1] is a1 、rawData[2] is 47、rawData[3] is b0,然后写进数据区后,Battery Management Studio得到的值偏差很大,这是什么原因呢?求解答!qq632845069。
shengjiang nong:
回复 Star Xu:
上面的式子是对的,可能程序其他地方不对,我做的都没问题。