電池充電是由qpnp vm bus.c(電池驅動BMS)和qpnp linear charger.c(線性充電器)組成; SMMB charger:Switch ModeBattery Charger and Boost peripheral開關模式電池充電器和升壓外圍設備 CV:ConstantV ...
電池充電是由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。