View on GitHub

Joker -> Doc

充电zcv客制化

参考文档 MTK65XX平台充电调试总结 (转载)

配置电池温度检测相关参数 (cust_battery_meter_table.h)

更新电池充放电参数

电池充放电参数由电池工程师向电池厂家索取。根据提高的测试数据,我们可以获得各温度下最大放电容量,各温度下的内阻—电压表、放电深度—电压表。

配置充电电流:(cust_charging.h)

  #define USB_CHARGER_CURRENT_SUSPEND         0                             // def CONFIG_USB_IF
  #define USB_CHARGER_CURRENT_UNCONFIGURED    CHARGE_CURRENT_70_00_MA       // 70mA
  #define USB_CHARGER_CURRENT_CONFIGURED      CHARGE_CURRENT_550_00_MA      // 500mA
  #define USB_CHARGER_CURRENT                 CHARGE_CURRENT_550_00_MA      //500mA
  #define AC_CHARGER_CURRENT                  CHARGE_CURRENT_800_00_MA
  #define NON_STD_AC_CHARGER_CURRENT          CHARGE_CURRENT_1050_00_MA
  #define CHARGING_HOST_CHARGER_CURRENT       CHARGE_CURRENT_1050_00_MA
  #define APPLE_0_5A_CHARGER_CURRENT          CHARGE_CURRENT_550_00_MA
  #define APPLE_1_0A_CHARGER_CURRENT          CHARGE_CURRENT_650_00_MA
  #define APPLE_2_1A_CHARGER_CURRENT          CHARGE_CURRENT_800_00_MA

配置电流检测电阻:(cust_battery_meter.h)

  #define CUST_R_SENSE         56  //56 mOhm

充电电流检测电阻

battery-04

开机初始化电量的调试

调试开机初始化电量的意义在于,尽量获取准确的电量,为后续积分算法进行电量积分提供一个准确的参考。

源代码:battery_common.c battery_meter.c (充电算法采用SOC_BY_SW_FG)

工作流程:BAT_thread() -> battery_meter_initial() -> oam_init()

充放电算法的调试

充放电算法的原理就是库仑积分法,调试的主要问题放电曲线和充电曲线。

源代码:battery_meter.c oam_run();

考虑接触点电阻

电池接触点处一般会有20~40mho的电阻,这个阻值在大电流(1.5-2A)充电的时候,会对充电算法有一定的影响。所以在调试的时候要考虑这个电阻的存在,尤其是大电流充电的时候。在函数mtk_imp_tracking中计算开路电压的时候,可以通过宏定义FG_METER_RESISTANCE的调整去补充上这个接触点电阻。

充电IC中DPM功能影响

使用的BQ24158,BQ24296芯片中都会有一个DPM功能,这个DPM功能是在充电过程中,当输入源输入功率无法提供支持设置的或者默认的充电电流时,会降低VBUS的电压,以保证在功率不变的情况下提供足够的充电电流,当VBUS降低到Vin_dpm以下时,又及时调整充电电流保证VBUS电压不至于太低导致无法识别。由于这个DPM设置不合理导致的问题就是插入USB的时候,“正在充电”的过程持续一会立马消失了。这就是因为由于电脑提供的USB最大充电电流为450mA,而Vin_dpm和USB充电电流设置过大,导致电脑的USB接口提供的功率不足,于是充电IC的DPM功能发挥作用,把VBUS拉低到4.5V以下,USB掉线了。

MT6732平台重开机前后HW_OCV不变的问题

现象是这样的:第一次开机的时候HW_OCV是3.67V,直接重启系统后,HW_OCV还是3.67V,没有变化。这个现象直接导致在关机充电下按电源键启动系统的时候,开机开路电压检测偏差极大的问题。解决这个问题需要重置AUXADC寄存器。在mtk_wdt.c中修改如下:

  void wdt_arch_reset(char mode)

  {

      ……

      mt6325_upmu_set_rg_auxadc_rst(0x01);

      mt6325_upmu_set_rg_auxadc_reg_rst(0x01);

      ……

  }