MT6580 Android N battery调试

本文详细介绍了MT6580平台在Android N系统下的电池调试流程,包括硬件原理、FG原理、软件框架、调试技巧等关键信息。从硬件层面的VBUS到软件框架的客制化,再到电池曲线的调整,提供了全面的技术指导。

1.硬件原理

电池充电原理图
术语注释:
VBUS :USB 正极
VCDT :充电电压检测脚
ISENSE :充电电流检测电阻的正极
BATSNS :充电电流检测电阻的负极
BAT :电池正极引脚
BAT_ON :电池 NTC(热敏电阻)引脚

2.FG 原理

a.PMIC adc 来获取 vbat 电压。
b.通过 ZCV 表格,将 vbat 转换成 OCV
c.ocv-vbat/r 来获取电流 I
d.对电流 i 进行积分,获取电量。
过程:检测充电器 --> 获取电池相关数据 --> 温度检测 --> 检测电池状
态 -->上报数据给上层 --> 充电计算 --> 更新电池信息给 Android 层

3.软件框架

3.1common 层充电函数的位置:

alps/kernel-3.18/drivers/power/mediatek$
battery_common.c ----->充电控制主线程
battery_meter.c ----->SW FG 算法,也即是 OAM
linear_charging.c ----->PMIC 充电控制
switch_charging.c ----->SW charger 充电控制

3.2客制化的地方

alps/kernel-3.18/drivers/misc/mediatek/include/mt-plat/mt6580/include/mach$ 
mt_battery_meter.h 
mt_battery_meter.h 
mt_charging.h

3.3电池曲线客制化

alps/kernel-3.18/drivers/misc/mediatek/include/mt-plat/mt6580/include/mach/mt_battery_meter.h
ZCV 表格电池容量
#define FG_METER_RESISTANCE 0
/* Qmax for battery */
#define Q_MAX_POS_50 2208
#define Q_MAX_POS_25 2258
#define Q_MAX_POS_0 1926
#define Q_MAX_NEG_10 1944
#define Q_MAX_POS_50_H_CURRENT 2184
#define Q_MAX_POS_25_H_CURRENT 2217
#define Q_MAX_POS_0_H_CURRENT 1260
#define Q_MAX_NEG_10_H_CURRENT 641

alps/kernel-3.18/drivers/misc/mediatek/include/mt-plat/mt6580/include/mach/mt_battery_meter.h
ZCV 表格电池数据
/* T0 -10C*/
BATTERY_PROFILE_STRUCT battery_profile_t0[] = {
/* T1 0C */
BATTERY_PROFILE_STRUCT battery_profile_t1[] = {
/* T2 25C*/
BATTERY_PROFILE_STRUCT battery_profile_t2[] = {
/* T3 50C*/
BATTERY_PROFILE_STRUCT battery_profile_t3[] = {
/* ============================================================*/
/* <Rbat, Battery_Voltage> Table*/
/* ============================================================*/
/* T0 -10C*/
R_PROFILE_STRUCT r_profile_t0[] = {
/* T1 0C*/
R_PROFILE_STRUCT r_profile_t1[] = {
/* T2 25C*/
R_PROFILE_STRUCT r_profile_t2[] = {
/* T3 50C*/
R_PROFILE_STRUCT r_profile_t3[] = {

alps/kernel-3.18/drivers/misc/mediatek/include/mt-plat/mt6580/include/mach/mt_charging.h
充电控制,设置 USB/AC 充电电流大小的位置
/* Linear Charging Threshold */
#define V_PRE2CC_THRES 3400 /*mV*/
#define V_CC2TOPOFF_THRES 4200
#define RECHARGING_VOLTAGE 4320//4340
#define CHARGING_FULL_CURRENT 100 /*mA*/
#define AC_CHARGER_CURRENT CHARGE_CURRENT_950_00_MA
#define NON_STD_AC_CHARGER_CURRENT CHARGE_CURRENT_950_00_MA
#define CHARGING_HOST_CHARGER_CURRENT CHARGE_CURRENT_950_00_MA
#define JEITA_RECHARGE_VOLTAGE 4340 /* for linear charging*/
/* For JEITA Linear Charging only */
#define JEITA_NEG_10_TO_POS_0_FULL_CURRENT 120 /*mA */
#define JEITA_TEMP_POS_45_TO_POS_60_RECHARGE_VOLTAGE 4150
#define JEITA_TEMP_POS_10_TO_POS_45_RECHARGE_VOLTAGE 4250
#define JEITA_TEMP_POS_0_TO_POS_10_RECHARGE_VOLTAGE4150
#define JEITA_TEMP_NEG_10_TO_POS_0_RECHARGE_VOLTAGE 3950
#define JEITA_TEMP_POS_45_TO_POS_60_CC2TOPOFF_THRESHOLD 4200
#define JEITA_TEMP_POS_10_TO_POS_45_CC2TOPOFF_THRESHOLD 4200
#define JEITA_TEMP_POS_0_TO_POS_10_CC2TOPOFF_THRESHOLD 4200
#define JEITA_TEMP_NEG_10_TO_POS_0_CC2TOPOFF_THRESHOLD 4000
/* High battery support */
#define HIGH_BATTERY_VOLTAGE_SUPPORT

3.4电池状态查询

cat /sys/class/power_supply/ac/online //AC 电源连接状态 交流电 即电源插座
cat /sys/class/power_supply/usb/online //USB 电源连接状态
cat /sys/class/power_supply/battery/status //充电状态
cat /sys/class/power_supply/battery/health //电池状态
cat /sys/class/power_supply/battery/present //使用状态
cat /sys/class/power_supply/battery/capacity //电池 level cat /sys/class/power_supply/battery/batt_vol //电池电压
cat /sys/class/power_supply/battery/batt_temp //电池温度
cat /sys/class/power_supply/battery/technology //电池技术

4.DEBUG

4.1关机充电不显示低电界面,改为显示 LOGO,避免误解

+++ b/alps/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/mt6580/platform.c 
@@ -874,7 +874,8 @@ void platform_init(void)
((CHR_Type_num != STANDARD_HOST) && (CHR_Type_num != NONSTANDARD_CHARGER))) {
#endif mt_disp_power(TRUE); 
- mt_disp_show_low_battery(); 
+ //mt_disp_show_low_battery(); 
+ mt_disp_show_boot_logo();///modified by ztg 150104 
mt65xx_leds_brightness_set(6, 110);
#ifdef MTK_BATLOWV_NO_PANEL_ON_EARLY

4.2更改为高压电池充电

kernel-3.18/drivers/misc/mediatek/include/mt-plat/mt6580/include/mach/mt_charging.h
-#define RECHARGING_VOLTAGE 4110
+#define RECHARGING_VOLTAGE 4340
-#define JEITA_RECHARGE_VOLTAGE 4110 /* for linear charging*/ 
+#define JEITA_RECHARGE_VOLTAGE 4340 /* for linear charging*/
/* High battery support */
-/*#define HIGH_BATTERY_VOLTAGE_SUPPORT*/ 
+#define HIGH_BATTERY_VOLTAGE_SUPPORT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人在路上……

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值