插充电器关机充电,手机不断重启问题分析
时间:10-02
整理:3721RD
点击:
平台mt6735/53
软件分支L1.MP3
FAQs 7 of 145
使用switch charger,高压电池充不满的解决办法 电池充不满
内容
[DESCRIPTION]
在手机低电量时,插着充电器进行关机充电,手机不断重启的现象。
[SOLUTION]
关机充电手机充电有两种情况,一种是在lk阶段重启,另外是在kernel里面重启。
1>在lk阶段的重启,其中有个标志性的log如下:
Unplugged Usb/Charger in Kernel Charging Mode Before Jumping to Kernel, power Off
原因如下:
在支持DEVICE_TREE_SUPPORT这个标准下,在lk启动kernel的
int boot_linux_fdt(void *kernel, unsigned *tags,
char *cmdline, unsigned machtype,
void *ramdisk, unsigned ramdisk_size)
{
...............
#ifdef mtk_KERNEL_POWER_OFF_CHARGING
/*Prevent the system jumps to Kernel if we unplugged Charger/USB before*/
if(kernel_charging_boot() == -1)
{
dprintf(CRITICAL,"[%s] Unplugged Usb/Charger in Kernel Charging Mode Before Jumping to Kernel, Power Off\n", __func__);
#ifndef NO_POWER_OFF
MT6575_power_off();
#endif
...............
}
}
由于在lk阶段的电流过大,导致charger的电压被拉低到4.3v以下,因为 VCDT_LV_VTH 默认的电压是4.3v,所以在detect charger回返回false,由于插 充电器的原因在power off之后又起来导致了不断重启的现象,其中VCDT_LV_VTH 的设置可以参考datasheet的设置。
Solution:
1)首先检查lk阶段充电电流设置的大小,注意检查backlight_on设置的level。
2)如果是用的swtich ic charger,首先的开启dpm功能,dpm功能是一种保护 charger vol在大电流的情况下不被拉的很低,Vin-dpm电压 的设置范围值 是4.2-4.76v,default的值是4.2,一般要设置为4.5。
3)如果在以上的修改还不生效,就把VCDT_LV_VTH值设置为4.2v
2>在kernel关机充电阶段重启
在kernel阶段重启有两个原因如下:
原因一:
kal_bool upmu_is_chr_det(void)
{
...........
if (mt_usb_is_device()) {
Battery_log(BAT_LOG_FULL,
"[upmu_is_chr_det] Charger exist and USB is not host\n");
return KAL_TRUE;
} else {
battery_log(BAT_LOG_CRTI,
"[upmu_is_chr_det] Charger exist but USB is host\n");
...........
}
在关机充电时,charger detect存在的情况下,但是如果被识别为usb host mode,这时就会放回false,引起了power off
这时应该去检测usb 的id pin硬件上是不是被拉低了
原因二:
在charger 电压超过了charger_hv_detect_thread 里面设置的电压,默认为6.5v这时,就会产生cable out,接着就会
power off
软件分支L1.MP3
FAQs 7 of 145
使用switch charger,高压电池充不满的解决办法 电池充不满
内容
[DESCRIPTION]
在手机低电量时,插着充电器进行关机充电,手机不断重启的现象。
[SOLUTION]
关机充电手机充电有两种情况,一种是在lk阶段重启,另外是在kernel里面重启。
1>在lk阶段的重启,其中有个标志性的log如下:
Unplugged Usb/Charger in Kernel Charging Mode Before Jumping to Kernel, power Off
原因如下:
在支持DEVICE_TREE_SUPPORT这个标准下,在lk启动kernel的
int boot_linux_fdt(void *kernel, unsigned *tags,
char *cmdline, unsigned machtype,
void *ramdisk, unsigned ramdisk_size)
{
...............
#ifdef mtk_KERNEL_POWER_OFF_CHARGING
/*Prevent the system jumps to Kernel if we unplugged Charger/USB before*/
if(kernel_charging_boot() == -1)
{
dprintf(CRITICAL,"[%s] Unplugged Usb/Charger in Kernel Charging Mode Before Jumping to Kernel, Power Off\n", __func__);
#ifndef NO_POWER_OFF
MT6575_power_off();
#endif
...............
}
}
由于在lk阶段的电流过大,导致charger的电压被拉低到4.3v以下,因为 VCDT_LV_VTH 默认的电压是4.3v,所以在detect charger回返回false,由于插 充电器的原因在power off之后又起来导致了不断重启的现象,其中VCDT_LV_VTH 的设置可以参考datasheet的设置。
Solution:
1)首先检查lk阶段充电电流设置的大小,注意检查backlight_on设置的level。
2)如果是用的swtich ic charger,首先的开启dpm功能,dpm功能是一种保护 charger vol在大电流的情况下不被拉的很低,Vin-dpm电压 的设置范围值 是4.2-4.76v,default的值是4.2,一般要设置为4.5。
3)如果在以上的修改还不生效,就把VCDT_LV_VTH值设置为4.2v
2>在kernel关机充电阶段重启
在kernel阶段重启有两个原因如下:
原因一:
kal_bool upmu_is_chr_det(void)
{
...........
if (mt_usb_is_device()) {
Battery_log(BAT_LOG_FULL,
"[upmu_is_chr_det] Charger exist and USB is not host\n");
return KAL_TRUE;
} else {
battery_log(BAT_LOG_CRTI,
"[upmu_is_chr_det] Charger exist but USB is host\n");
...........
}
在关机充电时,charger detect存在的情况下,但是如果被识别为usb host mode,这时就会放回false,引起了power off
这时应该去检测usb 的id pin硬件上是不是被拉低了
原因二:
在charger 电压超过了charger_hv_detect_thread 里面设置的电压,默认为6.5v这时,就会产生cable out,接着就会
power off
我们现在遇到的只是重启一次就开出机了,你们那边是不断重启吗?
前人趟过的路就是后人的通途!谢谢!
好久没顶贴了,留座
是很久没见你来了。
我用的是6755的平台,用的是BQ25896,现在充电无法识别适配器充电,只能默认识别为电脑充电 电流为400多MA,怎么解决,大神
I2C通了没?
肯定通了,主要就是PMIC的MT6351 怎么识别是适配器还是电脑充电 那个BC11寄存器该怎配置
留座,方便以后回来查看