一直比较好奇,Android的电量是怎么计算出来的,今天就借用qualcomm平台的8916芯片研究了一下,因为其不带电量计,所以是通过一个bms系统计算出来的,下面就来详细分析一下计算方法。
SOC(state of charge 荷电状态 - 电量)
英文缩写:
FCC Full-charge capacity
RC Remaining capacity (剩余电量)
CC Coulumb counter
UUC Unusable capacity
RUC Remaining usable capacity
SoC State of charge
OCV Open circuit voltage
SOC=(RC-CC-UUC)/(FCC-UUC)
RUC=RC-CC-UUC
电池电量决定因素
电池电量百分比主要有电池dtsi文件中百分比参数计算而得,如下:
1 | qcom,pc-temp-ocv-lut { |
关键结构
dts table structure:
1 | /** |
calculate percentcharge function
1 | int linear_interpolate(int y0, int x0, int y1, int x1, int x) |
驱动分析
关键函数:
1 | // File: qpnp-vm-bms.c |
百分比计算函数:
1 | interpolate_pc(chip->batt_data->pc_temp_ocv_lut,batt_temp, ocv_uv / 1000); //calculate the capacity percent |
公式一

公式二

公式三

公式四
