1、高低温停充配置:
关于电池60度的时候,有2个地方:
1.重启:thermal机制。一会给贵司修改方法文档
2.关机:kernel的代码。位置在:
kernel-/drivers/power/supply/mediatek/battery/mtk_power_misc.c
mtk_power_misc_psy_event(
{
if (tmp >= BATTERY_SHUTDOWN_TEMPERATURE) {
bm_err(
“battery temperature >= %d,shutdown”,
tmp);
kernel_power_off();
}
}
修改:mtk_battery_internal.h中的:
#define BATTERY_SHUTDOWN_TEMPERATURE 60
即可。
另外,平台代码上默认检测最高温度为60度(软件上),60度以上都判断为60度。
若是贵司要修改的话,也请修改相应的温度获取方式。
修改方法如下:
贵司先看自己用的是哪个table,软件上使用哪个版本,是定义在:
/kernel-4.4/drivers/misc/mediatek/include/mt-plat/mt6763/include/mach/mtk_battery_table.h
#define BAT_NTC_10 1 //0表示不使用,1为使用。注意2选1,一个是1另一个要改为0
#define BAT_NTC_47 0
看定义是使用47K还是10K热敏电阻:10/47表示的是,在25℃的时候,电阻的阻值,即47KΩ或者10kΩ
对于table表:
/kernel-4.4/drivers/misc/mediatek/include/mt-plat/mt6763/include/mach/mtk_battery_table.h:
#if (BAT_NTC_47 == 1)
struct FUELGAUGE_TEMPERATURE Fg_Temperature_Table[21] = {
{-40, 1747920},// 左边是温度(摄氏度),右边是阻值(单位:10^-3 kΩ)
修改NTC对应温度的方法有2种(2选1):
1.将table表,还是保持21个,将内容修改,让其覆盖范围达到自己的温度范围。但是会影响精度。
2.增加table长度,排序仍旧是0对应最低温度,然后每个1度排序。
修改最大长度对应:
1)
FUELGAUGE_TEMPERATURE Fg_Temperature_Table[A] ={} //这个A是定义,从1开始计数数,但是使用的时候是用0开始计数。这里记为
2)
/kernel-4.4/drivers/power/mediatek/battery/mtk_battery.c
int BattThermistorConverTemp(int Res)
{
…
if (Res >= Fg_Temperature_Table[0].TemperatureR) {
TBatt_Value = -40; //修改为最低温度
} else if (Res <= Fg_Temperature_Table[20].TemperatureR) {// 20改为:A-1
TBatt_Value = 60; //修改为最高温度
…
}
(不论是否使用bif,最后都用这个函数,若用Bif,则在之前做了处理。)
2、充电超时保护机制:
mtk_switch_charging.c
在软件发现充电时间超过12h还没充满的话,就会判断超时进而停止充电。由于USB充电电流一般不会设置太大,在跑CTS的情况下是有可能发生这种问题的
3、低温停充 :
define BAT_LOW_TEMP_PROTECT_ENABLE 需要打开
4、电池充满百分比:
1.若是贵司想报battery full的时候,UISOC要达到100%的话,修改如下值:
1)方法1:
g_FG_PSEUDO100_T0 ,修改到98或者97,即报full最小SOC之下 。
这个参数的意思是, 当SOC为该值时,对应UISOC的100%。
这样会导致UISOC100%的时候,充电还未报full。
2)方法2:
或者修改该值:CHARGE_TRACKING_TIME (单位s)
意思是说,当报full的时候,每个这个值的时间,会去涨 1%UISOC。
2.低电的时候%时间持续过短: DISCHARGE_TRACKING_TIME (单位s)
这个的值,意思是过这个时间才会去减1%UISOC。
贵司这种低电掉电情况是,电量过低触发low track,直接将UISOC降到1%然后触发关机。而这个值就是每次减UISOC 1%的时间间隔。
这种修改会导致一个问题,就是可能会让电量下降很低才触发关机。这样下次开机的充电时间可能会很久。
5、power_path是否支持:
ISENSE/BATSNS硬件连接是否和对应平台参考设计相同
使用的charger IC support power path则使用ISENSE测量VBAT,反之使用BATSNS;
如下图原理图所示:VBAT----ISENSE ,VSYS----BATSNS,说明支持power_path_support
abcct限流:
modem/mcu/pcore/custom/driver/drv/misc_drv/_Default_BB/
Adaptive Battery Charger Current Throttle(PID算法控制)
abcct默认是绑在tsAp上的,并非是默认绑在battery上的。
根据当前温度与目标温度的差值计算下一时刻要调节的充电电流,直到当前温度=目标温度
限流手段:
1.先限制Charging current limit(进电池电流)
主要控制手段(max chr current limit ==> min chr current limit)
2.Input current limit(充电线cable 的电流)
需要以下两个条件满足
1.Input_current_limit_on 有開啟 (設為1)
2.min chr current limit 需設置0 (可以限制到0) 且已經限制到0
老平台:
vendor/mediatek/proprietary/bootable/bootloader/lk/target/U115AA/include/target/cust_battery.h 平台电压电流部分配置
vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6739/src/drivers/
drivers/power/supply/mediatek/battery/mtk_power_misc.c