硬件平台:MT8382

网上有很多关于电池曲线配置的文档,定位到具体的文件和数据结构,但是具体的数据配置却是没有,由于工作期间需要配置到对应的电池曲线;特意把修改过程使用到的数据记录下来;

电池曲线需要修改 mediatek\custom\pro\kernel\battery\battery\cust_battery_meter_table.h 文件中的BATTERY_PROFILE_STRUC battery_profile_t2[]结构数组;

 

电池供应商提供恒流放电过程的数据:

MTK 电池曲线配置【转】_数据结构

MTK 电池曲线配置【转】_javascript_02

MTK 电池曲线配置【转】_数据_03

对于电池曲线,主要最关心的是放电过程的数据;从放电数据中可知电池的参数:电池最大电压为4.127V,最低电压2.697V,容量为2230.8mA;

    BATTERY_PROFILE_STRUC 结构描述的就是一个电池放电(消耗)过程的数据,电压是一致的,电量的表达方式是以另一种形式:百分比;

 

[cpp] view plain copy

 

// T2 25C
BATTERY_PROFILE_STRUC battery_profile_t2[] =
{
{0 , 4127},
{1 , 4081},
{3 , 4039},
{4 , 4025},
{6 , 4001},
......
{36 , 3789},
{37 , 3783},
{39 , 3771},
{40 , 3765},
{42 , 3753},
......
{90 , 3432},
{92 , 3414},
{93 , 3406},
{94 , 3397},
{96 , 3375},
{97 , 3364},
{98 , 3351},
{100 , 3317},
{101 , 3316},
......
};

成员一表示消耗了百分之多少的电量,成员一表示消耗了该电量此时对应的电压值;

 

 

BATTERY_PROFILE_STRUC 数据含义:

假如产品的电压范围设置在4.127V - 3.300V,由此可知此时电池的预定使用容量为2100mA,所以每个百分点就是21mA;

 {0   , 4127},   表示消耗0%电量,即此时电池充饱电状态的电压最大值;

 {1   , 4081},   表示消耗1%电量,即此时电压为消耗了21mA时的电压值;

 ......

 {36  , 3789},  表示消耗36%电量,即此时电压为消耗了756mA时的电压值;  

 ......

{100  , 3317}, 表示消耗100%电量,即此时电压为预定最小值;

剩下的电量为储电保护,防止电池过放导致无法充电;

 

 

 

 

配置电池充电曲线,其实就是放电过程的逆序处理

修改对应文件: mediatek/custom/pro/lk/include/target/cust_battery.h

[cpp] view plain copy

 

/* Battery Voltage and Percentage Mapping Table */
VBAT_TO_PERCENT Batt_VoltToPercent_Table[] = {
/*BattVolt,BattPercent*/
{3317,0},
{3432,10},
{3505,20},
{3570,30},
{3637,40},
{3705,50},
{3765,60},
{3825,70},
{3892,80},
{3964,90},
{4127,100},
};

可以根据放电曲线进行相应的修改

{3432,10},    表示充电电量为10%时容量为210mA,电池对应的电压值;

 ......

{3964,90},    表示充电电量为90%时容量为1890mA,电池对应的电压值;

{4127,100},  表示充电电量为100%时,即电池充饱电状态的电压最大值;  


关于电池其他参数的配置,网上有很多帖子都有详细讲解,可以去参考;