高通平台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. Android多线程研究(3)——线程同步和相互排斥及死锁

    为什么会有线程同步的概念呢?为什么要同步?什么是线程同步?先看一段代码: package com.maso.test; public class ThreadTest2 implements Runn ...

  2. 牛腩新闻系统(一)——UML、数据库设计

    牛腩新闻系统(一)--UML.数据库设计 一.初识牛腩系统 牛腩(Brisket)即牛腹部及靠近牛肋处的松软肌肉,是指带有筋.肉.油花的肉 块.这是一种统称. 若依部位来分,牛身上很多地方的肉都能够叫 ...

  3. [Java Sprint] Spring XML Configuration : Constructor Injection Demo

    Previous we see how to do Setter injection: https://www.cnblogs.com/Answer1215/p/9472117.html Now le ...

  4. iOS 代码安全加固--反编译和代码混淆

    一.class-dump反编译 1.将打包的ipa反编译下,.ipa改成.zip,并解压 6.右击—显示包内容,找到如下有个白框黑底的  7.将其复制到桌面xx文件夹中,在终端中输入相关命令 cd 进 ...

  5. 10.11无法打开Xcode6.4的解决方法

    前言 mac升级到10.11版本号并安装Xcode7.0Beta之后,Dock中的Xcode6.3图标上出现一个禁止符号,打开提示到App store更新最新版本号,更新到6.4之后问题依然,还是提示 ...

  6. DNNClassifier 深度神经网络 分类器

    An Example of a DNNClassifier for the Iris dataset. models/premade_estimator.py at master · tensorfl ...

  7. 用nginx搭建基于rtmp或者http的flv、mp4流媒体服务器

    http://itindex.NET/detail/48702-nginx-rtmp-http 一.流媒体播放方式 1.  HTTP方式 这种方式要下载FLV视频文件到本地播放,一旦FLV视频文件下载 ...

  8. 编译Ruby2.0 问题解决

    compiling readline.creadline.c: In function ‘Init_readline’:readline.c:1886:26: error: ‘Function’ un ...

  9. composer查看安装情况

    composer install --no-progress --profile -vvv

  10. python自动化测试学习笔记-9python的日志模块

    参考 logging模块,用来处理python中的日志: import logging logging.debug('debug')logging.info('info')logging.warnin ...