电池充电是由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
VBAT(电池正极)---------------------->PMIC:VPH_PWR VBUS(如USB线,USB充电器、DC充电器)--------------------->PMIC:VBUS_USBIN
可见PM8909线性充电器包括LinearCharger和VM-BM部分,下面介绍LinearCharger部分
QPNP线性充电器主要的模块如下:
可参考下面的信息便于理解
kernel/arch/arm/boot/dts/qcom/msm8909-qrd-skue.dtsi
&pm8909_chg {
qcom,vddmax-mv= <4350>;
qcom,vddsafe-mv= <4380>;
qcom,vinmin-mv= <4470>;
…
}
(1) Power路径选择和状态
(2) USB充电器电压有效性(validity)
(3) 充电器存在状态
(4) USB充电器过压和低压设置
(5) 如果USB连接无效或是没有枚举到,USB挂起设置
(6) USB枚举计时器设置和停止位
(1) 电池存在和电池热敏电阻/ID存在状态
(2) 电池温度状态
(3) VREF_BAT_THM配置
(4) 电池FET状态
(5) 通过电池ID和热敏电阻来检测电池是否存在
(6) 电池温度阈值调整
(7) 内部BATFET调节器控制
(1) 自适应升压控制设置
(2) Vbat_Boot_treshold状态
(3) Boot done bit status。