MSW_DRV_电池_充电_APN_V1.00
- 格式:pdf
- 大小:878.48 KB
- 文档页数:16
Mstar Driver
电池 & 充电
- 1 -
Copyright © 2010 MStar Semiconductor, Inc. All rights reserved.
电池 & 充电
V1.00
Mstar Driver
电池 & 充电
- 2 -
Copyright © 2010 MStar Semiconductor, Inc. All rights reserved. Table of Contents
0. Revision History............................................................................................................................2
一、文档简介.........................................................................................................................................3
二、充电电路介绍...................................................................................................................................3
三、充电检测.........................................................................................................................................6
四、怎样修改充电驱动程序......................................................................................................................9
五、电池充电流程图.............................................................................................................................14
六、充电常见的一些问题及其DEBUG........................................................................................................15
七、充电检测走线要点..........................................................................................................................16
0. REVISION HISTORY
Document
Description Date
V1.00 Ÿ First release 2010-11-16
Ÿ
Mstar Driver
电池 & 充电
- 3 -
Copyright © 2010 MStar Semiconductor, Inc. All rights reserved.
一、 文档简介
本文档主要介绍手机电池充电相关内容,主要包括:
(1)充电电路介绍。
(2)充电的一些相关参数介绍。
(3)充电检测---充电器是否插入检测,电池是否存在检测,充电电压、电流和电池电压的检测以及对
充电电压的过压保护。
(4)怎样修改充电驱动程序。
(5)电池充电的非正常操作及操作的结果。
(6)充电检测走线要点。
通过这些内容,有助于理解充电的整个过程,理解电池充电驱动程序,并能对充电驱动程序进行简单的
修改和DEBUG。
二、 充电电路介绍
充电电路原理图,如图1所示。
图1 充电电路
图中的VCHG为充电电压,R104和R105用于充电电压的检测,VCS和GATEDRV用于控制MOS管D822,近而
控制MOSSET-U202,用于控制充电电路是否导通。ISENSE、AVDD和R106(0.22欧姆)用于充电电流的检测。
当充电电压过高的时候,VADAIN检测到过压(VADAIN>1V),VCS和GATEDRV会被LOCK在相同电压(理论上
为6V左右,实测电压为5V多),关闭D822,近而关闭U202,最终关闭充电电路,达到过压保护的目的。
U202在正常充电的时候,输出的电压为4.2V。incense通过VCS来检查是否有充电器插进来,如果VCS电
压大于3.9V就认为有充电器插入。
Mstar Driver
电池 & 充电
- 4 -
Copyright © 2010 MStar Semiconductor, Inc. All rights reserved. 三、 电池及充电参数介绍
(1)电池电压与电池容量的映射关系数据,这些数据时根据放电曲线特征来获取的,由HW同事提
供,LB和HB的作用:假设目前为LEVEL1,放电的时候,以图(2)的E2P值做参考当电压降到3813-LB
时,从LEVEL1变为LEVEL0;电压为上升的时候,当电池电压大于3813+HB时,从LEVEL0变为LEVEL1。
在33C(33C1)上分为8个等级,各个LEVEL对应的电压值可以通过修改E2P文件来修改,E2P存放路径和
文件名称为:
图2电压等级E2P
假设E2P中的电压设定如下:
图3 E2P VOLTAGE设定值
电压设定与MMI显示的格数的对应的关系图如图4所示:
BAT_LEVEL_3(ADC value:Vbat >4009-LB if battery voltage is going down, Vbat>4009+HB if battery voltage is going up)
BAT_LEVEL_2(ADC value:Vbat >3898-LB if battery voltage is going down, Vbat>3898+HB if battery voltage is going up)
BAT_LEVEL_1(ADC value:Vbat >3813-LB if battery voltage is going down, Vbat>3813+HB if battery voltage is going up)
BAT_LEVEL_0(ADC value:Vbat >3693-LB if battery voltage is going down, Vbat>3693+HB if battery voltage is going up)
BAT_LOW_BATTERY(ADC value:Vbat >3616-LB if battery voltage is going down, Vbat>3616+HB if battery voltage is going up)
BAT_LOW_BATTERY(ADC value:Vbat >3400-LB if battery voltage is going down, Vbat>3400+HB if battery voltage is going up)
BAT_TOO_LOW_FOR_COMM(shut off after 15seconds ADC value:Vbat <3400 )
LB=11,HB=22
图4 电池电压与容量关系图
通常情况下VOLTAGE TO MMI LEVEL是不用修改的,Base code中已经OK了。如果在实际的项目中发
Mstar Driver
电池 & 充电
- 5 -
Copyright © 2010 MStar Semiconductor, Inc. All rights reserved. 现,实际电压和MMI LEVEL显示不一致,主要从以下几个方面来DEBUG:
①在使用精密电源模拟电池放电时,请注意,电压只能从高变低,不能从低变高,MMI LEVEL只会处理
从高变低的过程。
②调完电压后,MMI LEVEL不会立即更新,需要等一些时间才能更新,由于不同的电压或软件版本对该
时间有不同的定义,我们取30s为状态更新时间,即调整好电压呀,等待30s,check MMI LEVEL是否
update。
③check实际电压和工程模式中读到的电压是否一致(正常时,基本一致),如果相差太大,请校准
ADC,如果还大,请check硬件。
④在check MMI LEVEL显示与Voltage是否一致时,请以手机采样到的电压为准,可以从工模中读出当
前的电压值。
⑤如果感觉显示不准,我们可以通过TMT来check,check从ADC中读到的Voltage是否正确,Voltage
TO MMI LEVEL是否正确,MMI LEVEL传到MMI后的处理是否正确,check整个流程来定位问题所在。
⑥如果自己要增加电池的等级,不光要修改cusSetting.e2p.val中的WBattLev,还需要修改
NB_MMI_LEVEL、_g_aeTabMmiLevel等内容,还需要修改MMI层。
(2)ADC采样校准参数,数据来自于E2P文件(stack_nor.e2p.val),读取参数函数为:
_MdlBatGetAdcParam(),它们的作用是减小误差。B2里面主要使用battery voltage相关的校准参数,在
函数_MdlBatGetAdcParam()计算。
static s32 _MdlBatGetAdcParam(bat_AdcParam_t* pParams)
{
#ifdef __ADC_CALIB_DRV__
// for battery voltage channel
e2p_Read(E2P_ADCBATCOEFF, &(pParams->batcoeff));
_TRACE((_IOB | MSDRV_BATTERY_TRACE_2, " batcoeff=%d \n ", pParams->batcoeff));
#ifdef __B2__
if((pParams->batcoeff > 50) || (pParams->batcoeff < -50))
{
_TRACE((_IOB | MSDRV_BATTERY_TRACE_2, "=== Invaild batcoeff value=== %d\n", pParams->batcoeff));
pParams->batcoeff = 0;
e2p_Write(E2P_ADCBATCOEFF, &(pParams->batcoeff));
fms_E2pSaveOneParameter(E2P_ADCBATCOEFF);