如何更新一个single 的浮点数到BQ20z75的Data Flash中的 CC GAIN (F4)中去,它的字节顺序是怎样的?
Michael Yang:
以BQ34z110中的CC gain 和CC delta 为列描述TI的gas gauge芯片是如何储存一个single 浮点数,那么基于这个回复你可以倒推过来正确的存储方式,注意尾数部分为了节约储存空间省略最高位的1,以及big endian的字节顺序。
CC gain 读取的值为0x7F71205C
前两个字节用来表示指数函数的指数大小,0x7f=127,按照这个存储规格,计算实际的指数为127-128-24=-25,即2^(-25) 余下的数据来计算实际的数据大小,按照big endian的顺序来读取,但这里如同IEEE745一样由于最高位始终为1,所以在存储时将尾数的最高bit上升了一位,那么我们计算的时候需要将MSB退回来,所以我们将这个数据与0x80做一个Or运算。得到的数据为0xF171205C,转换为10进制并乘以之前的指数函数得到15802460*2^(-25)=0.47095 .
CC Delta 读取的值为0X940898C0
储存的指数为0X94=148,计算实际的指数 148-128-24=-4,将尾数部分的高字节向右移动一位成为0x8898C0,那么得到8952000*2(-4)=559500