電池充電是由qpnp-vm-bus.c(電池驅動BMS)和qpnp-linear-charger.c(線性充電器)組成;
SMMB charger:Switch-ModeBattery Charger and Boost peripheral開關模式電池充電器和升壓外圍設備
CV:ConstantVoltage恒壓
CC:ConstantCurrent恒流
FET:Field EffectTransistor場效應管
AICL:Automactic ImputCurrent Limit自動輸入電流限制
QPNP:QualcommPlug N Play高通即插即用
對應源代碼:
kernel\drivers\power\qpnp-linear-charger.c
1. 電池充放電電路連接
VBAT(電池正極)---------------------->PMIC:VPH_PWR
VBUS(如USB線,USB充電器、DC充電器)--------------------->PMIC:VBUS_USBIN
2. PM8909 Linear Charger(線性充電器)
可見PM8909線性充電器包括LinearCharger和VM-BM部分,下面介紹LinearCharger部分

3. Linear Charger Peripherals
QPNP線性充電器主要的模塊如下:

3.1 Charger peripheral(LBC_CHGR)充電外設
-
VBAT_STATUS:電池電壓狀態(weak,good,ornear end-of-charge)
-
IBAT_MAX:最大的電池充電電流設定
-
IBAT_SAFE:最大的電池安全充電電流設定(可配置一次)
-
充電中斷狀態,比如CHG_DONE,CHG_FAILED等等
-
VDD_MAX:最大電池電壓,典型值為4.2V或是4.35V
-
VDD_SAFE:最高的電池安全電壓(可配置一次),典型值為4.5V
-
VIN_MIN:充電器最小電壓輸入電壓,應比VDD_MAX高100mV,這個是VBUS進到充電IC的最低電壓,
-
CHG_CTRL:使能/禁用或是暫停充電
-
VBAT_TRKL:ATC A閾值,TRKL指Trikle
-
VBAT_WEAK:ATC B軟體充電閾值
-
IBAT_ATC_B:ATC B階段或是軟體閾值最大充電電流
-
Safety timers:安全計時器,TCHG_MAX和TTRKL_MAX
可參考下面的資訊便于理解
kernel/arch/arm/boot/dts/qcom/msm8909-qrd-skue.dtsi
&pm8909_chg {
qcom,vddmax-mv= <4350>;
qcom,vddsafe-mv= <4380>;
qcom,vinmin-mv= <4470>;
…
}
3.2 USB charging path(LBC_USB)
(1) Power路徑選擇和狀態
(2) USB充電器電壓有效性(validity)
(3) 充電器存在狀態
(4) USB充電器過壓和低壓設定
(5) 如果USB連接無效或是沒有列舉到,USB掛起設定
(6) USB列舉計時器設定和停止位
3.3 Battery interface(LBC_BAT_IF)電池介面
(1) 電池存在和電池熱敏電阻/ID存在狀態
(2) 電池溫度狀態
(3) VREF_BAT_THM配置
(4) 電池FET狀態
(5) 通過電池ID和熱敏電阻來檢測電池是否存在
(6) 電池溫度閾值調整
(7) 內部BATFET調節器控制
3.4 LBC miscellaneous(LBC_MISC)
(1) 自適應升壓控制設定
(2) Vbat_Boot_treshold狀態
(3) Boot done bit status,
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/30583.html
標籤:嵌入式
