高通平台8916/8917

对于第三方Fuel Gauge,跳变多是因为IC内部算法的问题,这样我们可以通过驱动来规避。

例如:usb在位时,要阻止电量的向下跳变。

   当电量越级跳变时,要在驱动中能检测到。

问题情形:
1.电量跳变到50%或偏差过大
2.电池ID脚接地
3.温度脚来判断电池是否在位

推测原因:
判断电池在位的方法:

qpnp-linear-charger.c
enum bpd_type{
  BPD_TYPE_BAT_ID="bpd_id",
  BPD_TYPE_BAT_THM="bpd_thm",
  BPD_TYPE_BAT_THE_BAT_ID="bpd_thm_id",
}

先在设备树查找bpd是否有值

of_property_read_string(chip->spmi->dev.of_node,"qcom,bpd-detection",&bpd)

找不到的话,用代码的定义(通过温度脚判断)

chip->cfg_bpd_detection = BPD_TYPE_BAT_THM;

把参数配置到结构体中。
计算电池容量:

get_prop_capacity(struct qpnp_lbd_chip *chip)

如果电池不在位并且或为假电池,返回默认电量(50)
电池在位检测函数:(调用流程)

get_prop_batt_present(struct qpnp_lbc_chip *chip)
->qpnp_lbc_read(chip,chip->bat_if_base+BAT_IF_PRES_STATUS_REG【0x08】,&reg_val,1)
->__qpnp_lbc_read(spmi,base,val,count)
->spmi_ext_register_read(spmi->ctrl,spmi->sid,base,val,count)
->spmi_read_cmd(ctrl,SPMI_CMD_EXT_READL,sid,addr,len-1,buf)
->ctrl->read_cmd(ctrl,opcode,sid,addr,bc,buf)
温度检测函数:

get_prop_batt_temp(struct qpnp_lbc_chip *chip) 

如果是假电池并且电池不在位,返回默认温度

qpnp_vadc_read(chip vadc_dev,LR_MUX1_BATT_THEM,&results)

如果读取失败,返回默认温度
->if(channel==VBAT_SNS)
读电压

qpnp_vadc_conv_seq_request(vadc,ADC_SEQ_NONE,channel,result)

读温度

qpnp_vadc_conv_seq_request(vadc,ADC_SEQ_NONE,DIE_TEMP,&die_temp_result)

读补偿

qpnp_vbat_sns_comp(&result->physical,vadc,die_temp_result.physical)

最后返回

qpnp_vadc_con_seq_request(vadc,ADC_SEQ_NONE,channel,result)

此项目通过软件计算电量,没有专用的电量计芯片
计算电量的要素:温度 电压 电流
虚拟电量计 qpnp-vm-bms.c
所以一旦温度采集不准,必导致电量百分比计算错误

Android电池电量跳变的更多相关文章

  1. Android 电池电量进度条,上下滚动图片的进度条(battery)

    最近,制作一个app,需要模拟一个电池电量的进度条,根据电量多少来设置百分比,进度条不断上下滚动,就像平时手机充电一样的电池电量进度条.我就自定义view实现了电量进度条.修改图片就可以达到自己想要的 ...

  2. android电池管理系统从上层的java到底层驱动的调用(转载)

    1.概述 随着移动智能设备的快速发屏,电池的续航能力在很大情况下诱导了大众消费者的购买选择,android系统对电源管理的合理与否直接影响到电池的续航能力,而电池系统作为其中的一部分,主要用于对电池状 ...

  3. android电池管理系统

    原文:http://www.2cto.com/kf/201408/326462.html 1.概述 随着移动智能设备的快速发屏,电池的续航能力在很大情况下诱导了大众消费者的购买选择,android系统 ...

  4. Delphi XE5 android 获取电池电量

    uses AndroidAPI.JNI.GraphicsContentViewText, AndroidAPI.JNI.JavaTypes, AndroidAPI.JNI.OS; function B ...

  5. Android中获取电池电量

    /** * * @author chrp * *显示当前电池电量 */ public class MainActivity extends Activity { private TextView tv ...

  6. Android中吐司当前电池电量

    /** * * @author chrp * *土司当当电池电量 */ public class MainActivity extends Activity { class BtteryReceive ...

  7. 【转】android 电池(二):android关机充电流程、充电画面显示

    关键词:android 电池关机充电 androidboot.mode charger关机充电 充电画面显示 平台信息:内核:linux2.6/linux3.0系统:android/android4. ...

  8. android 电池(二):android关机充电流程、充电画面显示【转】

    本文转载自:http://blog.csdn.net/xubin341719/article/details/8498580 上一篇我们讲了锂电池的充放电的流程和电池的一些特性,这一节我们重点说一下a ...

  9. android电池信息简介

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

随机推荐

  1. 又见古老的Typosquatting攻击:这次入侵Npm窃取开发者身份凭证

    有些攻击方式虽然听起来很幼稚,但有时候却也可以生效,比如typosquatting攻击——我们上次看到这种攻击是在去年6月份,这本身也是种很古老的攻击方式. 所谓的typosquatting,主要是通 ...

  2. 学习javascript 非常好的博客

    这个大牛写的非常好!!推荐一下 http://www.cnblogs.com/xiaohuochai/tag/javascript%E6%80%BB%E7%BB%93/default.html?pag ...

  3. CentOS 6.9正式版下载

      2017-04-07 ,CentOS 6.9正式发布,带来了诸多改进,具体如下. CentOS 6.9重大改进: — 不再有LiveCD,用户可将LiveDVD复制到USB key,在需要时使用: ...

  4. cmd-net命令详解

    NET ViewNET UserNET UseNET TimeNet Start Net PauseNet ContinueNET StopNet StatisticsNet Share Net Se ...

  5. Scala-LIST/Tuple/Map

    环境: CentOS 6.3 LIST(列表) 代码: $ cat list.scala var mylist = List(1,2,3) println(mylist) var mylist1 = ...

  6. C语言++a与a++的实现机制与操作符结合优先级

    看到一道"经典Linux C"面试题,关于左值和右值的. 华为笔试题 1.写出推断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分) int a = 4; ...

  7. 2015/12/30 Java语法学习

    ①标识符包括:包名.类名.方法名.变量名.常量名.属性名 标识符书写规则:1,标识符由字母.数字._.$ 组成                      2,数字不能出现在开始位置          ...

  8. 使用 dva + antd 快速开发react应用

    使用 dva + antd 快速开发react应用 版本说明: 注意:dva的版本是0.9.2 $ node -v v10.2.1 $ npm -v $ dva -v dva-cli version ...

  9. exception log

    except Exception as e: l = [str(i) for i in [dbid, f_mp3, e]] log_s = '||'.join(l) logging.exception ...

  10. aarch64-linux-gnu交叉编译Qt4.7.3

    到 Qt 官网下载合适的 Qt 版本,地址:http://download.qt-project.org/archive/qt/ 1.环境搭建: 1.安装automake.libtool 和主机上的 ...