關(guān)機(jī)充電撥適配器自動開機(jī)

platform:RK3399
OS:Android 7.1

現(xiàn)象描述

關(guān)機(jī)充電需求如下:

1.插上充電器,一直充電;
        a.充電時按開機(jī)鍵,開機(jī)
        b.如果拔掉充電器(斷電),保持關(guān)機(jī);
2.未插上充電器,按開機(jī)鍵;
        b.電量高于5%(&& 電壓高于6.894V),開機(jī)  
        c.否則不開機(jī)

但是關(guān)機(jī)充電拔掉適配器會開機(jī),這顯然是不符合需求的.

分析步驟

步驟1:確認(rèn)是否有走關(guān)機(jī)邏輯

抓log發(fā)現(xiàn)

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

確實走了rk808的關(guān)機(jī)邏輯,但是仍然會開機(jī).說明關(guān)機(jī)之后滿足RK808的開機(jī)條件.

步驟2:查看RK808數(shù)據(jù)手冊的開機(jī)邏輯

在這里插入圖片描述

測量PWRON開機(jī)回路發(fā)現(xiàn)在拔適配器的時候沒有低電平.

但是測試INT中斷引腳發(fā)現(xiàn)拔掉之后竟然會有一個中斷(藍(lán)色下降沿為拔適配器,黃色低電平為INT中斷)

在這里插入圖片描述

嘗試關(guān)機(jī)之前關(guān)閉中斷

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

發(fā)現(xiàn)仍然會關(guān)機(jī)后重啟.顯然不是關(guān)機(jī)前的中斷出發(fā)導(dǎo)致RK808達(dá)到開機(jī)條件.

步驟三:查看硬件重啟條件

查看硬件設(shè)計手冊,發(fā)現(xiàn)RK808上電條件:

  1. PWRON拉低500ms
  2. VDC電壓高于0.6V
  3. 內(nèi)部RTC Alarm開機(jī)使能并定時時間到.

條件1已經(jīng)測試過了,條件3并沒有設(shè)置RTC,所以鎖定在條件2.

測試發(fā)現(xiàn)VDC從1.2降低到0.6V的閾值竟然用了大約1020ms,而由上圖知道關(guān)機(jī)從拔適配器到關(guān)機(jī)大概只有280ms.所以關(guān)機(jī)之后,RK808檢測到VDC高于0.6V,再次開機(jī)了.

在這里插入圖片描述

解決方法

找到了問題解決方法就好辦了.可以從兩個方向來解決:

  1. 降低VDC電壓,使其剛好達(dá)到開機(jī)檢測電壓,比如0.7V
  2. 減少VDC降低到0.6V的時間.

VDC部分電路如下:


在這里插入圖片描述
  • 更換分壓電阻R1217和R1216的比值就可以降低VDC的電壓;
  • 去掉C1239或者更換更小的電容.

經(jīng)過實驗發(fā)現(xiàn),只用適當(dāng)更換R1217之后,VDC會在拔適配器之后的幾毫秒之內(nèi)降到閾值0.6V以下.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容