关机充电拨适配器自动开机

2020-05-11  本文已影响0人  Letcos
platform:RK3399
OS:Android 7.1

现象描述

关机充电需求如下:

1.插上充电器,一直充电;
        a.充电时按开机键,开机
        b.如果拔掉充电器(断电),保持关机;
2.未插上充电器,按开机键;
        b.电量高于5%(&& 电压高于6.894V),开机  
        c.否则不开机

但是关机充电拔掉适配器会开机,这显然是不符合需求的.

分析步骤

步骤1:确认是否有走关机逻辑

抓log发现

charger disconnceted.
do_charge :shutting down...
rk808 shut dDDR Version 1.22 20190506
In

确实走了rk808的关机逻辑,但是仍然会开机.说明关机之后满足RK808的开机条件.

步骤2:查看RK808数据手册的开机逻辑

在这里插入图片描述

测量PWRON开机回路发现在拔适配器的时候没有低电平.

但是测试INT中断引脚发现拔掉之后竟然会有一个中断(蓝色下降沿为拔适配器,黄色低电平为INT中断)

在这里插入图片描述

尝试关机之前关闭中断

int do_charge(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
                ...
                //disable irq
                disable_interrupts();
                printf("disable interrupts\n");
                shut_down();

发现仍然会关机后重启.显然不是关机前的中断出发导致RK808达到开机条件.

步骤三:查看硬件重启条件

查看硬件设计手册,发现RK808上电条件:

  1. PWRON拉低500ms
  2. VDC电压高于0.6V
  3. 内部RTC Alarm开机使能并定时时间到.

条件1已经测试过了,条件3并没有设置RTC,所以锁定在条件2.

测试发现VDC从1.2降低到0.6V的阈值竟然用了大约1020ms,而由上图知道关机从拔适配器到关机大概只有280ms.所以关机之后,RK808检测到VDC高于0.6V,再次开机了.

在这里插入图片描述

解决方法

找到了问题解决方法就好办了.可以从两个方向来解决:

  1. 降低VDC电压,使其刚好达到开机检测电压,比如0.7V
  2. 减少VDC降低到0.6V的时间.

VDC部分电路如下:


在这里插入图片描述

经过实验发现,只用适当更换R1217之后,VDC会在拔适配器之后的几毫秒之内降到阈值0.6V以下.

上一篇 下一篇

猜你喜欢

热点阅读