PM8909 linear charger硬件概述

2019-10-24 10:25:26 浏览数 (1)

电池充电是由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高通即插即用

对应源代码:

代码语言:javascript复制
kerneldriverspowerqpnp-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

可参考下面的信息便于理解

代码语言:javascript复制
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。

vba

0 人点赞