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 ar**)
{ ...
//disable irq
disable_interrupts();
printf("disable interrupts\n");
shut_down();
發現仍然會關機後重啟.顯然不是關機前的中斷出發導致rk808達到開機條件.
步驟三:檢視硬體重啟條件
檢視硬體設計手冊,發現rk808上電條件:
pwron拉低500ms
vdc電壓高於0.6v
內部rtc alarm開機使能並定時時間到.
條件1已經測試過了,條件3並沒有設定rtc,所以鎖定在條件2.
測試發現vdc從1.2降低到0.6v的閾值竟然用了大約1020ms,而由上圖知道關機從拔介面卡到關機大概只有280ms.所以關機之後,rk808檢測到vdc高於0.6v,再次開機了.
找到了問題解決方法就好辦了.可以從兩個方向來解決:
降低vdc電壓,使其剛好達到開機檢測電壓,比如0.7v
減少vdc降低到0.6v的時間.
vdc部分電路如下:
經過實驗發現,只用適當更換r1217之後,vdc會在拔介面卡之後的幾毫秒之內降到閾值0.6v以下.
介面卡模式 預設介面卡,類介面卡,物件介面卡
模式思想 改變乙個類的對外介面 增加或減少 以滿足不同外部呼叫者的需求 角色成員 目標介面 target 客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。需要適配的類 adaptee 需要適配的類或適配者類。介面卡 adapter 通過包裝乙個需要適配的物件,把原介面轉換成目標介面。適配...
介面卡模式(類介面卡 物件介面卡)
做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...
STL介面卡 函式介面卡
有時候需要對內建函式物件返回值進行進一步的簡單計算,或者填上多餘的引數,不能直接代入演算法。函式介面卡實現了這一功能,函式介面卡是將一種函式物件轉化為另一種符合要求的函式物件。函式介面卡可以分為4個大類 繫結介面卡 組合介面卡 指標函式介面卡和成員函式介面卡。需求 在遍歷容器的時候,將容器中的值全部...