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

2119

被折叠的 条评论
为什么被折叠?



