插拔NTC之後的充電狀態

2021-08-31 16:26:08 字數 1083 閱讀 8172

最近遇到乙個ieee1725的驗證,

1. 電池電壓低於3.0v時, 先接入battery,再接入power,要求不能正常充電;先接入power,再接入battery,要求不能正常充電;

2. 擋住ntc pin,要求停止充電;拔掉擋片,要求恢復充電;

看第二條;擋住ntc pin,則被認為電池不在(qcom 8909平台),這個時候,healthd的狀態是cold;temp是25°,預設值;而電池的狀態則是discharging,但是看ac adapter上,有1a的電流往手機裡灌;

分析,電池的狀態顯示有兩個,乙個是status,乙個是是否有充電器插入;閃電圖示表示有充電器插入,並非表示在充電,而status表示電池的充電狀態,discharging,charging,full;電池的health狀態,應該是上層顯示時,來下層讀取的;而是否要disable  charging,我是說真正的斷開電流,則需要設定;狀態的改變只是被某個事件觸發了,改變了狀態,而起底層硬體狀態則需要設定;問題恰恰出在這裡;我們擋掉了ntc pin,charger晶元反饋的結果就是remove  battery,但是remove  battery之後,有沒有去設定充電電流呢?  流程中是沒有的

我們需要的正確行為如下:

手機待機,插著充電器,remove battery,手機應該正常工作,線上提供工作電流,手機不重啟; 擋住ntc,應停止向電池充電,線上提供電流;我使用qpnp_lbc_charger_enable介面,來使能充電,能夠滿足」擋住ntc,停止充電「,但是拔掉電池,則會導致機器直接掉電重啟!

高通參考設計關於batt_id,如果沒有電池id,檢測腳是接死的。這種設計之下,拔掉電池與擋住ntc連線,兩種場景下,暫存器的值是一樣的,0x1208暫存器 bit0都是1。也就是說,軟體無法區分電池remove與ntc disconnect。

而在0x1049中, 要麼允許battery  charging,要麼禁止battery charging,由於無法分辨remove與ntc disconnect,則無法對此做設定;如強行設定,則出現電池拔掉,又強制走電池供電,系統就會掉電。

NTC的一些知識

ntc負溫度係數熱敏電阻工作原理 ntc是negative temperature coefficient 的縮寫,意思是負的溫度係數,泛指負溫度係數很大的半導體材料或元器件,所謂ntc熱敏電阻器就是負溫度係數熱敏電阻器。它是以錳 鈷 鎳和銅等 金屬氧化物為主要材料,採用陶瓷工藝製造而成的。這些金屬...

可插拔的結構

先研究一下可插拔的結構,有兩個可以參考的產品 1 eclipse 2 xoops eclipse實際是採用的osgi 的規範,manifest.mf檔案來描述外掛程式的基本內容,另外通過乙個plugin.xml 來描述針對平台的擴充套件。eclipse提出了擴充套件點的概念。要支援擴充套件點,系統本...

Linux USB口的熱插拔

目前要做乙個在嵌入式平台上的usb口的熱插拔事件。經過我現在的分析總結目前有如下方法 1,定時檢查 proc scsi scsi檔案 此方法只能在pc上,但在嵌入式平台上不可用。2,netlink方式 使用netlink.include include include include include...